OnOrganizationChangeTest.php 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Test\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. private Organization $organization;
  13. private OnOrganizationChange $onOrganizationChange;
  14. public function setUp():void
  15. {
  16. $this->organization = new Organization();
  17. $this->onOrganizationChange = new OnOrganizationChange();
  18. }
  19. public function testBeforeChangeNoChange(): void
  20. {
  21. $onOrganizationChange = $this
  22. ->getMockBuilder(OnOrganizationChange::class)
  23. ->onlyMethods(['onLegalStatusChange'])
  24. ->disableOriginalConstructor()
  25. ->getMock();
  26. $onOrganizationChange
  27. ->expects(self::never())
  28. ->method('onLegalStatusChange')
  29. ->willReturnSelf();
  30. $previousOrganization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  31. $previousOrganization->expects(self::once())->method('getLegalStatus')->willReturn('ASSOCIATION_LAW_1901');
  32. $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
  33. $context->method('previousData')->willReturn($previousOrganization);
  34. $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  35. $organization->expects(self::once())->method('getLegalStatus')->willReturn('ASSOCIATION_LAW_1901');
  36. $onOrganizationChange->beforeChange($organization, $context);
  37. }
  38. public function testBeforeChangeLegalStatusChanged(): void
  39. {
  40. $onOrganizationChange = $this
  41. ->getMockBuilder(OnOrganizationChange::class)
  42. ->onlyMethods(['onLegalStatusChange'])
  43. ->disableOriginalConstructor()
  44. ->getMock();
  45. $onOrganizationChange
  46. ->expects(self::once())
  47. ->method('onLegalStatusChange')
  48. ->willReturnSelf();
  49. $previousOrganization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  50. $previousOrganization->expects(self::once())->method('getLegalStatus')->willReturn('ASSOCIATION_LAW_1901');
  51. $context = $this->getMockBuilder(OnChangeContext::class)->disableOriginalConstructor()->getMock();
  52. $context->method('previousData')->willReturn($previousOrganization);
  53. $organization = $this->getMockBuilder(Organization::class)->disableOriginalConstructor()->getMock();
  54. $organization->expects(self::once())->method('getLegalStatus')->willReturn('LOCAL_AUTHORITY');
  55. $onOrganizationChange->beforeChange($organization, $context);
  56. }
  57. /**
  58. * @see OnOrganizationChange::onLegalStatusChange()
  59. */
  60. public function testOnLegalStatusChange(){
  61. $this->organization->setLegalStatus(LegalEnum::COMMERCIAL_SOCIETY()->getValue());
  62. $parameters = new Parameters();
  63. $parameters->setShowAdherentList(true);
  64. $billingSettings = new BillingSetting();
  65. $billingSettings->setApplyVat(false);
  66. $this->organization->setParameters($parameters);
  67. $this->organization->setBillingSetting($billingSettings);
  68. $this->onOrganizationChange->onLegalStatusChange($this->organization);
  69. $this->assertFalse($this->organization->getParameters()->getShowAdherentList());
  70. $this->assertTrue($this->organization->getBillingSetting()->getApplyVat());
  71. }
  72. }