Skip to content

Commit

Permalink
Added StaticDataProvider and accompanying test.
Browse files Browse the repository at this point in the history
  • Loading branch information
Bilge committed Jan 23, 2016
1 parent d7e7223 commit 1b17c16
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 7 deletions.
10 changes: 10 additions & 0 deletions src/Porter/Connector/NullConnector.php
@@ -0,0 +1,10 @@
<?php
namespace ScriptFUSION\Porter\Connector;

class NullConnector implements Connector
{
public function fetch($destination, array $parameters = [])
{
// Intentionally empty.
}
}
9 changes: 2 additions & 7 deletions src/Porter/Porter.php
@@ -1,7 +1,6 @@
<?php
namespace ScriptFUSION\Porter;

use ScriptFUSION\Porter\Collection\CountableProviderRecords;
use ScriptFUSION\Porter\Collection\FilteredRecords;
use ScriptFUSION\Porter\Collection\ProviderRecords;
use ScriptFUSION\Porter\Collection\RecordCollection;
Expand All @@ -25,12 +24,8 @@ public function import(ImportSpecification $specification)
{
$providerData = $specification->finalize()->getProviderData();

if (!$documents = $this->fetch($providerData)) {
return new CountableProviderRecords(new \EmptyIterator, 0, $providerData);
}

if (!$documents instanceof ProviderRecords) {
// Compose documents iterator.
if (!($documents = $this->fetch($providerData)) instanceof ProviderRecords) {
// Compose records iterator.
$documents = new ProviderRecords($documents, $providerData);
}

Expand Down
24 changes: 24 additions & 0 deletions src/Porter/Provider/StaticData.php
@@ -0,0 +1,24 @@
<?php
namespace ScriptFUSION\Porter\Provider;

use ScriptFUSION\Porter\Connector\Connector;

class StaticData implements ProviderData
{
private $data;

public function __construct(\Iterator $data)
{
$this->data = $data;
}

public function getProviderName()
{
return StaticDataProvider::class;
}

public function fetch(Connector $connector)
{
return $this->data;
}
}
12 changes: 12 additions & 0 deletions src/Porter/Provider/StaticDataProvider.php
@@ -0,0 +1,12 @@
<?php
namespace ScriptFUSION\Porter\Provider;

use ScriptFUSION\Porter\Connector\NullConnector;

class StaticDataProvider extends Provider
{
public function __construct()
{
parent::__construct(new NullConnector);
}
}
18 changes: 18 additions & 0 deletions test/Integration/Porter/Provider/StaticDataProviderTest.php
@@ -0,0 +1,18 @@
<?php
namespace ScriptFUSIONTest\Integration\Porter\Provider;

use ScriptFUSION\Porter\ImportSpecification;
use ScriptFUSION\Porter\Porter;
use ScriptFUSION\Porter\Provider\StaticData;
use ScriptFUSION\Porter\Provider\StaticDataProvider;

final class StaticDataProviderTest extends \PHPUnit_Framework_TestCase
{
public function test()
{
$porter = (new Porter)->addProvider(new StaticDataProvider);
$records = $porter->import(new ImportSpecification(new StaticData(new \ArrayIterator(['foo']))));

$this->assertSame('foo', $records->current());
}
}

0 comments on commit 1b17c16

Please sign in to comment.