TreeTest.php 3.0 KB

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