Skip to content

Commit 5365b6c

Browse files
committed
Fixed dependency on php-etl/pipeline
1 parent ed2aeff commit 5365b6c

10 files changed

+79
-75
lines changed

src/Assert/ExtractorAssertTrait.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineExtractsLike;
66
use Kiboko\Contract\Pipeline\ExtractorInterface;
7+
use Kiboko\Contract\Pipeline\PipelineRunnerInterface;
78
use PHPUnit\Framework\Constraint\Constraint;
89
use PHPUnit\Framework\Constraint\IsEqual;
910
use PHPUnit\Framework\Constraint\IsIdentical;
@@ -12,28 +13,29 @@
1213
trait ExtractorAssertTrait
1314
{
1415
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
16+
abstract public function pipelineRunner(): PipelineRunnerInterface;
1517

1618
protected function assertExtractorExtractsLike(iterable $expected, ExtractorInterface $extractor, string $message = '')
1719
{
18-
$this->assertThat($extractor, new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item)), $message);
20+
$this->assertThat($extractor, new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item), $this->pipelineRunner()), $message);
1921
}
2022

2123
protected function assertExtractorDoesNotExtractLike(iterable $expected, ExtractorInterface $extractor, string $message = '')
2224
{
2325
$this->assertThat($extractor, new LogicalNot(
24-
new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item))
26+
new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item), $this->pipelineRunner())
2527
), $message);
2628
}
2729

2830
protected function assertExtractorExtractsExactly(iterable $expected, ExtractorInterface $extractor, string $message = '')
2931
{
30-
$this->assertThat($extractor, new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item)), $message);
32+
$this->assertThat($extractor, new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item), $this->pipelineRunner()), $message);
3133
}
3234

3335
protected function assertExtractorDoesNotExtractExactly(iterable $expected, ExtractorInterface $extractor, string $message = '')
3436
{
3537
$this->assertThat($extractor, new LogicalNot(
36-
new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item))
38+
new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item), $this->pipelineRunner())
3739
), $message);
3840
}
3941
}

src/Assert/ExtractorBuilderAssertTrait.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Kiboko\Component\PHPUnitExtension\Constraint\Builder\BuilderProducesCodeThat;
66
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineExtractsLike;
7+
use Kiboko\Contract\Pipeline\PipelineRunnerInterface;
78
use PhpParser\Builder as DefaultBuilder;
89
use PHPUnit\Framework\Constraint\Constraint;
910
use PHPUnit\Framework\Constraint\IsEqual;
@@ -13,35 +14,36 @@
1314
trait ExtractorBuilderAssertTrait
1415
{
1516
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
17+
abstract public function pipelineRunner(): PipelineRunnerInterface;
1618

1719
protected function assertBuildsExtractorExtractsLike(iterable $expected, DefaultBuilder $builder, string $message = '')
1820
{
1921
$this->assertThat($builder, new BuilderProducesCodeThat(
20-
new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item))
22+
new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item), $this->pipelineRunner())
2123
), $message);
2224
}
2325

2426
protected function assertBuildsExtractorDoesNotExtractLike(iterable $expected, DefaultBuilder $builder, string $message = '')
2527
{
2628
$this->assertThat($builder, new LogicalNot(
2729
new BuilderProducesCodeThat(
28-
new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item))
30+
new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item), $this->pipelineRunner())
2931
),
3032
), $message);
3133
}
3234

3335
protected function assertBuildsExtractorExtractsExactly(iterable $expected, DefaultBuilder $builder, string $message = '')
3436
{
3537
$this->assertThat($builder, new BuilderProducesCodeThat(
36-
new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item))
38+
new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item), $this->pipelineRunner())
3739
), $message);
3840
}
3941

4042
protected function assertBuildsExtractorDoesNotExtractExactly(iterable $expected, DefaultBuilder $builder, string $message = '')
4143
{
4244
$this->assertThat($builder, new LogicalNot(
4345
new BuilderProducesCodeThat(
44-
new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item))
46+
new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item), $this->pipelineRunner())
4547
),
4648
), $message);
4749
}

src/Assert/LoaderAssertTrait.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineLoadsLike;
66
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineWritesFile;
77
use Kiboko\Contract\Pipeline\LoaderInterface;
8+
use Kiboko\Contract\Pipeline\PipelineRunnerInterface;
89
use PHPUnit\Framework\Constraint\Constraint;
910
use PHPUnit\Framework\Constraint\IsEqual;
1011
use PHPUnit\Framework\Constraint\IsIdentical;
@@ -13,40 +14,41 @@
1314
trait LoaderAssertTrait
1415
{
1516
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
17+
abstract public function pipelineRunner(): PipelineRunnerInterface;
1618

1719
protected function assertLoaderLoadsLike(iterable $expected, iterable $input, LoaderInterface $loader, string $message = '')
1820
{
19-
$this->assertThat($loader, new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item)), $message);
21+
$this->assertThat($loader, new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item), $this->pipelineRunner()), $message);
2022
}
2123

2224
protected function assertLoaderDoesNotLoadLike(iterable $expected, iterable $input, LoaderInterface $loader, string $message = '')
2325
{
2426
$this->assertThat($loader, new LogicalNot(
25-
new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item))
27+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item), $this->pipelineRunner())
2628
), $message);
2729
}
2830

2931
protected function assertLoaderLoadsExactly(iterable $expected, iterable $input, LoaderInterface $loader, string $message = '')
3032
{
31-
$this->assertThat($loader, new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item)), $message);
33+
$this->assertThat($loader, new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item), $this->pipelineRunner()), $message);
3234
}
3335

3436
protected function assertLoaderDoesNotLoadExactly(iterable $expected, iterable $input, LoaderInterface $loader, string $message = '')
3537
{
3638
$this->assertThat($loader, new LogicalNot(
37-
new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item))
39+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item), $this->pipelineRunner())
3840
), $message);
3941
}
4042

4143
protected function assertLoaderProducesFile(string $expected, iterable $input, LoaderInterface $loader, string $message = '')
4244
{
43-
$this->assertThat($loader, new PipelineWritesFile($input, $expected), $message);
45+
$this->assertThat($loader, new PipelineWritesFile($input, $expected, $this->pipelineRunner()), $message);
4446
}
4547

4648
protected function assertLoaderDoesNotProduceFile(string $expected, iterable $input, LoaderInterface $loader, string $message = '')
4749
{
4850
$this->assertThat($loader, new LogicalNot(
49-
new PipelineWritesFile($input, $expected),
51+
new PipelineWritesFile($input, $expected, $this->pipelineRunner()),
5052
), $message);
5153
}
5254
}

src/Assert/LoaderBuilderAssertTrait.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Kiboko\Component\PHPUnitExtension\Constraint\Builder\BuilderProducesCodeThat;
66
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineLoadsLike;
77
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineWritesFile;
8+
use Kiboko\Contract\Pipeline\PipelineRunnerInterface;
89
use PhpParser\Builder as DefaultBuilder;
910
use PHPUnit\Framework\Constraint\Constraint;
1011
use PHPUnit\Framework\Constraint\IsEqual;
@@ -14,51 +15,52 @@
1415
trait LoaderBuilderAssertTrait
1516
{
1617
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
18+
abstract public function pipelineRunner(): PipelineRunnerInterface;
1719

1820
protected function assertBuildsLoaderLoadsLike(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
1921
{
2022
$this->assertThat($builder, new BuilderProducesCodeThat(
21-
new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item))
23+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item), $this->pipelineRunner())
2224
), $message);
2325
}
2426

2527
protected function assertBuildsLoaderDoesNotLoadLike(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
2628
{
2729
$this->assertThat($builder, new LogicalNot(
2830
new BuilderProducesCodeThat(
29-
new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item))
31+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item), $this->pipelineRunner())
3032
),
3133
), $message);
3234
}
3335

3436
protected function assertBuildsLoaderLoadsExactly(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
3537
{
3638
$this->assertThat($builder, new BuilderProducesCodeThat(
37-
new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item))
39+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item), $this->pipelineRunner())
3840
), $message);
3941
}
4042

4143
protected function assertBuildsLoaderDoesNotLoadExactly(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
4244
{
4345
$this->assertThat($builder, new LogicalNot(
4446
new BuilderProducesCodeThat(
45-
new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item))
47+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item), $this->pipelineRunner())
4648
),
4749
), $message);
4850
}
4951

5052
protected function assertBuildsLoaderProducesFile(string $expected, iterable $input, DefaultBuilder $builder, string $message = '')
5153
{
5254
$this->assertThat($builder, new BuilderProducesCodeThat(
53-
new PipelineWritesFile($input, $expected),
55+
new PipelineWritesFile($input, $expected, $this->pipelineRunner()),
5456
), $message);
5557
}
5658

5759
protected function assertBuildsLoaderDoesNotProduceFile(string $expected, iterable $input, DefaultBuilder $builder, string $message = '')
5860
{
5961
$this->assertThat($builder, new LogicalNot(
6062
new BuilderProducesCodeThat(
61-
new PipelineWritesFile($input, $expected),
63+
new PipelineWritesFile($input, $expected, $this->pipelineRunner()),
6264
),
6365
), $message);
6466
}

src/Assert/TransformerAssertTrait.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Kiboko\Component\PHPUnitExtension\Assert;
44

55
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineTransformsLike;
6+
use Kiboko\Contract\Pipeline\PipelineRunnerInterface;
67
use Kiboko\Contract\Pipeline\TransformerInterface;
78
use PHPUnit\Framework\Constraint\Constraint;
89
use PHPUnit\Framework\Constraint\IsEqual;
@@ -12,28 +13,29 @@
1213
trait TransformerAssertTrait
1314
{
1415
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
16+
abstract public function pipelineRunner(): PipelineRunnerInterface;
1517

1618
protected function assertTransformerTransformsLike(iterable $expected, iterable $input, TransformerInterface $transformer, string $message = '')
1719
{
18-
$this->assertThat($transformer, new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item)), $message);
20+
$this->assertThat($transformer, new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item), $this->pipelineRunner()), $message);
1921
}
2022

2123
protected function assertTransformerDoesNotTransformLike(iterable $expected, iterable $input, TransformerInterface $transformer, string $message = '')
2224
{
2325
$this->assertThat($transformer, new LogicalNot(
24-
new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item))
26+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item), $this->pipelineRunner())
2527
), $message);
2628
}
2729

2830
protected function assertTransformerTransformsExactly(iterable $expected, iterable $input, TransformerInterface $transformer, string $message = '')
2931
{
30-
$this->assertThat($transformer, new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item)), $message);
32+
$this->assertThat($transformer, new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item), $this->pipelineRunner()), $message);
3133
}
3234

3335
protected function assertTransformerDoesNotTransformExactly(iterable $expected, iterable $input, TransformerInterface $transformer, string $message = '')
3436
{
3537
$this->assertThat($transformer, new LogicalNot(
36-
new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item))
38+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item), $this->pipelineRunner())
3739
), $message);
3840
}
3941
}

src/Assert/TransformerBuilderAssertTrait.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Kiboko\Component\PHPUnitExtension\Constraint\Builder\BuilderProducesCodeThat;
66
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineTransformsLike;
7+
use Kiboko\Contract\Pipeline\PipelineRunnerInterface;
78
use PhpParser\Builder as DefaultBuilder;
89
use PHPUnit\Framework\Constraint\Constraint;
910
use PHPUnit\Framework\Constraint\IsEqual;
@@ -13,35 +14,36 @@
1314
trait TransformerBuilderAssertTrait
1415
{
1516
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
17+
abstract public function pipelineRunner(): PipelineRunnerInterface;
1618

1719
protected function assertBuildsTransformerTransformsLike(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
1820
{
1921
$this->assertThat($builder, new BuilderProducesCodeThat(
20-
new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item))
22+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item), $this->pipelineRunner())
2123
), $message);
2224
}
2325

2426
protected function assertBuildsTransformerDoesNotTransformLike(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
2527
{
2628
$this->assertThat($builder, new LogicalNot(
2729
new BuilderProducesCodeThat(
28-
new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item))
30+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item), $this->pipelineRunner())
2931
),
3032
), $message);
3133
}
3234

3335
protected function assertBuildsTransformerTransformsExactly(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
3436
{
3537
$this->assertThat($builder, new BuilderProducesCodeThat(
36-
new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item))
38+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item), $this->pipelineRunner())
3739
), $message);
3840
}
3941

4042
protected function assertBuildsTransformerDoesNotTransformExactly(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
4143
{
4244
$this->assertThat($builder, new LogicalNot(
4345
new BuilderProducesCodeThat(
44-
new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item))
46+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item), $this->pipelineRunner())
4547
),
4648
), $message);
4749
}

src/Constraint/Pipeline/PipelineExtractsLike.php

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
namespace Kiboko\Component\PHPUnitExtension\Constraint\Pipeline;
44

5-
use Kiboko\Component\Pipeline\PipelineRunner;
65
use Kiboko\Contract\Pipeline\ExtractorInterface;
76
use Kiboko\Contract\Pipeline\NullRejection;
87
use Kiboko\Contract\Pipeline\NullState;
8+
use Kiboko\Contract\Pipeline\PipelineRunnerInterface;
99
use PHPUnit\Framework\Constraint\Constraint;
1010

1111
/** @template Type */
@@ -17,7 +17,8 @@ final class PipelineExtractsLike extends Constraint
1717
/** @param list<Type> $expected */
1818
public function __construct(
1919
private iterable $expected,
20-
callable $itemConstraintFactory
20+
callable $itemConstraintFactory,
21+
private PipelineRunnerInterface $runner,
2122
) {
2223
$this->itemConstraintFactory = $itemConstraintFactory;
2324
}
@@ -61,32 +62,13 @@ public function matches($other): bool
6162
]));
6263
}
6364

64-
$runner = new PipelineRunner(null);
6565
$extract = $other->extract();
66-
if (is_array($extract)) {
67-
$iterator = $runner->run(
68-
new \ArrayIterator($extract),
69-
$this->passThroughCoroutine(),
70-
new NullRejection(),
71-
new NullState(),
72-
);
73-
} elseif ($extract instanceof \Iterator) {
74-
$iterator = $runner->run(
75-
$extract,
76-
$this->passThroughCoroutine(),
77-
new NullRejection(),
78-
new NullState(),
79-
);
80-
} elseif ($extract instanceof \Traversable) {
81-
$iterator = $runner->run(
82-
new \IteratorIterator($extract),
83-
$this->passThroughCoroutine(),
84-
new NullRejection(),
85-
new NullState(),
86-
);
87-
} else {
88-
throw new \RuntimeException('Invalid data source, expecting array or Traversable.');
89-
}
66+
$iterator = $this->runner->run(
67+
$this->asIterator($extract),
68+
$this->passThroughCoroutine(),
69+
new NullRejection(),
70+
new NullState(),
71+
);
9072
$both->attachIterator($iterator);
9173

9274
$index = 0;

0 commit comments

Comments
 (0)