From ef0af9607bdd9e1efd4a5e759fb0482f7e7a51a1 Mon Sep 17 00:00:00 2001 From: Christian Krzeminski Date: Wed, 29 May 2019 09:01:14 +0200 Subject: [PATCH 1/9] [FEATURE] Update composer dependencies for TYPO3V8 --- composer.json | 9 +++++---- ext_emconf.php | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index bcac415..3861dd3 100644 --- a/composer.json +++ b/composer.json @@ -18,15 +18,16 @@ ], "require": { "php": "^7.0", - "typo3/cms-core": ">=7.6.0", + "ext-json": "*", + "typo3/cms-core": ">=7.6.0, <=8.7.99", "typo3/cms-extbase": "*", "typo3/cms-scheduler": "*" }, "require-dev": { "typo3/cms": "^7.6", - "nimut/testing-framework": "2.0.*", - "phpunit/phpcov": "3.1.*", - "squizlabs/php_codesniffer": "3.3.*", + "nimut/testing-framework": "4.0.*", + "phpunit/phpcov": "4.0.*", + "squizlabs/php_codesniffer": "3.4.*", "sebastian/phpcpd": "3.0.*", "phpmd/phpmd": "2.6.*" }, diff --git a/ext_emconf.php b/ext_emconf.php index 94262aa..4285f18 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -11,10 +11,10 @@ 'uploadfolder' => 0, 'createDirs' => '', 'clearCacheOnLoad' => 0, - 'version' => '5.0.0', + 'version' => '5.0.1', 'constraints' => [ 'depends' => [ - 'typo3' => '7.6.0-7.6.99' + 'typo3' => '7.6.0-8.7.99' ], 'conflicts' => [], 'suggests' => [], From 04e55d907c9121d9f1067a0741e3c39f06bc7dbb Mon Sep 17 00:00:00 2001 From: Christian Krzeminski Date: Wed, 29 May 2019 09:19:20 +0200 Subject: [PATCH 2/9] [FEATURE][FIX] Unit test fix --- Tests/Unit/Domain/Model/MappingTest.php | 4 +- Tests/Unit/Service/EidProcessorTest.php | 12 +++--- Tests/Unit/ServiceTest.php | 14 +++---- Tests/Unit/System/Typo3/ConfigurationTest.php | 8 ++-- .../System/Typo3/Task/FlagEntriesTest.php | 40 +++++++++---------- 5 files changed, 37 insertions(+), 41 deletions(-) diff --git a/Tests/Unit/Domain/Model/MappingTest.php b/Tests/Unit/Domain/Model/MappingTest.php index 54dc9b2..355e3ab 100644 --- a/Tests/Unit/Domain/Model/MappingTest.php +++ b/Tests/Unit/Domain/Model/MappingTest.php @@ -76,8 +76,8 @@ public function crdate() */ public function featureFlag() { - $featureFlag = $this->getMock('Tx_FeatureFlag_Domain_Model_FeatureFlag', array('getFlag')); - $featureFlag->expects($this->any())->method('getFlag')->will($this->returnValue('my_awesome_feature_flag')); + $featureFlag = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag')->setMethods(['getFlag'])->getMock(); + $featureFlag->method('getFlag')->willReturn('my_awesome_feature_flag'); $this->mapping->setFeatureFlag($featureFlag); $this->assertEquals($this->mapping->getFeatureFlag()->getFlag(), 'my_awesome_feature_flag'); } diff --git a/Tests/Unit/Service/EidProcessorTest.php b/Tests/Unit/Service/EidProcessorTest.php index f8ddfbc..91438c0 100644 --- a/Tests/Unit/Service/EidProcessorTest.php +++ b/Tests/Unit/Service/EidProcessorTest.php @@ -39,9 +39,8 @@ class EidProcessorTest extends UnitTestCase */ private function getServiceMock() { - return $this->getMock( - 'Tx_FeatureFlag_Service', ['updateFeatureFlag'], [], '', false - ); + return $this->getMockBuilder( + 'Tx_FeatureFlag_Service')->setMethods(['updateFeatureFlag'])->disableOriginalConstructor()->getMock(); } /** @@ -49,9 +48,8 @@ private function getServiceMock() */ private function getCacheManagerMock() { - return $this->getMock( - 'Tx_FeatureFlag_System_Typo3_CacheManager', ['clearPageCache'], [], '', false - ); + return $this->getMockBuilder( + 'Tx_FeatureFlag_System_Typo3_CacheManager')->setMethods(['clearPageCache'])->disableOriginalConstructor()->getMock(); } /** @@ -91,7 +89,7 @@ public function shouldThrowExceptionTest() $_GET = ['action' => '', 'feature' => 'testfeature']; $eidProcessor = new EidProcessor($this->getServiceMock(), $this->getCacheManagerMock()); - $this->setExpectedException(\Tx_FeatureFlag_Service_Exception_ActionNotFound::class); + $this->expectException(\Tx_FeatureFlag_Service_Exception_ActionNotFound::class); $eidProcessor->processRequest(); } } \ No newline at end of file diff --git a/Tests/Unit/ServiceTest.php b/Tests/Unit/ServiceTest.php index ad76ea2..17e7629 100644 --- a/Tests/Unit/ServiceTest.php +++ b/Tests/Unit/ServiceTest.php @@ -40,7 +40,7 @@ class Tx_FeatureFlag_Tests_Unit_ServiceTest extends Tx_FeatureFlag_Tests_Unit_Ba */ protected function setService(Tx_FeatureFlag_Domain_Repository_FeatureFlag $mockRepository) { - $mockPersistenceManager = $this->getMock('\TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface', array()); + $mockPersistenceManager = $this->getMockBuilder('\TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface')->getMock(); $this->service = new Tx_FeatureFlag_Service($mockRepository, $mockPersistenceManager, $this->getMockConfiguration()); } @@ -76,7 +76,7 @@ private function getMockRepository($isEnabled) */ private function getMockConfiguration() { - $mockConfiguration = $this->getMock('Tx_FeatureFlag_System_Typo3_Configuration', array('getTables')); + $mockConfiguration = $this->getMockBuilder('Tx_FeatureFlag_System_Typo3_Configuration')->setMethods(['getTables'])->getMock(); $mockConfiguration->expects($this->any())->method('getTables')->willReturn('pages'); return $mockConfiguration; @@ -122,10 +122,10 @@ public function shouldThrowExceptionIfFlagDoesNotExist() { $GLOBALS['TCA']['tx_featureflag_domain_model_featureflag'] = 'mockedTca'; - $mockRepository = $this->getMock('Tx_FeatureFlag_Domain_Repository_FeatureFlag', array('findByFlag')); + $mockRepository = $this->getMockBuilder('Tx_FeatureFlag_Domain_Repository_FeatureFlag')->setMethods(['findByFlag'])->getMock(); $mockRepository->expects($this->once())->method('findByFlag')->will($this->returnValue(null)); $this->setService($mockRepository); - $this->setExpectedException('Tx_FeatureFlag_Service_Exception_FeatureNotFound'); + $this->expectException('Tx_FeatureFlag_Service_Exception_FeatureNotFound'); $this->service->isFeatureEnabled('my_cool_feature'); } @@ -136,10 +136,10 @@ public function shouldThrowExceptionIfTcaIsNotLoaded() { $GLOBALS['TCA'] = null; - $mockRepository = $this->getMock('Tx_FeatureFlag_Domain_Repository_FeatureFlag', array('findByFlag')); + $mockRepository = $this->getMockBuilder('Tx_FeatureFlag_Domain_Repository_FeatureFlag')->setMethods(['findByFlag'])->getMock(); $mockRepository->expects($this->never())->method('findByFlag'); $this->setService($mockRepository); - $this->setExpectedException('RuntimeException'); + $this->expectException('RuntimeException'); $this->service->isFeatureEnabled('my_cool_feature'); } @@ -153,7 +153,7 @@ public function shouldUpdateFeatureFlag() $mockRepository = $this->getMockRepository(false); $mockRepository->expects($this->once())->method('update')->with($mockModel); - $mockPersistenceManager = $this->getMock('\TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface', array()); + $mockPersistenceManager = $this->getMockBuilder('\TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface')->getMock(); $mockPersistenceManager->expects($this->once())->method('persistAll'); $serviceMock = $this->getMockBuilder('Tx_FeatureFlag_Service')->setConstructorArgs(array( diff --git a/Tests/Unit/System/Typo3/ConfigurationTest.php b/Tests/Unit/System/Typo3/ConfigurationTest.php index b4e231f..4b82315 100644 --- a/Tests/Unit/System/Typo3/ConfigurationTest.php +++ b/Tests/Unit/System/Typo3/ConfigurationTest.php @@ -45,11 +45,9 @@ protected function tearDown() public function methodGetShouldThrowException() { $configuration = new Tx_FeatureFlag_System_Typo3_Configuration(); - $this->setExpectedException( - 'InvalidArgumentException', - 'Configuration key "InvalidConfigurationKey" does not exist.', - 1384161387 - ); + $this->expectException('InvalidArgumentException'); + $this->expectExceptionMessage('Configuration key "InvalidConfigurationKey" does not exist.'); + $this->expectExceptionCode(1384161387); $configuration->get('InvalidConfigurationKey'); } diff --git a/Tests/Unit/System/Typo3/Task/FlagEntriesTest.php b/Tests/Unit/System/Typo3/Task/FlagEntriesTest.php index c55767d..2cbde53 100644 --- a/Tests/Unit/System/Typo3/Task/FlagEntriesTest.php +++ b/Tests/Unit/System/Typo3/Task/FlagEntriesTest.php @@ -35,33 +35,33 @@ class Tx_FeatureFlag_Tests_Unit_System_Typo3_Task_FlagEntriesTest extends Tx_Fea */ public function execute() { - $mockRepository = $this->getMock( - 'Tx_FeatureFlag_Domain_Repository_FeatureFlag', - array('updateFeatureFlagStatusForTable') - ); + $mockRepository = $this + ->getMockBuilder('Tx_FeatureFlag_Domain_Repository_FeatureFlag') + ->setMethods(['updateFeatureFlagStatusForTable']) + ->getMock(); $mockRepository->expects($this->exactly(2))->method('updateFeatureFlagStatusForTable')->with( $this->stringStartsWith('table') ); - $mockPersistenceManager = $this->getMock('\TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface', array()); + $mockPersistenceManager = $this + ->getMockBuilder('\TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface')->getMock(); - $mockConfiguration = $this->getMock('Tx_FeatureFlag_System_Typo3_Configuration', array('getTables')); - $mockConfiguration->expects($this->once())->method('getTables')->will( - $this->returnValue( - array( - 'table_one', - 'table_two' - ) - ) + $mockConfiguration = $this + ->getMockBuilder('Tx_FeatureFlag_System_Typo3_Configuration') + ->setMethods(['getTables']) + ->getMock(); + $mockConfiguration->expects($this->once())->method('getTables')->willReturn( + [ + 'table_one', + 'table_two' + ] ); - $flagEntries = $this->getMock( - 'Tx_FeatureFlag_System_Typo3_Task_FlagEntries', - array('getFeatureFlagService'), - array(), - '', - false - ); + $flagEntries = $this + ->getMockBuilder('Tx_FeatureFlag_System_Typo3_Task_FlagEntries') + ->setMethods(['getFeatureFlagService']) + ->disableOriginalConstructor() + ->getMock(); $serviceMock = $this->getMockBuilder('Tx_FeatureFlag_Service')->setConstructorArgs(array( $mockRepository, From 22486af49031ad072ba2f65b412957a00b77142e Mon Sep 17 00:00:00 2001 From: Christian Krzeminski Date: Wed, 29 May 2019 09:34:57 +0200 Subject: [PATCH 3/9] [FEATURE][FIX] Functional test fix --- Tests/Functional/System/Typo3/TCATest.php | 98 +++++++++++++---------- 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/Tests/Functional/System/Typo3/TCATest.php b/Tests/Functional/System/Typo3/TCATest.php index d10a740..018f45f 100644 --- a/Tests/Functional/System/Typo3/TCATest.php +++ b/Tests/Functional/System/Typo3/TCATest.php @@ -45,13 +45,13 @@ public function setUp() { parent::setUp(); - $this->tca = $this->getMock( - 'Tx_FeatureFlag_System_Typo3_TCA', - [ + $this->tca = $this + ->getMockBuilder('Tx_FeatureFlag_System_Typo3_TCA') + ->setMethods([ 'getMappingRepository', 'getFeatureFlagRepository', 'getFeatureFlagByUid', 'getPersistenceManager', 'getLanguageService' - ] - ); + ]) + ->getMock(); $persistenceManager = $this->getMockBuilder(\TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager::class) ->disableOriginalConstructor() ->setMethods(['persistAll']) @@ -81,16 +81,19 @@ protected function tearDown() */ public function selectRendersCorrectly() { - $featureFlag = $this->getMock('Tx_FeatureFlag_Domain_Model_FeatureFlag', ['getUid']); + $featureFlag = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag')->setMethods(['getUid'])->getMock(); $featureFlag->expects($this->any())->method('getUid')->willReturn(4711); - $mapping = $this->getMock('Tx_FeatureFlag_Domain_Model_Mapping', ['getFeatureFlag']); + $mapping = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_Mapping')->setMethods(['getFeatureFlag'])->getMock(); $mapping->expects($this->any())->method('getFeatureFlag')->willReturn($featureFlag); - $mappingRepository = $this->getMock( - 'Tx_FeatureFlag_Domain_Repository_Mapping', - ['findOneByForeignTableNameAndUid'] - ); + $mappingRepository = $this + ->getMockBuilder('Tx_FeatureFlag_Domain_Repository_Mapping') + ->setMethods(['findOneByForeignTableNameAndUid']) + ->getMock(); $mappingRepository->expects($this->once())->method('findOneByForeignTableNameAndUid')->willReturn($mapping); - $featureFlagRepository = $this->getMock('Tx_FeatureFlag_Domain_Repository_FeatureFlag', ['findAll']); + $featureFlagRepository = $this + ->getMockBuilder('Tx_FeatureFlag_Domain_Repository_FeatureFlag') + ->setMethods(['findAll']) + ->getMock(); $featureFlagRepository->expects($this->once())->method('findAll')->willReturn($this->getListOfFeatureFlags()); $this->tca->expects($this->once())->method('getMappingRepository')->willReturn($mappingRepository); $this->tca->expects($this->once())->method('getFeatureFlagRepository')->willReturn($featureFlagRepository); @@ -115,10 +118,9 @@ public function selectRendersCorrectly() */ public function processDatamapDoNothingIfNothingSelected() { - $mappingRepository = $this->getMock( - 'Tx_FeatureFlag_Domain_Repository_Mapping', - ['findOneByForeignTableNameAndUid', 'add', 'remove', 'update'] - ); + $mappingRepository = $this->getMockBuilder('Tx_FeatureFlag_Domain_Repository_Mapping') + ->setMethods(['findOneByForeignTableNameAndUid', 'add', 'remove', 'update']) + ->getMock(); $mappingRepository->expects($this->once())->method('findOneByForeignTableNameAndUid')->willReturn(null); $mappingRepository->expects($this->never())->method('add'); $mappingRepository->expects($this->never())->method('remove'); @@ -126,7 +128,7 @@ public function processDatamapDoNothingIfNothingSelected() $this->tca->expects($this->once())->method('getMappingRepository')->willReturn($mappingRepository); $this->tca->expects($this->never())->method('getFeatureFlagByUid'); - $tceMainMock = $this->getMock(\TYPO3\CMS\Core\DataHandling\DataHandler::class); + $tceMainMock = $this->getMockBuilder(\TYPO3\CMS\Core\DataHandling\DataHandler::class)->getMock(); $incomingFieldArray = [ 'tx_featureflag_flag' => '0', 'tx_featureflag_behavior' => '0', @@ -139,10 +141,10 @@ public function processDatamapDoNothingIfNothingSelected() */ public function processDatamapDoNothingIfNotInFeatureFlagContext() { - $mappingRepository = $this->getMock( - 'Tx_FeatureFlag_Domain_Repository_Mapping', - ['findOneByForeignTableNameAndUid', 'add', 'remove', 'update'] - ); + $mappingRepository = $this->getMockBuilder( + 'Tx_FeatureFlag_Domain_Repository_Mapping') + ->setMethods(['findOneByForeignTableNameAndUid', 'add', 'remove', 'update']) + ->getMock(); $mappingRepository->expects($this->never())->method('findOneByForeignTableNameAndUid')->willReturn(null); $mappingRepository->expects($this->never())->method('add'); $mappingRepository->expects($this->never())->method('remove'); @@ -150,7 +152,7 @@ public function processDatamapDoNothingIfNotInFeatureFlagContext() $this->tca->expects($this->never())->method('getMappingRepository')->willReturn($mappingRepository); $this->tca->expects($this->never())->method('getFeatureFlagByUid'); - $tceMainMock = $this->getMock(\TYPO3\CMS\Core\DataHandling\DataHandler::class); + $tceMainMock = $this->getMockBuilder(\TYPO3\CMS\Core\DataHandling\DataHandler::class)->getMock(); $incomingFieldArray = ['hidden' => '0']; $this->tca->processDatamap_preProcessFieldArray($incomingFieldArray, 'my_table', '4711', $tceMainMock); } @@ -160,17 +162,17 @@ public function processDatamapDoNothingIfNotInFeatureFlagContext() */ public function processDatamapRemoveMappingIfNothingSelectedAndMappingExists() { - $mapping = $this->getMock('Tx_FeatureFlag_Domain_Model_Mapping'); - $mappingRepository = $this->getMock( - 'Tx_FeatureFlag_Domain_Repository_Mapping', - ['findOneByForeignTableNameAndUid', 'remove', 'update'] - ); + $mapping = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_Mapping')->getMock(); + $mappingRepository = $this->getMockBuilder( + 'Tx_FeatureFlag_Domain_Repository_Mapping') + ->setMethods(['findOneByForeignTableNameAndUid', 'remove', 'update']) + ->getMock(); $mappingRepository->expects($this->once())->method('findOneByForeignTableNameAndUid')->willReturn($mapping); $mappingRepository->expects($this->once())->method('remove'); $mappingRepository->expects($this->once())->method('update'); $this->tca->expects($this->any())->method('getMappingRepository')->willReturn($mappingRepository); - $tceMainMock = $this->getMock(\TYPO3\CMS\Core\DataHandling\DataHandler::class); + $tceMainMock = $this->getMockBuilder(\TYPO3\CMS\Core\DataHandling\DataHandler::class)->getMock(); $incomingFieldArray = [ 'tx_featureflag_flag' => '0', 'tx_featureflag_behavior' => '0', @@ -183,20 +185,23 @@ public function processDatamapRemoveMappingIfNothingSelectedAndMappingExists() */ public function processDatamapCreateNewMappingIfFeatureFlagGivenAndNoMappingPreviouslyCreated() { - $featureFlag = $this->getMock('Tx_FeatureFlag_Domain_Model_FeatureFlag', ['getUid']); + $featureFlag = $this + ->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag') + ->setMethods(['getUid']) + ->getMock(); $featureFlag->expects($this->any())->method('getUid')->willReturn(4711); - $mappingRepository = $this->getMock( - 'Tx_FeatureFlag_Domain_Repository_Mapping', - ['findOneByForeignTableNameAndUid', 'add'] - ); + $mappingRepository = $this + ->getMockBuilder('Tx_FeatureFlag_Domain_Repository_Mapping') + ->setMethods(['findOneByForeignTableNameAndUid', 'add']) + ->getMock(); $mappingRepository->expects($this->once())->method('findOneByForeignTableNameAndUid')->willReturn(null); $mappingRepository->expects($this->once())->method('add'); $this->tca->expects($this->any())->method('getMappingRepository')->willReturn($mappingRepository); $this->tca->expects($this->any())->method('getFeatureFlagByUid')->willReturn($featureFlag); - $tceMainMock = $this->getMock(\TYPO3\CMS\Core\DataHandling\DataHandler::class); + $tceMainMock = $this->getMockBuilder(\TYPO3\CMS\Core\DataHandling\DataHandler::class)->getMock(); $incomingFieldArray = [ 'tx_featureflag_flag' => '4711', 'tx_featureflag_behavior' => '0', @@ -218,10 +223,9 @@ public function processCmdmapCommandIsNotDelete() */ public function processCmdmappostIsDelete() { - $mappingRepository = $this->getMock( - 'Tx_FeatureFlag_Domain_Repository_Mapping', - ['findAllByForeignTableNameAndUid', 'remove'] - ); + $mappingRepository = $this->getMockBuilder('Tx_FeatureFlag_Domain_Repository_Mapping') + ->setMethods(['findAllByForeignTableNameAndUid', 'remove']) + ->getMock(); $mappingRepository->expects($this->once())->method('findAllByForeignTableNameAndUid')->willReturn($this->getListOfMappings()); $mappingRepository->expects($this->exactly(2))->method('remove'); $this->tca->expects($this->any())->method('getMappingRepository')->willReturn($mappingRepository); @@ -234,9 +238,9 @@ public function processCmdmappostIsDelete() */ protected function getListOfMappings() { - $mapping1 = $this->getMock('Tx_FeatureFlag_Domain_Model_Mapping'); - $mapping2 = $this->getMock('Tx_FeatureFlag_Domain_Model_Mapping'); - $mapping3 = $this->getMock('stdClass'); + $mapping1 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_Mapping')->getMock(); + $mapping2 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_Mapping')->getMock(); + $mapping3 = $this->getMockBuilder('stdClass')->getMock(); return array($mapping1, $mapping2, $mapping3); } @@ -246,13 +250,19 @@ protected function getListOfMappings() */ protected function getListOfFeatureFlags() { - $featureFlag1 = $this->getMock('Tx_FeatureFlag_Domain_Model_FeatureFlag', ['getUid', 'getDescription']); + $featureFlag1 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag') + ->setMethods(['getUid', 'getDescription']) + ->getMock(); $featureFlag1->expects($this->any())->method('getUid')->willReturn(111); $featureFlag1->expects($this->any())->method('getDescription')->willReturn('flag 1'); - $featureFlag2 = $this->getMock('Tx_FeatureFlag_Domain_Model_FeatureFlag', ['getUid', 'getDescription']); + $featureFlag2 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag') + ->setMethods(['getUid', 'getDescription']) + ->getMock(); $featureFlag2->expects($this->any())->method('getUid')->willReturn(4711); $featureFlag2->expects($this->any())->method('getDescription')->willReturn('flag 2'); - $featureFlag3 = $this->getMock('Tx_FeatureFlag_Domain_Model_FeatureFlag', ['getUid', 'getDescription']); + $featureFlag3 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag') + ->setMethods(['getUid', 'getDescription']) + ->getMock(); $featureFlag3->expects($this->any())->method('getDescription')->willReturn('flag 3'); $featureFlag3->expects($this->any())->method('getUid')->willReturn(222); From 548893517338b25ec67cb1da2756bf68342e23b6 Mon Sep 17 00:00:00 2001 From: Christian Krzeminski Date: Wed, 29 May 2019 12:57:45 +0200 Subject: [PATCH 4/9] [TASK] Update nimut --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 3861dd3..1ab8b6e 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ }, "require-dev": { "typo3/cms": "^7.6", - "nimut/testing-framework": "4.0.*", + "nimut/testing-framework": "^4.1", "phpunit/phpcov": "4.0.*", "squizlabs/php_codesniffer": "3.4.*", "sebastian/phpcpd": "3.0.*", From 6c81cf64e706582571df261d0020515ce20c3f07 Mon Sep 17 00:00:00 2001 From: Christian Krzeminski Date: Wed, 12 Jun 2019 14:28:12 +0200 Subject: [PATCH 5/9] [TASK] Update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bd93c44..0e389df 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ You can download and install this extension or use composer. ## Copyright / License -Copyright: (c) 2015 - 2018, AOE GmbH +Copyright: (c) 2015 - 2019, AOE GmbH License: GPLv3, ## Contributing From b0d2e43f18a53c257de3416754d9365628ddec29 Mon Sep 17 00:00:00 2001 From: Christian Krzeminski Date: Wed, 12 Jun 2019 14:47:19 +0200 Subject: [PATCH 6/9] [TASK] Add mysql --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 968ca2e..46471dd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,6 +25,9 @@ matrix: sudo: false +services: + - mysql + addons: apt: packages: From 480a233133a7b0326f506836a1182bfc3bfb2e70 Mon Sep 17 00:00:00 2001 From: Christian Krzeminski Date: Wed, 12 Jun 2019 16:06:46 +0200 Subject: [PATCH 7/9] [TASK] Update composer --- composer.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index 1ab8b6e..91f9767 100644 --- a/composer.json +++ b/composer.json @@ -31,9 +31,6 @@ "sebastian/phpcpd": "3.0.*", "phpmd/phpmd": "2.6.*" }, - "replace": { - "feature_flag": "self.version" - }, "autoload": { "classmap": [ "Classes/" @@ -58,11 +55,11 @@ ], "test:unit": [ "[ -e .Build/bin/phpunit ] || composer update", - "TYPO3_PATH_ROOT=$(pwd)/.Build/Web .Build/bin/phpunit -c .Build/vendor/nimut/testing-framework/res/Configuration/UnitTests.xml Tests/Unit/ --debug --verbose" + "TYPO3_PATH_ROOT=$(pwd)/.Build/Web .Build/bin/phpunit -c .Build/vendor/nimut/testing-framework/res/Configuration/UnitTests.xml Tests/Unit" ], "test:functional": [ "[ -e .Build/bin/phpunit ] || composer update", - "TYPO3_PATH_ROOT=$(pwd)/.Build/Web .Build/bin/phpunit -c .Build/vendor/nimut/testing-framework/res/Configuration/FunctionalTests.xml Tests/Functional --debug --verbose" + "TYPO3_PATH_ROOT=$(pwd)/.Build/Web .Build/bin/phpunit -c .Build/vendor/nimut/testing-framework/res/Configuration/FunctionalTests.xml Tests/Functional" ] }, "extra": { From 99459998b081403ce864d51a90215bfe717299f6 Mon Sep 17 00:00:00 2001 From: Christian Krzeminski Date: Fri, 14 Jun 2019 09:08:44 +0200 Subject: [PATCH 8/9] [CLEANUP] Use/Import classes and clean up --- Tests/Functional/System/Typo3/TCATest.php | 116 +++++++++++++++------- 1 file changed, 79 insertions(+), 37 deletions(-) diff --git a/Tests/Functional/System/Typo3/TCATest.php b/Tests/Functional/System/Typo3/TCATest.php index 018f45f..fdfa240 100644 --- a/Tests/Functional/System/Typo3/TCATest.php +++ b/Tests/Functional/System/Typo3/TCATest.php @@ -25,6 +25,9 @@ ***************************************************************/ use Nimut\TestingFramework\TestCase\FunctionalTestCase; +use TYPO3\CMS\Core\DataHandling\DataHandler; +use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager; +use TYPO3\CMS\Lang\LanguageService; /** * @package FeatureFlag @@ -46,18 +49,22 @@ public function setUp() parent::setUp(); $this->tca = $this - ->getMockBuilder('Tx_FeatureFlag_System_Typo3_TCA') + ->getMockBuilder(Tx_FeatureFlag_System_Typo3_TCA::class) ->setMethods([ - 'getMappingRepository', 'getFeatureFlagRepository', - 'getFeatureFlagByUid', 'getPersistenceManager', 'getLanguageService' + 'getMappingRepository', + 'getFeatureFlagRepository', + 'getFeatureFlagByUid', + 'getPersistenceManager', + 'getLanguageService' ]) ->getMock(); - $persistenceManager = $this->getMockBuilder(\TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager::class) + $persistenceManager = $this + ->getMockBuilder(PersistenceManager::class) ->disableOriginalConstructor() ->setMethods(['persistAll']) ->getMock(); - $languageService = $this->getMockBuilder(\TYPO3\CMS\Lang\LanguageService::class) + $languageService = $this->getMockBuilder(LanguageService::class) ->disableOriginalConstructor() ->setMethods(['sL']) ->getMock(); @@ -81,22 +88,38 @@ protected function tearDown() */ public function selectRendersCorrectly() { - $featureFlag = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag')->setMethods(['getUid'])->getMock(); + $featureFlag = $this + ->getMockBuilder(Tx_FeatureFlag_Domain_Model_FeatureFlag::class) + ->setMethods(['getUid']) + ->getMock(); $featureFlag->expects($this->any())->method('getUid')->willReturn(4711); - $mapping = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_Mapping')->setMethods(['getFeatureFlag'])->getMock(); + $mapping = $this + ->getMockBuilder(Tx_FeatureFlag_Domain_Model_Mapping::class) + ->setMethods(['getFeatureFlag']) + ->getMock(); $mapping->expects($this->any())->method('getFeatureFlag')->willReturn($featureFlag); $mappingRepository = $this - ->getMockBuilder('Tx_FeatureFlag_Domain_Repository_Mapping') + ->getMockBuilder(Tx_FeatureFlag_Domain_Repository_Mapping::class) ->setMethods(['findOneByForeignTableNameAndUid']) ->getMock(); - $mappingRepository->expects($this->once())->method('findOneByForeignTableNameAndUid')->willReturn($mapping); + $mappingRepository + ->expects($this->once()) + ->method('findOneByForeignTableNameAndUid') + ->willReturn($mapping); $featureFlagRepository = $this - ->getMockBuilder('Tx_FeatureFlag_Domain_Repository_FeatureFlag') + ->getMockBuilder(Tx_FeatureFlag_Domain_Repository_FeatureFlag::class) ->setMethods(['findAll']) ->getMock(); - $featureFlagRepository->expects($this->once())->method('findAll')->willReturn($this->getListOfFeatureFlags()); - $this->tca->expects($this->once())->method('getMappingRepository')->willReturn($mappingRepository); - $this->tca->expects($this->once())->method('getFeatureFlagRepository')->willReturn($featureFlagRepository); + $featureFlagRepository + ->expects($this->once()) + ->method('findAll') + ->willReturn($this->getListOfFeatureFlags()); + $this->tca->expects($this->once()) + ->method('getMappingRepository') + ->willReturn($mappingRepository); + $this->tca->expects($this->once()) + ->method('getFeatureFlagRepository') + ->willReturn($featureFlagRepository); $PA = []; $PA['row'] = []; @@ -118,17 +141,21 @@ public function selectRendersCorrectly() */ public function processDatamapDoNothingIfNothingSelected() { - $mappingRepository = $this->getMockBuilder('Tx_FeatureFlag_Domain_Repository_Mapping') + $mappingRepository = $this + ->getMockBuilder(Tx_FeatureFlag_Domain_Repository_Mapping::class) ->setMethods(['findOneByForeignTableNameAndUid', 'add', 'remove', 'update']) ->getMock(); - $mappingRepository->expects($this->once())->method('findOneByForeignTableNameAndUid')->willReturn(null); + $mappingRepository + ->expects($this->once()) + ->method('findOneByForeignTableNameAndUid') + ->willReturn(null); $mappingRepository->expects($this->never())->method('add'); $mappingRepository->expects($this->never())->method('remove'); $mappingRepository->expects($this->never())->method('update'); $this->tca->expects($this->once())->method('getMappingRepository')->willReturn($mappingRepository); $this->tca->expects($this->never())->method('getFeatureFlagByUid'); - $tceMainMock = $this->getMockBuilder(\TYPO3\CMS\Core\DataHandling\DataHandler::class)->getMock(); + $tceMainMock = $this->createMock(DataHandler::class); $incomingFieldArray = [ 'tx_featureflag_flag' => '0', 'tx_featureflag_behavior' => '0', @@ -141,18 +168,21 @@ public function processDatamapDoNothingIfNothingSelected() */ public function processDatamapDoNothingIfNotInFeatureFlagContext() { - $mappingRepository = $this->getMockBuilder( - 'Tx_FeatureFlag_Domain_Repository_Mapping') + $mappingRepository = $this + ->getMockBuilder(Tx_FeatureFlag_Domain_Repository_Mapping::class) ->setMethods(['findOneByForeignTableNameAndUid', 'add', 'remove', 'update']) ->getMock(); - $mappingRepository->expects($this->never())->method('findOneByForeignTableNameAndUid')->willReturn(null); + $mappingRepository + ->expects($this->never()) + ->method('findOneByForeignTableNameAndUid') + ->willReturn(null); $mappingRepository->expects($this->never())->method('add'); $mappingRepository->expects($this->never())->method('remove'); $mappingRepository->expects($this->never())->method('update'); $this->tca->expects($this->never())->method('getMappingRepository')->willReturn($mappingRepository); $this->tca->expects($this->never())->method('getFeatureFlagByUid'); - $tceMainMock = $this->getMockBuilder(\TYPO3\CMS\Core\DataHandling\DataHandler::class)->getMock(); + $tceMainMock = $this->getMockBuilder(DataHandler::class)->getMock(); $incomingFieldArray = ['hidden' => '0']; $this->tca->processDatamap_preProcessFieldArray($incomingFieldArray, 'my_table', '4711', $tceMainMock); } @@ -162,17 +192,20 @@ public function processDatamapDoNothingIfNotInFeatureFlagContext() */ public function processDatamapRemoveMappingIfNothingSelectedAndMappingExists() { - $mapping = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_Mapping')->getMock(); - $mappingRepository = $this->getMockBuilder( - 'Tx_FeatureFlag_Domain_Repository_Mapping') + $mapping = $this->createMock(Tx_FeatureFlag_Domain_Model_Mapping::class); + $mappingRepository = $this + ->getMockBuilder(Tx_FeatureFlag_Domain_Repository_Mapping::class) ->setMethods(['findOneByForeignTableNameAndUid', 'remove', 'update']) ->getMock(); - $mappingRepository->expects($this->once())->method('findOneByForeignTableNameAndUid')->willReturn($mapping); + $mappingRepository + ->expects($this->once()) + ->method('findOneByForeignTableNameAndUid') + ->willReturn($mapping); $mappingRepository->expects($this->once())->method('remove'); $mappingRepository->expects($this->once())->method('update'); $this->tca->expects($this->any())->method('getMappingRepository')->willReturn($mappingRepository); - $tceMainMock = $this->getMockBuilder(\TYPO3\CMS\Core\DataHandling\DataHandler::class)->getMock(); + $tceMainMock = $this->createMock(DataHandler::class); $incomingFieldArray = [ 'tx_featureflag_flag' => '0', 'tx_featureflag_behavior' => '0', @@ -186,22 +219,25 @@ public function processDatamapRemoveMappingIfNothingSelectedAndMappingExists() public function processDatamapCreateNewMappingIfFeatureFlagGivenAndNoMappingPreviouslyCreated() { $featureFlag = $this - ->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag') + ->getMockBuilder(Tx_FeatureFlag_Domain_Model_FeatureFlag::class) ->setMethods(['getUid']) ->getMock(); $featureFlag->expects($this->any())->method('getUid')->willReturn(4711); $mappingRepository = $this - ->getMockBuilder('Tx_FeatureFlag_Domain_Repository_Mapping') + ->getMockBuilder(Tx_FeatureFlag_Domain_Repository_Mapping::class) ->setMethods(['findOneByForeignTableNameAndUid', 'add']) ->getMock(); - $mappingRepository->expects($this->once())->method('findOneByForeignTableNameAndUid')->willReturn(null); + $mappingRepository + ->expects($this->once()) + ->method('findOneByForeignTableNameAndUid') + ->willReturn(null); $mappingRepository->expects($this->once())->method('add'); $this->tca->expects($this->any())->method('getMappingRepository')->willReturn($mappingRepository); $this->tca->expects($this->any())->method('getFeatureFlagByUid')->willReturn($featureFlag); - $tceMainMock = $this->getMockBuilder(\TYPO3\CMS\Core\DataHandling\DataHandler::class)->getMock(); + $tceMainMock = $this->createMock(DataHandler::class); $incomingFieldArray = [ 'tx_featureflag_flag' => '4711', 'tx_featureflag_behavior' => '0', @@ -223,10 +259,13 @@ public function processCmdmapCommandIsNotDelete() */ public function processCmdmappostIsDelete() { - $mappingRepository = $this->getMockBuilder('Tx_FeatureFlag_Domain_Repository_Mapping') + $mappingRepository = $this->getMockBuilder(Tx_FeatureFlag_Domain_Repository_Mapping::class) ->setMethods(['findAllByForeignTableNameAndUid', 'remove']) ->getMock(); - $mappingRepository->expects($this->once())->method('findAllByForeignTableNameAndUid')->willReturn($this->getListOfMappings()); + $mappingRepository + ->expects($this->once()) + ->method('findAllByForeignTableNameAndUid') + ->willReturn($this->getListOfMappings()); $mappingRepository->expects($this->exactly(2))->method('remove'); $this->tca->expects($this->any())->method('getMappingRepository')->willReturn($mappingRepository); @@ -238,9 +277,9 @@ public function processCmdmappostIsDelete() */ protected function getListOfMappings() { - $mapping1 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_Mapping')->getMock(); - $mapping2 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_Mapping')->getMock(); - $mapping3 = $this->getMockBuilder('stdClass')->getMock(); + $mapping1 = $this->createMock(Tx_FeatureFlag_Domain_Model_Mapping::class); + $mapping2 = $this->createMock(Tx_FeatureFlag_Domain_Model_Mapping::class); + $mapping3 = $this->createMock('stdClass'); return array($mapping1, $mapping2, $mapping3); } @@ -250,17 +289,20 @@ protected function getListOfMappings() */ protected function getListOfFeatureFlags() { - $featureFlag1 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag') + $featureFlag1 = $this + ->getMockBuilder(Tx_FeatureFlag_Domain_Model_FeatureFlag::class) ->setMethods(['getUid', 'getDescription']) ->getMock(); $featureFlag1->expects($this->any())->method('getUid')->willReturn(111); $featureFlag1->expects($this->any())->method('getDescription')->willReturn('flag 1'); - $featureFlag2 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag') + $featureFlag2 = $this + ->getMockBuilder(Tx_FeatureFlag_Domain_Model_FeatureFlag::class) ->setMethods(['getUid', 'getDescription']) ->getMock(); $featureFlag2->expects($this->any())->method('getUid')->willReturn(4711); $featureFlag2->expects($this->any())->method('getDescription')->willReturn('flag 2'); - $featureFlag3 = $this->getMockBuilder('Tx_FeatureFlag_Domain_Model_FeatureFlag') + $featureFlag3 = $this + ->getMockBuilder(Tx_FeatureFlag_Domain_Model_FeatureFlag::class) ->setMethods(['getUid', 'getDescription']) ->getMock(); $featureFlag3->expects($this->any())->method('getDescription')->willReturn('flag 3'); From a81bfeb86060b47793871028f7a4b2e7100b24ca Mon Sep 17 00:00:00 2001 From: Christian Krzeminski Date: Fri, 14 Jun 2019 09:18:58 +0200 Subject: [PATCH 9/9] [CLEANUP] Use/Import classes and clean up --- Tests/Unit/Service/EidProcessorTest.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Tests/Unit/Service/EidProcessorTest.php b/Tests/Unit/Service/EidProcessorTest.php index 91438c0..8f2be69 100644 --- a/Tests/Unit/Service/EidProcessorTest.php +++ b/Tests/Unit/Service/EidProcessorTest.php @@ -27,6 +27,9 @@ use Aoe\FeatureFlag\Service\EidProcessor; use Nimut\TestingFramework\TestCase\UnitTestCase; +use Tx_FeatureFlag_Service; +use Tx_FeatureFlag_Service_Exception_ActionNotFound; +use Tx_FeatureFlag_System_Typo3_CacheManager; /** * @package FeatureFlag @@ -39,8 +42,11 @@ class EidProcessorTest extends UnitTestCase */ private function getServiceMock() { - return $this->getMockBuilder( - 'Tx_FeatureFlag_Service')->setMethods(['updateFeatureFlag'])->disableOriginalConstructor()->getMock(); + return $this + ->getMockBuilder(Tx_FeatureFlag_Service::class) + ->setMethods(['updateFeatureFlag']) + ->disableOriginalConstructor() + ->getMock(); } /** @@ -48,8 +54,11 @@ private function getServiceMock() */ private function getCacheManagerMock() { - return $this->getMockBuilder( - 'Tx_FeatureFlag_System_Typo3_CacheManager')->setMethods(['clearPageCache'])->disableOriginalConstructor()->getMock(); + return $this + ->getMockBuilder(Tx_FeatureFlag_System_Typo3_CacheManager::class) + ->setMethods(['clearPageCache']) + ->disableOriginalConstructor() + ->getMock(); } /** @@ -89,7 +98,7 @@ public function shouldThrowExceptionTest() $_GET = ['action' => '', 'feature' => 'testfeature']; $eidProcessor = new EidProcessor($this->getServiceMock(), $this->getCacheManagerMock()); - $this->expectException(\Tx_FeatureFlag_Service_Exception_ActionNotFound::class); + $this->expectException(Tx_FeatureFlag_Service_Exception_ActionNotFound::class); $eidProcessor->processRequest(); } } \ No newline at end of file