AdminAccessUtilsTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace App\Tests\Unit\Service\Access;
  3. use App\ApiResources\Access\AdminAccess;
  4. use App\Entity\Access\Access;
  5. use App\Entity\Core\ContactPoint;
  6. use App\Entity\Organization\Organization;
  7. use App\Entity\Person\Person;
  8. use App\Service\Access\AdminAccessUtils;
  9. use App\Service\Access\Utils as AccessUtils;
  10. use App\Service\Core\ContactPointUtils;
  11. use PHPUnit\Framework\MockObject\MockObject;
  12. use PHPUnit\Framework\TestCase;
  13. class AdminAccessUtilsTest extends TestCase
  14. {
  15. private MockObject | Organization $organization;
  16. private MockObject | Access $access;
  17. private MockObject | ContactPointUtils $contactPointUtils;
  18. private MockObject | AccessUtils $accessUtils;
  19. public function setUp():void
  20. {
  21. $this->organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  22. $this->access = $this->getMockBuilder(Access::class)->disableOriginalConstructor()->getMock();
  23. $this->accessUtils = $this->getMockBuilder(AccessUtils::class)->disableOriginalConstructor()->getMock();
  24. $this->contactPointUtils = $this->getMockBuilder(ContactPointUtils::class)->disableOriginalConstructor()->getMock();
  25. }
  26. /**
  27. * @see AdminAccessUtils::getAdminAccess()
  28. */
  29. public function testGetAdminAccessWithoutAdministrator(): void
  30. {
  31. $adminAccessUtils = $this->getMockBuilder(AdminAccessUtils::class)
  32. ->setConstructorArgs([$this->accessUtils, $this->contactPointUtils])
  33. ->setMethodsExcept(['getAdminAccess'])
  34. ->getMock();
  35. $this->accessUtils
  36. ->method('findAdminFor')
  37. ->with($this->organization)
  38. ->willReturn(null);
  39. $returned = $adminAccessUtils->getAdminAccess($this->organization);
  40. $this->assertNull($returned);
  41. }
  42. /**
  43. * @see AdminAccessUtils::getAdminAccess()
  44. */
  45. public function testGetAdminAccessWithoutContactPoint(): void
  46. {
  47. $adminAccessUtils = $this->getMockBuilder(AdminAccessUtils::class)
  48. ->setConstructorArgs([$this->accessUtils, $this->contactPointUtils])
  49. ->setMethodsExcept(['getAdminAccess'])
  50. ->getMock();
  51. $this->accessUtils
  52. ->method('findAdminFor')
  53. ->with($this->organization)
  54. ->willReturn($this->access);
  55. $this->contactPointUtils
  56. ->method('getPersonContactPointPrincipal')
  57. ->with($this->access)
  58. ->willReturn(null);
  59. $returned = $adminAccessUtils->getAdminAccess($this->organization);
  60. $this->assertNull($returned);
  61. }
  62. /**
  63. * @see AdminAccessUtils::getAdminAccess()
  64. */
  65. public function testGetAdminAccess(): void
  66. {
  67. $adminAccessUtils = $this->getMockBuilder(AdminAccessUtils::class)
  68. ->setConstructorArgs([$this->accessUtils, $this->contactPointUtils])
  69. ->setMethodsExcept(['getAdminAccess'])
  70. ->getMock();
  71. $person = $this->getMockBuilder(Person::class)->disableOriginalConstructor()->getMock();
  72. $person->method('getUsername')->willReturn('foo');
  73. $this->access->method('getId')->willReturn(1);
  74. $this->access->method('getPerson')->willReturn($person);
  75. $contactPoint = $this->getMockBuilder(ContactPoint::class)->disableOriginalConstructor()->getMock();
  76. $contactPoint->method('getEmail')->willReturn('foo@bar.net');
  77. $this->accessUtils
  78. ->method('findAdminFor')
  79. ->with($this->organization)
  80. ->willReturn($this->access);
  81. $this->contactPointUtils
  82. ->method('getPersonContactPointPrincipal')
  83. ->with($this->access)
  84. ->willReturn($contactPoint);
  85. $returned = $adminAccessUtils->getAdminAccess($this->organization);
  86. $this->assertInstanceOf(AdminAccess::class, $returned);
  87. }
  88. }