CriteriaNotationOptionalRoleTest.php 4.1 KB

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