createUser(['ROLE_ADMIN']); $mobile = $this->freshMobile(); $this->authJson('POST', '/api/v1/admin/doctors', $admin, [ 'mobile' => $mobile, 'name' => $name, ]); $this->assertSame(201, $this->responseCode()); return $this->em->getRepository(Doctor::class) ->createQueryBuilder('d') ->join('d.user', 'u')->where('u.mobileNumber = :m')->setParameter('m', $mobile) ->getQuery()->getOneOrNullResult(); } public function testAdminCreateStripsTheTitle(): void { $doctor = $this->createDoctorAs('دکتر حامد حسینی'); $this->assertNotNull($doctor); $this->assertSame('حامد حسینی', $doctor->getName()); } public function testPlainNameIsLeftAlone(): void { $doctor = $this->createDoctorAs('حامد حسینی'); $this->assertNotNull($doctor); $this->assertSame('حامد حسینی', $doctor->getName()); } #[\PHPUnit\Framework\Attributes\DataProvider('titleVariants')] public function testStripDoctorTitle(string $input, string $expected): void { $this->assertSame($expected, PersianText::stripDoctorTitle($input)); } public static function titleVariants(): array { return [ 'plain' => ['حامد حسینی', 'حامد حسینی'], 'single title' => ['دکتر حامد حسینی', 'حامد حسینی'], 'repeated title' => ['دکتر دکتر حامد حسینی', 'حامد حسینی'], 'extra whitespace' => [' دکتر حامد حسینی ', 'حامد حسینی'], 'title inside' => ['حامد دکتر حسینی', 'حامد دکتر حسینی'], ]; } }