getMockBuilder(TestableOrganizationUtils::class)->setMethodsExcept(['isStructure'])->getMock(); $settings = $this->getMockBuilder(Settings::class)->getMock(); $organization = $this->getMockBuilder(Organization::class)->getMock(); $organization->method('getSettings')->willReturn($settings); // Each cal to 'isStructure' provoke 2 calls on getProduct $settings->method('getProduct')->willReturnOnConsecutiveCalls( SettingsProductEnum::ARTIST()->getValue(), SettingsProductEnum::ARTIST()->getValue(), SettingsProductEnum::ARTIST_PREMIUM()->getValue(), SettingsProductEnum::ARTIST_PREMIUM()->getValue(), SettingsProductEnum::SCHOOL()->getValue(), SettingsProductEnum::SCHOOL()->getValue(), SettingsProductEnum::SCHOOL_PREMIUM()->getValue(), SettingsProductEnum::SCHOOL_PREMIUM()->getValue(), SettingsProductEnum::MANAGER()->getValue(), SettingsProductEnum::MANAGER()->getValue(), SettingsProductEnum::MANAGER_PREMIUM()->getValue(), SettingsProductEnum::MANAGER_PREMIUM()->getValue(), ); $this->assertTrue($organizationUtils->isStructure($organization)); $this->assertTrue($organizationUtils->isStructure($organization)); $this->assertTrue($organizationUtils->isStructure($organization)); $this->assertTrue($organizationUtils->isStructure($organization)); $this->assertFalse($organizationUtils->isStructure($organization)); $this->assertFalse($organizationUtils->isStructure($organization)); } /** * @see OrganizationUtils::isStructure() */ public function testIsManager(): void { $organizationUtils = $this->getMockBuilder(TestableOrganizationUtils::class)->setMethodsExcept(['isManager'])->getMock(); $settings = $this->getMockBuilder(Settings::class)->getMock(); $organization = $this->getMockBuilder(Organization::class)->getMock(); $organization->method('getSettings')->willReturn($settings); $settings->method('getProduct')->willReturnOnConsecutiveCalls( SettingsProductEnum::ARTIST()->getValue(), SettingsProductEnum::ARTIST_PREMIUM()->getValue(), SettingsProductEnum::SCHOOL()->getValue(), SettingsProductEnum::SCHOOL_PREMIUM()->getValue(), SettingsProductEnum::MANAGER()->getValue(), SettingsProductEnum::MANAGER_PREMIUM()->getValue(), ); $this->assertFalse($organizationUtils->isManager($organization)); $this->assertFalse($organizationUtils->isManager($organization)); $this->assertFalse($organizationUtils->isManager($organization)); $this->assertFalse($organizationUtils->isManager($organization)); $this->assertTrue($organizationUtils->isManager($organization)); $this->assertFalse($organizationUtils->isManager($organization)); } /** * @see OrganizationUtils::is2iosOrganization() */ public function testIsOrganizationIs2ios(): void { $organizationUtils = $this->getMockBuilder(TestableOrganizationUtils::class)->setMethodsExcept(['is2iosOrganization'])->getMock(); $organization = $this->getMockBuilder(Organization::class)->getMock(); $organizationUtils->expects(self::once())->method('isOrganizationIdEqualTo')->with($organization, OrganizationIdsEnum::_2IOS()); $organizationUtils->is2iosOrganization($organization); } /** * @see OrganizationUtils::isOrganizationCMF() */ public function testIsOrganizationIsCMF(): void { $organizationUtils = $this->getMockBuilder(TestableOrganizationUtils::class)->setMethodsExcept(['isOrganizationCMF'])->getMock(); $organization = $this->getMockBuilder(Organization::class)->getMock(); $organizationUtils->expects(self::once())->method('isOrganizationIdEqualTo')->with($organization, OrganizationIdsEnum::CMF()); $organizationUtils->isOrganizationCMF($organization); } /** * @see OrganizationUtils::is2iosOrganization() */ public function testIsOrganizationIdEqualTo(): void { $organizationUtils = $this->getMockBuilder(TestableOrganizationUtils::class)->setMethodsExcept(['isOrganizationIdEqualTo'])->getMock(); $organization = $this->getMockBuilder(Organization::class)->getMock(); $organization->method('getId')->willReturnOnConsecutiveCalls(123, OrganizationIdsEnum::_2IOS()->getValue()); $this->assertFalse($organizationUtils->isOrganizationIdEqualTo($organization, OrganizationIdsEnum::_2IOS())); $this->assertTrue($organizationUtils->isOrganizationIdEqualTo($organization, OrganizationIdsEnum::_2IOS())); } /** * @see OrganizationUtils::getOrganizationCurrentActivityYear() */ public function testGetOrganizationCurrentActivityYear(): void { $organizationUtils = $this->getMockBuilder(TestableOrganizationUtils::class)->setMethodsExcept(['getOrganizationCurrentActivityYear'])->getMock(); $parameters = $this->getMockBuilder(Parameters::class)->getMock(); $parameters->method('getMusicalDate')->willReturn(new \DateTime('2020-09-01')); $organization = $this->getMockBuilder(Organization::class)->getMock(); $organization->method('getParameters')->willReturn($parameters); $today = new \DateTime('now'); $expected = (int)$today->format('Y'); if ((int)$today->format('m') < 9) { --$expected; } $this->assertEquals( $expected, $organizationUtils->getOrganizationCurrentActivityYear($organization) ); } /** * @see OrganizationUtils::getActivityPeriodsSwitchYear() */ public function testGetActivityPeriodsSwitchYear(): void { $organizationUtils = $this->getMockBuilder(TestableOrganizationUtils::class)->setMethodsExcept(['getActivityPeriodsSwitchYear'])->getMock(); $parameters = $this->getMockBuilder(Parameters::class)->getMock(); $parameters->method('getMusicalDate')->willReturn(new \DateTime('2020-09-05')); $organization = $this->getMockBuilder(Organization::class)->getMock(); $organization->method('getParameters')->willReturn($parameters); $periods = $organizationUtils->getActivityPeriodsSwitchYear($organization, 2022); $this->assertEquals('2022-09-05', $periods['dateStart']); $this->assertEquals('2023-09-04', $periods['dateEnd']); } /** * @see OrganizationUtils::getActivityYearSwitchDate() */ public function testgetActivityYearSwitchDate(): void { $organizationUtils = $this->getMockBuilder(TestableOrganizationUtils::class)->setMethodsExcept(['getActivityYearSwitchDate'])->getMock(); $parameters = $this->getMockBuilder(Parameters::class)->getMock(); $parameters->method('getMusicalDate')->willReturn(new \DateTime('2020-09-05')); $organization = $this->getMockBuilder(Organization::class)->getMock(); $organization->method('getParameters')->willReturn($parameters); $this->assertEquals(2022, $organizationUtils->getActivityYearSwitchDate($organization, new \DateTime('2022-09-10'))); $this->assertEquals(2021, $organizationUtils->getActivityYearSwitchDate($organization, new \DateTime('2022-09-02'))); } }