Skip to content

Commit

Permalink
Add integration tests for when, any & all expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
stloyd committed Oct 8, 2023
1 parent 4bd5f73 commit f7be742
Show file tree
Hide file tree
Showing 3 changed files with 162 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

declare(strict_types=1);

namespace Flow\ETL\Tests\Integration\Row\Reference\Expression;

use function Flow\ETL\DSL\all;
use function Flow\ETL\DSL\lit;
use function Flow\ETL\DSL\ref;
use function Flow\ETL\DSL\when;
use Flow\ETL\DSL\From;
use Flow\ETL\DSL\To;
use Flow\ETL\Flow;
use Flow\ETL\Memory\ArrayMemory;
use PHPUnit\Framework\TestCase;

final class AllTest extends TestCase
{
public function test_all_cases_found() : void
{
(new Flow())
->read(
From::array(
[
['id' => 1, 'array' => ['a' => 1, 'b' => 2, 'c' => 3]],
['id' => 2],
['id' => 3],
['id' => 4, 'array' => ['a' => 1, 'b' => 2, 'c' => 3]],
]
)
)
->withEntry('row', ref('row')->unpack())
->renameAll('row.', '')
->withEntry(
'result',
when(
all(ref('id')->isEven(), ref('array')->exists('b')),
lit('found'),
lit('not found')
)
)
->drop('row', 'array')
->write(To::memory($memory = new ArrayMemory()))
->run();

$this->assertSame(
[
['id' => 1, 'result' => 'not found'],
['id' => 2, 'result' => 'not found'],
['id' => 3, 'result' => 'not found'],
['id' => 4, 'result' => 'found'],
],
$memory->data
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

declare(strict_types=1);

namespace Flow\ETL\Tests\Integration\Row\Reference\Expression;

use function Flow\ETL\DSL\any;
use function Flow\ETL\DSL\lit;
use function Flow\ETL\DSL\ref;
use function Flow\ETL\DSL\when;
use Flow\ETL\DSL\From;
use Flow\ETL\DSL\To;
use Flow\ETL\Flow;
use Flow\ETL\Memory\ArrayMemory;
use PHPUnit\Framework\TestCase;

final class AnyTest extends TestCase
{
public function test_any_case_found() : void
{
(new Flow())
->read(
From::array(
[
['id' => 1, 'array' => ['a' => 1, 'b' => 2, 'c' => 3]],
['id' => 2],
['id' => 3],
['id' => 4, 'array' => ['a' => 1, 'b' => 2, 'c' => 3]],
]
)
)
->withEntry('row', ref('row')->unpack())
->renameAll('row.', '')
->withEntry(
'result',
when(
any(ref('id')->isEven(), ref('array')->exists('b')),
lit('found'),
lit('not found')
)
)
->drop('row', 'array')
->write(To::memory($memory = new ArrayMemory()))
->run();

$this->assertSame(
[
['id' => 1, 'result' => 'found'],
['id' => 2, 'result' => 'found'],
['id' => 3, 'result' => 'not found'],
['id' => 4, 'result' => 'found'],
],
$memory->data
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<?php

declare(strict_types=1);

namespace Flow\ETL\Tests\Integration\Row\Reference\Expression;

use function Flow\ETL\DSL\lit;
use function Flow\ETL\DSL\ref;
use function Flow\ETL\DSL\when;
use Flow\ETL\DSL\From;
use Flow\ETL\DSL\To;
use Flow\ETL\Flow;
use Flow\ETL\Memory\ArrayMemory;
use PHPUnit\Framework\TestCase;

final class WhenTest extends TestCase
{
public function test_when_odd_even() : void
{
(new Flow())
->read(From::sequence_number('id', 1, 10))
->collect()
->withEntry(
'type',
when(
ref('id')->isOdd(),
lit('odd'),
lit('even')
)
)
->write(To::memory($memory = new ArrayMemory()))
->run();

$this->assertSame(
[
['id' => 1, 'type' => 'odd'],
['id' => 2, 'type' => 'even'],
['id' => 3, 'type' => 'odd'],
['id' => 4, 'type' => 'even'],
['id' => 5, 'type' => 'odd'],
['id' => 6, 'type' => 'even'],
['id' => 7, 'type' => 'odd'],
['id' => 8, 'type' => 'even'],
['id' => 9, 'type' => 'odd'],
['id' => 10, 'type' => 'even'],
],
$memory->data
);
}
}

0 comments on commit f7be742

Please sign in to comment.