-
-
Notifications
You must be signed in to change notification settings - Fork 48
Closed
Description
Every expression is covered with a unit tests that looks like this:
<?php
public function test_array_unpack() : void
{
$row = Row::create(
Entry::int('id', 1),
Entry::array('array_entry', [
'status' => 'PENDING',
'enabled' => true,
'array' => ['foo' => 'bar'],
]),
);
$this->assertSame(
[
'status' => 'PENDING',
'enabled' => true,
'array' => ['foo' => 'bar'],
],
(new ArrayUnpack(ref('array_entry')))->eval($row)
);
}however this does not show how to use given expressions, integration tests would solve that problem, for example:
<?php
namespace Flow\ETL\Tests\Integration\Row\Reference\Expression;
use Flow\ETL\DSL\Entry;
use Flow\ETL\DSL\From;
use Flow\ETL\DSL\To;
use Flow\ETL\Flow;
use Flow\ETL\Memory\ArrayMemory;
use Flow\ETL\Row;
use Flow\ETL\Rows;
use PHPUnit\Framework\TestCase;
use function Flow\ETL\DSL\array_expand;
use function Flow\ETL\DSL\ref;
final class ArrayUnpackTest extends TestCase
{
public function test_array_unpack() : void
{
(new Flow())
->read(
From::rows(new Rows(
Row::with(Entry::int('id', 1), Entry::array('array', ['a' => 1, 'b' => 2, 'c' => 3])),
))
)
->withEntry('expanded', array_expand(ref('array')))
->write(To::memory($memory = new ArrayMemory()))
->run();
$this->assertSame(
[
['id' => 1, 'array' => ['a' => 1, 'b' => 2, 'c' => 3], 'expanded' => 1],
['id' => 1, 'array' => ['a' => 1, 'b' => 2, 'c' => 3], 'expanded' => 2],
['id' => 1, 'array' => ['a' => 1, 'b' => 2, 'c' => 3], 'expanded' => 3],
],
$memory->data
);
}
}