TreeTest.php 2.9 KB

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