CriteriaNotationOptionalRoleTest.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace App\Tests\Unit\Service\Access\OptionalsRoles;
  3. use App\Entity\Access\Access;
  4. use App\Entity\Organization\Organization;
  5. use App\Entity\Organization\Parameters;
  6. use App\Enum\Access\FunctionEnum;
  7. use App\Repository\Access\AccessRepository;
  8. use App\Service\Access\OptionalsRoles\CriteriaNotationOptionalRole;
  9. use DateTime;
  10. use PHPUnit\Framework\TestCase;
  11. class CriteriaNotationOptionalRoleTest extends TestCase
  12. {
  13. private AccessRepository $accessRepository;
  14. public function setUp(): void {
  15. $this->accessRepository = $this->getMockBuilder(AccessRepository::class)->disableOriginalConstructor()->getMock();
  16. }
  17. /**
  18. * @see CriteriaNotationOptionalRole::support()
  19. */
  20. public function testSupportIsSupported(): void
  21. {
  22. $criteriaNotationOptionalRole = $this
  23. ->getMockBuilder(CriteriaNotationOptionalRole::class)
  24. ->setConstructorArgs([$this->accessRepository])
  25. ->setMethodsExcept(['support'])
  26. ->getMock();
  27. $parameters = $this->getMockBuilder(Parameters::class)->getMock();
  28. $parameters->method('getEditCriteriaNotationByAdminOnly')->willReturn(false);
  29. $organization = $this->getMockBuilder(Organization::class)->getMock();
  30. $organization->method('getParameters')->willReturn($parameters);
  31. $access = $this->getMockBuilder(Access::class)->getMock();
  32. $access->method('getOrganization')->willReturn($organization);
  33. $this->accessRepository
  34. ->method('hasGotFunctionAtThisDate')
  35. ->with($access, FunctionEnum::TEACHER(), self::isInstanceOf(DateTime::class))
  36. ->willReturn(true);
  37. $this->assertTrue(
  38. $criteriaNotationOptionalRole->support($access)
  39. );
  40. }
  41. /**
  42. * @see CriteriaNotationOptionalRole::support()
  43. */
  44. public function testSupportIsNotActiveTeacher(): void
  45. {
  46. $criteriaNotationOptionalRole = $this
  47. ->getMockBuilder(CriteriaNotationOptionalRole::class)
  48. ->setConstructorArgs([$this->accessRepository])
  49. ->setMethodsExcept(['support'])
  50. ->getMock();
  51. $parameters = $this->getMockBuilder(Parameters::class)->getMock();
  52. $parameters->method('getEditCriteriaNotationByAdminOnly')->willReturn(false);
  53. $organization = $this->getMockBuilder(Organization::class)->getMock();
  54. $organization->method('getParameters')->willReturn($parameters);
  55. $access = $this->getMockBuilder(Access::class)->getMock();
  56. $access->method('getOrganization')->willReturn($organization);
  57. $this->accessRepository
  58. ->method('hasGotFunctionAtThisDate')
  59. ->with($access, FunctionEnum::TEACHER(), self::isInstanceOf(DateTime::class))
  60. ->willReturn(false);
  61. $this->assertFalse(
  62. $criteriaNotationOptionalRole->support($access)
  63. );
  64. }
  65. /**
  66. * @see CriteriaNotationOptionalRole::support()
  67. */
  68. public function testSupportIsActiveTeacherButAdminOnly(): void
  69. {
  70. $criteriaNotationOptionalRole = $this
  71. ->getMockBuilder(CriteriaNotationOptionalRole::class)
  72. ->setConstructorArgs([$this->accessRepository])
  73. ->setMethodsExcept(['support'])
  74. ->getMock();
  75. $parameters = $this->getMockBuilder(Parameters::class)->getMock();
  76. $parameters->method('getEditCriteriaNotationByAdminOnly')->willReturn(true);
  77. $organization = $this->getMockBuilder(Organization::class)->getMock();
  78. $organization->method('getParameters')->willReturn($parameters);
  79. $access = $this->getMockBuilder(Access::class)->getMock();
  80. $access->method('getOrganization')->willReturn($organization);
  81. $this->accessRepository
  82. ->method('hasGotFunctionAtThisDate')
  83. ->with($access, FunctionEnum::TEACHER(), self::isInstanceOf(DateTime::class))
  84. ->willReturn(true);
  85. $this->assertFalse(
  86. $criteriaNotationOptionalRole->support($access)
  87. );
  88. }
  89. /**
  90. * @see CriteriaNotationOptionalRole::getRole()
  91. */
  92. public function testGetRole(): void
  93. {
  94. $criteriaNotationOptionalRole = $this
  95. ->getMockBuilder(CriteriaNotationOptionalRole::class)
  96. ->setConstructorArgs([$this->accessRepository])
  97. ->setMethodsExcept(['getRole'])
  98. ->getMock();
  99. $this->assertEquals("ROLE_CRITERIANOTATION", $criteriaNotationOptionalRole->getRole());
  100. }
  101. }