TreeTest.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace App\Tests\Service\Network;
  3. use App\Entity\Organization\Organization;
  4. use App\Repository\Network\NetworkOrganizationRepository;
  5. use PHPUnit\Framework\TestCase;
  6. use App\Service\Network\Tree;
  7. class TreeTest extends TestCase
  8. {
  9. private Tree $tree;
  10. private NetworkOrganizationRepository $networkOrganizationRepositoryMock;
  11. public function setUp():void
  12. {
  13. $this->networkOrganizationRepositoryMock =
  14. $this
  15. ->getMockBuilder(NetworkOrganizationRepository::class)
  16. ->disableOriginalConstructor()
  17. ->getMock();
  18. $this->tree = new Tree($this->networkOrganizationRepositoryMock);
  19. }
  20. /**
  21. * @see Tree::findAllParentsAndSortByType()
  22. */
  23. public function testFindAllParentsAndSortByType():void
  24. {
  25. $organizationMock = $this->getMockBuilder(Organization::class)->getMock();
  26. $organizationMock
  27. ->method('getId')
  28. ->willReturn(1);
  29. $this->networkOrganizationRepositoryMock
  30. ->expects($this->once())
  31. ->method('findAllParents')
  32. ->with($organizationMock)
  33. ->willReturn([$organizationMock]);
  34. $treeMock = $this
  35. ->getMockBuilder(Tree::class)
  36. ->setConstructorArgs([$this->networkOrganizationRepositoryMock])
  37. ->onlyMethods(['sortByType'])
  38. ->getMock();
  39. $treeMock
  40. ->expects($this->once())
  41. ->method('sortByType');
  42. $treeMock->findAllParentsAndSortByType($organizationMock);
  43. }
  44. /**
  45. * @see Tree::sortByType()
  46. */
  47. public function testSortByType():void
  48. {
  49. $organizationMock1 = $this->getMockBuilder(Organization::class)->getMock();
  50. $organizationMock1->method('getId')->willReturn(2);
  51. $organizationMock1->method('getPrincipalType')->willReturn('REGIONAL_FEDERATION');
  52. $organizationMock2 = $this->getMockBuilder(Organization::class)->getMock();
  53. $organizationMock2->method('getId')->willReturn(3);
  54. $organizationMock2->method('getPrincipalType')->willReturn('NATIONAL_FEDERATION');
  55. $organizationMock3 = $this->getMockBuilder(Organization::class)->getMock();
  56. $organizationMock3->method('getId')->willReturn(4);
  57. $organizationMock3->method('getPrincipalType')->willReturn('DEPARTEMENTAL_FEDERATION');
  58. $organizations = [
  59. $organizationMock2,
  60. $organizationMock1,
  61. $organizationMock3
  62. ];
  63. $result = $this->tree->sortByType($organizations);
  64. $this->assertIsArray($result);
  65. $this->assertContainsOnlyInstancesOf(Organization::class, $result);
  66. $this->assertEquals(4, $result[0]->getId());
  67. $this->assertEquals(2, $result[1]->getId());
  68. $this->assertEquals(3, $result[2]->getId());
  69. }
  70. }