EntityUtilsTest.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Tests\Unit\Service\Utils;
  3. use App\Entity\Access\Access;
  4. use App\Entity\Billing\BillingSetting;
  5. use App\Entity\Billing\ResidenceArea;
  6. use App\Entity\Education\EducationTiming;
  7. use App\Entity\Organization\Organization;
  8. use App\Service\Utils\EntityUtils;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use PHPUnit\Framework\MockObject\MockObject;
  11. use PHPUnit\Framework\TestCase;
  12. use Symfony\Component\Mercure\HubInterface;
  13. class TestableEntityUtils extends EntityUtils
  14. {
  15. public function organizationDefaultValue($entity, Access $access): void
  16. {
  17. parent::organizationDefaultValue($entity, $access);
  18. }
  19. public function billingSettingDefaultValueDefaultValue($entity, Access $access): void
  20. {
  21. parent::billingSettingDefaultValueDefaultValue($entity, $access);
  22. }
  23. }
  24. class EntityUtilsTest extends TestCase
  25. {
  26. private EntityManagerInterface $entityManager;
  27. public function setUp(): void {
  28. $this->entityManager = $this->getMockBuilder(EntityManagerInterface::class)->disableOriginalConstructor()->getMock();
  29. }
  30. protected function getEntityUtilsMockFor(string $method): MockObject | TestableEntityUtils
  31. {
  32. return $this->getMockBuilder(TestableEntityUtils::class)
  33. ->setConstructorArgs([$this->entityManager])
  34. ->setMethodsExcept([$method])
  35. ->getMock();
  36. }
  37. /**
  38. * @see EntityUtils::defaultValueSettersByAccess()
  39. */
  40. public function testDefaultValueSettersByAccess(): void
  41. {
  42. $utils = $this->getEntityUtilsMockFor('defaultValueSettersByAccess');
  43. $entity = $this->getMockBuilder(Organization::class)->getMock();
  44. $access = $this->getMockBuilder(Access::class)->getMock();
  45. $utils->expects(self::once())->method('organizationDefaultValue')->with($entity, $access);
  46. $utils->expects(self::once())->method('billingSettingDefaultValueDefaultValue')->with($entity, $access);
  47. $utils->defaultValueSettersByAccess($entity, $access);
  48. }
  49. /**
  50. * @see EntityUtils::organizationDefaultValue()
  51. */
  52. public function testOrganizationDefaultValue(): void
  53. {
  54. $utils = $this->getEntityUtilsMockFor('organizationDefaultValue');
  55. $organization = $this->getMockBuilder(Organization::class)->getMock();
  56. $entity = new EducationTiming(); // Can't test this method with a mocked entity...
  57. $access = $this->getMockBuilder(Access::class)->getMock();
  58. $access->method('getOrganization')->willReturn($organization);
  59. $utils->organizationDefaultValue($entity, $access);
  60. $this->assertEquals($organization, $entity->getOrganization());
  61. }
  62. /**
  63. * @see EntityUtils::billingSettingDefaultValueDefaultValue()
  64. */
  65. public function testBillingSettingDefaultValueDefaultValue(): void
  66. {
  67. $utils = $this->getEntityUtilsMockFor('billingSettingDefaultValueDefaultValue');
  68. $entity = new ResidenceArea(); // Can't test this method with a mocked entity...
  69. $billingSetting = $this->getMockBuilder(BillingSetting::class)->getMock();
  70. $organization = $this->getMockBuilder(Organization::class)->getMock();
  71. $organization->method('getBillingSetting')->willReturn($billingSetting);
  72. $access = $this->getMockBuilder(Access::class)->getMock();
  73. $access->method('getOrganization')->willReturn($organization);
  74. $utils->billingSettingDefaultValueDefaultValue($entity, $access);
  75. $this->assertEquals($billingSetting, $entity->getBillingSetting());
  76. }
  77. }