OnOrganizationChangeTest.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace App\Tests\Unit\Service\OnChange\Organization;
  3. use App\Entity\Billing\BillingSetting;
  4. use App\Entity\Organization\Organization;
  5. use App\Entity\Organization\Parameters;
  6. use App\Enum\Organization\LegalEnum;
  7. use App\Service\OnChange\OnChangeContext;
  8. use App\Service\OnChange\Organization\OnOrganizationChange;
  9. use PHPUnit\Framework\TestCase;
  10. class OnOrganizationChangeTest extends TestCase
  11. {
  12. /**
  13. * @see OnOrganizationChange::beforeChange()
  14. */
  15. public function testBeforeChangeNoChange(): void
  16. {
  17. $onOrganizationChange = $this
  18. ->getMockBuilder(OnOrganizationChange::class)
  19. ->setMethodsExcept(['beforeChange'])
  20. ->disableOriginalConstructor()
  21. ->getMock();
  22. $onOrganizationChange
  23. ->expects(self::never())
  24. ->method('onLegalStatusChange')
  25. ->willReturnSelf();
  26. $previousOrganization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  27. $previousOrganization->expects(self::once())->method('getLegalStatus')->willReturn('ASSOCIATION_LAW_1901');
  28. $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
  29. $context->method('previousData')->willReturn($previousOrganization);
  30. $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  31. $organization->expects(self::once())->method('getLegalStatus')->willReturn('ASSOCIATION_LAW_1901');
  32. $onOrganizationChange->beforeChange($organization, $context);
  33. }
  34. /**
  35. * @see OnOrganizationChange::beforeChange()
  36. */
  37. public function testBeforeChangeLegalStatusChanged(): void
  38. {
  39. $onOrganizationChange = $this
  40. ->getMockBuilder(OnOrganizationChange::class)
  41. ->setMethodsExcept(['beforeChange'])
  42. ->disableOriginalConstructor()
  43. ->getMock();
  44. $onOrganizationChange
  45. ->expects(self::once())
  46. ->method('onLegalStatusChange')
  47. ->willReturnSelf();
  48. $previousOrganization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  49. $previousOrganization->expects(self::once())->method('getLegalStatus')->willReturn('ASSOCIATION_LAW_1901');
  50. $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
  51. $context->method('previousData')->willReturn($previousOrganization);
  52. $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  53. $organization->expects(self::once())->method('getLegalStatus')->willReturn('LOCAL_AUTHORITY');
  54. $onOrganizationChange->beforeChange($organization, $context);
  55. }
  56. /**
  57. * @see OnOrganizationChange::onLegalStatusChange()
  58. */
  59. public function testOnLegalStatusChangeToAsso(): void
  60. {
  61. $onOrganizationChange = $this
  62. ->getMockBuilder(OnOrganizationChange::class)
  63. ->setMethodsExcept(['onLegalStatusChange'])
  64. ->disableOriginalConstructor()
  65. ->getMock();
  66. $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  67. $organization->method('getLegalStatus')->willReturn(LegalEnum::ASSOCIATION_LAW_1901()->getValue());
  68. $parameters = $this->getMockBuilder(Parameters::class)->disableOriginalConstructor()->getMock();
  69. $organization->method('getParameters')->willReturn($parameters);
  70. $billingSettings = $this->getMockBuilder(BillingSetting::class)->disableOriginalConstructor()->getMock();
  71. $organization->method('getBillingSetting')->willReturn($billingSettings);
  72. $parameters->expects(self::never())->method('setShowAdherentList');
  73. $billingSettings->expects(self::never())->method('setApplyVat');
  74. $onOrganizationChange->onLegalStatusChange($organization);
  75. }
  76. /**
  77. * @see OnOrganizationChange::onLegalStatusChange()
  78. */
  79. public function testOnLegalStatusChangeToSociety(): void
  80. {
  81. $onOrganizationChange = $this
  82. ->getMockBuilder(OnOrganizationChange::class)
  83. ->setMethodsExcept(['onLegalStatusChange'])
  84. ->disableOriginalConstructor()
  85. ->getMock();
  86. $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  87. $organization->method('getLegalStatus')->willReturn(LegalEnum::COMMERCIAL_SOCIETY()->getValue());
  88. $parameters = $this->getMockBuilder(Parameters::class)->disableOriginalConstructor()->getMock();
  89. $organization->method('getParameters')->willReturn($parameters);
  90. $billingSettings = $this->getMockBuilder(BillingSetting::class)->disableOriginalConstructor()->getMock();
  91. $organization->method('getBillingSetting')->willReturn($billingSettings);
  92. $parameters->expects(self::once())->method('setShowAdherentList')->with(false);
  93. $billingSettings->expects(self::once())->method('setApplyVat')->with(true);
  94. $onOrganizationChange->onLegalStatusChange($organization);
  95. }
  96. }