diff --git a/src/Porter/Cache/MutableCacheState.php b/src/Porter/Cache/CacheToggle.php similarity index 85% rename from src/Porter/Cache/MutableCacheState.php rename to src/Porter/Cache/CacheToggle.php index 94560f8..b916661 100644 --- a/src/Porter/Cache/MutableCacheState.php +++ b/src/Porter/Cache/CacheToggle.php @@ -2,9 +2,9 @@ namespace ScriptFUSION\Porter\Cache; /** - * Defines methods for getting and setting cache availability. + * Defines methods for getting and setting whether a cache is enabled. */ -interface MutableCacheState +interface CacheToggle { /** * Enables the cache, permitting subsequent cache access operations. diff --git a/src/Porter/Connector/CachingConnector.php b/src/Porter/Connector/CachingConnector.php index e1847ef..0027e77 100644 --- a/src/Porter/Connector/CachingConnector.php +++ b/src/Porter/Connector/CachingConnector.php @@ -2,11 +2,11 @@ namespace ScriptFUSION\Porter\Connector; use Psr\Cache\CacheItemPoolInterface; +use ScriptFUSION\Porter\Cache\CacheToggle; use ScriptFUSION\Porter\Cache\MemoryCache; -use ScriptFUSION\Porter\Cache\MutableCacheState; use ScriptFUSION\Porter\Options\EncapsulatedOptions; -abstract class CachingConnector implements Connector, MutableCacheState +abstract class CachingConnector implements Connector, CacheToggle { private $cache; diff --git a/src/Porter/Mapper/PorterMapper.php b/src/Porter/Mapper/PorterMapper.php index f302ca3..26828f3 100644 --- a/src/Porter/Mapper/PorterMapper.php +++ b/src/Porter/Mapper/PorterMapper.php @@ -2,9 +2,6 @@ namespace ScriptFUSION\Porter\Mapper; use ScriptFUSION\Mapper\CollectionMapper; -use ScriptFUSION\Mapper\Mapping; -use ScriptFUSION\Porter\Collection\MappedRecords; -use ScriptFUSION\Porter\Collection\RecordCollection; use ScriptFUSION\Porter\Porter; use ScriptFUSION\Porter\PorterAware; @@ -17,11 +14,6 @@ public function __construct(Porter $porter) $this->porter = $porter; } - public function mapRecords(RecordCollection $records, Mapping $mapping, $context = null) - { - return new MappedRecords($this->mapCollection($records, $mapping, $context), $records); - } - protected function injectDependencies($object) { parent::injectDependencies($object); diff --git a/src/Porter/Porter.php b/src/Porter/Porter.php index 14f2c5d..74552b3 100644 --- a/src/Porter/Porter.php +++ b/src/Porter/Porter.php @@ -1,18 +1,20 @@ getProvider($dataSource->getProviderName()); + $provider = $this->getProvider($dataSource->getProviderClassName()); $this->applyCacheAdvice($provider, $cacheAdvice ?: $this->defaultCacheAdvice); return $provider->fetch($dataSource); @@ -80,10 +82,10 @@ private function filter(ProviderRecords $records, callable $predicate, $context) private function map(RecordCollection $records, Mapping $mapping, $context) { - return $this->getOrCreateMapper()->mapRecords($records, $mapping, $context); + return new MappedRecords($this->getOrCreateMapper()->mapCollection($records, $mapping, $context), $records); } - private function applyCacheAdvice(MutableCacheState $cache, CacheAdvice $cacheAdvice) + private function applyCacheAdvice(CacheToggle $cache, CacheAdvice $cacheAdvice) { try { switch ("$cacheAdvice") { @@ -151,7 +153,7 @@ private function getOrCreateProviderFactory() } /** - * @return PorterMapper + * @return CollectionMapper */ private function getOrCreateMapper() { @@ -159,11 +161,11 @@ private function getOrCreateMapper() } /** - * @param PorterMapper $mapper + * @param CollectionMapper $mapper * * @return $this */ - public function setMapper(PorterMapper $mapper) + public function setMapper(CollectionMapper $mapper) { $this->mapper = $mapper; diff --git a/src/Porter/Provider/DataSource/ProviderDataSource.php b/src/Porter/Provider/DataSource/ProviderDataSource.php index 3b489cd..cbb6b25 100644 --- a/src/Porter/Provider/DataSource/ProviderDataSource.php +++ b/src/Porter/Provider/DataSource/ProviderDataSource.php @@ -13,7 +13,7 @@ interface ProviderDataSource * * @return string */ - public function getProviderName(); + public function getProviderClassName(); /** * Fetches data from the provider using the the specified connector and diff --git a/src/Porter/Provider/DataSource/StaticDataSource.php b/src/Porter/Provider/DataSource/StaticDataSource.php index 4f85bd3..cafbb2b 100644 --- a/src/Porter/Provider/DataSource/StaticDataSource.php +++ b/src/Porter/Provider/DataSource/StaticDataSource.php @@ -14,7 +14,7 @@ public function __construct(\Iterator $data) $this->data = $data; } - public function getProviderName() + public function getProviderClassName() { return StaticDataProvider::class; } diff --git a/src/Porter/Provider/Provider.php b/src/Porter/Provider/Provider.php index dde3259..ac0403c 100644 --- a/src/Porter/Provider/Provider.php +++ b/src/Porter/Provider/Provider.php @@ -2,11 +2,11 @@ namespace ScriptFUSION\Porter\Provider; use ScriptFUSION\Porter\Cache\CacheOperationProhibitedException; -use ScriptFUSION\Porter\Cache\MutableCacheState; +use ScriptFUSION\Porter\Cache\CacheToggle; use ScriptFUSION\Porter\Connector\Connector; use ScriptFUSION\Porter\Provider\DataSource\ProviderDataSource; -abstract class Provider implements MutableCacheState +abstract class Provider implements CacheToggle { private $connector; @@ -24,7 +24,7 @@ public function __construct(Connector $connector) */ public function fetch(ProviderDataSource $dataSource) { - if ($dataSource->getProviderName() !== static::class) { + if ($dataSource->getProviderClassName() !== static::class) { throw new ForeignDataSourceException(sprintf( 'Cannot fetch data from foreign source: "%s".', get_class($dataSource) @@ -46,7 +46,7 @@ public function enableCache() { $connector = $this->getConnector(); - if (!$connector instanceof MutableCacheState) { + if (!$connector instanceof CacheToggle) { throw $this->createCacheUnavailableException(); } @@ -57,7 +57,7 @@ public function disableCache() { $connector = $this->getConnector(); - if (!$connector instanceof MutableCacheState) { + if (!$connector instanceof CacheToggle) { throw $this->createCacheUnavailableException(); } @@ -68,7 +68,7 @@ public function isCacheEnabled() { $connector = $this->getConnector(); - if (!$connector instanceof MutableCacheState) { + if (!$connector instanceof CacheToggle) { return false; } diff --git a/test/Integration/Porter/PorterTest.php b/test/Integration/Porter/PorterTest.php index db1cf09..3ab32f5 100644 --- a/test/Integration/Porter/PorterTest.php +++ b/test/Integration/Porter/PorterTest.php @@ -2,10 +2,12 @@ namespace ScriptFUSIONTest\Integration\Porter; use Mockery\MockInterface; +use ScriptFUSION\Porter\Collection\FilteredRecords; use ScriptFUSION\Porter\Collection\PorterRecords; +use ScriptFUSION\Porter\Collection\ProviderRecords; use ScriptFUSION\Porter\Porter; -use ScriptFUSION\Porter\Provider\Provider; use ScriptFUSION\Porter\Provider\DataSource\ProviderDataSource; +use ScriptFUSION\Porter\Provider\Provider; use ScriptFUSION\Porter\ProviderNotFoundException; use ScriptFUSION\Porter\Specification\ImportSpecification; @@ -24,7 +26,7 @@ protected function setUp() { $this->porter = (new Porter)->addProvider($this->provider = \Mockery::spy(Provider::class)); $this->dataSource = \Mockery::mock(ProviderDataSource::class) - ->shouldReceive('getProviderName') + ->shouldReceive('getProviderClassName') ->andReturn(get_class($this->provider)) ->getMock(); } @@ -59,6 +61,7 @@ public function testImport() $records = $this->porter->import(new ImportSpecification($this->dataSource)); self::assertInstanceOf(PorterRecords::class, $records); + self::assertInstanceOf(ProviderRecords::class, $records->getPreviousCollection()); self::assertSame('foo', $records->current()); } @@ -73,6 +76,7 @@ public function testFilter() }) ); + self::assertInstanceOf(FilteredRecords::class, $records->getPreviousCollection()); self::assertSame([1, 3, 5, 7, 9], iterator_to_array($records)); } } diff --git a/test/Unit/Porter/Mapper/PorterMapperTest.php b/test/Unit/Porter/Mapper/PorterMapperTest.php index 27772e7..9342428 100644 --- a/test/Unit/Porter/Mapper/PorterMapperTest.php +++ b/test/Unit/Porter/Mapper/PorterMapperTest.php @@ -4,7 +4,6 @@ use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use ScriptFUSION\Mapper\AnonymousMapping; use ScriptFUSION\Mapper\Strategy\Strategy; -use ScriptFUSION\Porter\Collection\MappedRecords; use ScriptFUSION\Porter\Collection\RecordCollection; use ScriptFUSION\Porter\Mapper\PorterMapper; use ScriptFUSION\Porter\Porter; @@ -24,7 +23,7 @@ public function testMap() [new \ArrayIterator([[1], [2], [3]])] )->makePartial(); - $mappedRecords = $mapper->mapRecords( + $mappedRecords = $mapper->mapCollection( $records, new AnonymousMapping([$strategy = \Mockery::mock(implode(',', [Strategy::class, PorterAware::class]))]) ); @@ -33,7 +32,6 @@ public function testMap() return $data[0] * $data[0]; })->getMock()->shouldReceive('setPorter')->with($porter)->atLeast()->once(); - self::assertInstanceOf(MappedRecords::class, $mappedRecords); self::assertSame([[1], [4], [9]], iterator_to_array($mappedRecords)); } } diff --git a/test/Unit/Porter/Provider/ProviderTest.php b/test/Unit/Porter/Provider/ProviderTest.php index 9747f3a..a27f7ab 100644 --- a/test/Unit/Porter/Provider/ProviderTest.php +++ b/test/Unit/Porter/Provider/ProviderTest.php @@ -6,9 +6,9 @@ use ScriptFUSION\Porter\Cache\CacheOperationProhibitedException; use ScriptFUSION\Porter\Connector\CachingConnector; use ScriptFUSION\Porter\Connector\Connector; +use ScriptFUSION\Porter\Provider\DataSource\ProviderDataSource; use ScriptFUSION\Porter\Provider\ForeignDataSourceException; use ScriptFUSION\Porter\Provider\Provider; -use ScriptFUSION\Porter\Provider\DataSource\ProviderDataSource; final class ProviderTest extends \PHPUnit_Framework_TestCase { @@ -50,7 +50,7 @@ public function testFetch() ->with($this->connector) ->andReturn('foo') ->getMock() - ->shouldReceive('getProviderName') + ->shouldReceive('getProviderClassName') ->andReturn(get_class($this->provider)) ->getMock() ) @@ -63,7 +63,7 @@ public function testFetchForeignProvider() $this->provider->fetch( \Mockery::mock(ProviderDataSource::class) - ->shouldReceive('getProviderName') + ->shouldReceive('getProviderClassName') ->andReturn('foo') ->getMock() );