OptionalsRolesIteratorTest.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace App\Tests\Service\ServiceIterator;
  3. use App\Entity\Access\Access;
  4. use App\Service\Access\OptionalsRolesInterface;
  5. use App\Service\ServiceIterator\OptionalsRolesIterator;
  6. use PHPUnit\Framework\TestCase;
  7. class OptionalsRolesIteratorTest extends TestCase
  8. {
  9. /**
  10. * @see OptionalsRolesIterator::getOptionalsRoles()
  11. */
  12. public function testGetOptionalsRoles(): void
  13. {
  14. $access = $this->getMockBuilder(Access::class)->getMock();
  15. $mocker = $this->getMockBuilder(OptionalsRolesInterface::class);
  16. $role1 = $mocker->getMock();
  17. $role1->method('support')->willReturn(false);
  18. $role2 = $mocker->getMock();
  19. $role2->method('support')->with($access)->willReturn(true);
  20. $role2->expects($this->once())->method('getRole')->willReturn('ROLE2');
  21. $role3 = $mocker->getMock();
  22. $role3->method('support')->willReturn(false);
  23. $role4 = $mocker->getMock();
  24. $role4->method('support')->with($access)->willReturn(true);
  25. $role4->expects($this->once())->method('getRole')->willReturn('ROLE4');
  26. $roles = [$role1, $role2, $role3, $role4];
  27. $iterator = $this->getMockBuilder(OptionalsRolesIterator::class)
  28. ->setConstructorArgs([$roles])
  29. ->setMethodsExcept(['getOptionalsRoles'])
  30. ->getMock();
  31. $actualRoles = $iterator->getOptionalsRoles($access);
  32. $this->assertEquals(['ROLE2', 'ROLE4'], $actualRoles);
  33. }
  34. /**
  35. * @see OptionalsRolesIterator::getOptionalsRoles()
  36. */
  37. public function testGetOptionalsRolesNotFound(): void
  38. {
  39. $access = $this->getMockBuilder(Access::class)->getMock();
  40. $mocker = $this->getMockBuilder(OptionalsRolesInterface::class);
  41. $role1 = $mocker->getMock();
  42. $role1->method('support')->willReturn(false);
  43. $role2 = $mocker->getMock();
  44. $role2->method('support')->willReturn(false);
  45. $roles = [$role1, $role2];
  46. $iterator = $this->getMockBuilder(OptionalsRolesIterator::class)
  47. ->setConstructorArgs([$roles])
  48. ->setMethodsExcept(['getOptionalsRoles'])
  49. ->getMock();
  50. $actualRoles = $iterator->getOptionalsRoles($access);
  51. $this->assertEquals([], $actualRoles);
  52. }
  53. }