AdminAccessUtilsTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace App\Test\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(){
  46. $adminAccessUtils = $this->getMockBuilder(AdminAccessUtils::class)
  47. ->setConstructorArgs([$this->accessUtils, $this->contactPointUtils])
  48. ->setMethodsExcept(['getAdminAccess'])
  49. ->getMock();
  50. $this->accessUtils
  51. ->method('findAdminFor')
  52. ->with($this->organization)
  53. ->willReturn($this->access);
  54. $this->contactPointUtils
  55. ->method('getPersonContactPointPrincipal')
  56. ->with($this->access)
  57. ->willReturn(null);
  58. $returned = $adminAccessUtils->getAdminAccess($this->organization);
  59. $this->assertNull($returned);
  60. }
  61. /**
  62. * @see AdminAccessUtils::getAdminAccess()
  63. */
  64. public function testGetAdminAccess(){
  65. $adminAccessUtils = $this->getMockBuilder(AdminAccessUtils::class)
  66. ->setConstructorArgs([$this->accessUtils, $this->contactPointUtils])
  67. ->setMethodsExcept(['getAdminAccess'])
  68. ->getMock();
  69. $person = $this->getMockBuilder(Person::class)->disableOriginalConstructor()->getMock();
  70. $person->method('getUsername')->willReturn('foo');
  71. $this->access->method('getId')->willReturn(1);
  72. $this->access->method('getPerson')->willReturn($person);
  73. $contactPoint = $this->getMockBuilder(ContactPoint::class)->disableOriginalConstructor()->getMock();
  74. $contactPoint->method('getEmail')->willReturn('foo@bar.net');
  75. $this->accessUtils
  76. ->method('findAdminFor')
  77. ->with($this->organization)
  78. ->willReturn($this->access);
  79. $this->contactPointUtils
  80. ->method('getPersonContactPointPrincipal')
  81. ->with($this->access)
  82. ->willReturn($contactPoint);
  83. $returned = $adminAccessUtils->getAdminAccess($this->organization);
  84. $this->assertInstanceOf(AdminAccess::class, $returned);
  85. }
  86. }