Skip to content

Commit f4cbff2

Browse files
committed
Updated assertions
1 parent 0648e67 commit f4cbff2

12 files changed

+729
-129
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
PHPUnit extension for Middleware
2+
===
3+
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Kiboko\Component\PHPUnitExtension\Assert;
4+
5+
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineExtractsLike;
6+
use Kiboko\Contract\Pipeline\ExtractorInterface;
7+
use PHPUnit\Framework\Constraint\Constraint;
8+
use PHPUnit\Framework\Constraint\IsEqual;
9+
use PHPUnit\Framework\Constraint\IsIdentical;
10+
use PHPUnit\Framework\Constraint\LogicalNot;
11+
12+
trait ExtractorAssertTrait
13+
{
14+
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
15+
16+
protected function assertExtractorExtractsLike(iterable $expected, ExtractorInterface $extractor, string $message = '')
17+
{
18+
$this->assertThat($extractor, new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item)), $message);
19+
}
20+
21+
protected function assertExtractorDoesNotExtractLike(iterable $expected, ExtractorInterface $extractor, string $message = '')
22+
{
23+
$this->assertThat($extractor, new LogicalNot(
24+
new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item))
25+
), $message);
26+
}
27+
28+
protected function assertExtractorExtractsExactly(iterable $expected, ExtractorInterface $extractor, string $message = '')
29+
{
30+
$this->assertThat($extractor, new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item)), $message);
31+
}
32+
33+
protected function assertExtractorDoesNotExtractExactly(iterable $expected, ExtractorInterface $extractor, string $message = '')
34+
{
35+
$this->assertThat($extractor, new LogicalNot(
36+
new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item))
37+
), $message);
38+
}
39+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Kiboko\Component\PHPUnitExtension\Assert;
4+
5+
use Kiboko\Component\PHPUnitExtension\Constraint\Builder\BuilderProducesCodeThat;
6+
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineExtractsLike;
7+
use PhpParser\Builder as DefaultBuilder;
8+
use PHPUnit\Framework\Constraint\Constraint;
9+
use PHPUnit\Framework\Constraint\IsEqual;
10+
use PHPUnit\Framework\Constraint\IsIdentical;
11+
use PHPUnit\Framework\Constraint\LogicalNot;
12+
13+
trait ExtractorBuilderAssertTrait
14+
{
15+
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
16+
17+
protected function assertBuildsExtractorExtractsLike(iterable $expected, DefaultBuilder $builder, string $message = '')
18+
{
19+
$this->assertThat($builder, new BuilderProducesCodeThat(
20+
new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item))
21+
), $message);
22+
}
23+
24+
protected function assertBuildsExtractorDoesNotExtractLike(iterable $expected, DefaultBuilder $builder, string $message = '')
25+
{
26+
$this->assertThat($builder, new LogicalNot(
27+
new BuilderProducesCodeThat(
28+
new PipelineExtractsLike($expected, fn ($item) => new IsEqual($item))
29+
),
30+
), $message);
31+
}
32+
33+
protected function assertBuildsExtractorExtractsExactly(iterable $expected, DefaultBuilder $builder, string $message = '')
34+
{
35+
$this->assertThat($builder, new BuilderProducesCodeThat(
36+
new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item))
37+
), $message);
38+
}
39+
40+
protected function assertBuildsExtractorDoesNotExtractExactly(iterable $expected, DefaultBuilder $builder, string $message = '')
41+
{
42+
$this->assertThat($builder, new LogicalNot(
43+
new BuilderProducesCodeThat(
44+
new PipelineExtractsLike($expected, fn ($item) => new IsIdentical($item))
45+
),
46+
), $message);
47+
}
48+
}

src/Assert/LoaderAssertTrait.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Kiboko\Component\PHPUnitExtension\Assert;
4+
5+
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineLoadsLike;
6+
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineWritesFile;
7+
use Kiboko\Contract\Pipeline\LoaderInterface;
8+
use PHPUnit\Framework\Constraint\Constraint;
9+
use PHPUnit\Framework\Constraint\IsEqual;
10+
use PHPUnit\Framework\Constraint\IsIdentical;
11+
use PHPUnit\Framework\Constraint\LogicalNot;
12+
13+
trait LoaderAssertTrait
14+
{
15+
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
16+
17+
protected function assertLoaderLoadsLike(iterable $expected, iterable $input, LoaderInterface $loader, string $message = '')
18+
{
19+
$this->assertThat($loader, new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item)), $message);
20+
}
21+
22+
protected function assertLoaderDoesNotLoadLike(iterable $expected, iterable $input, LoaderInterface $loader, string $message = '')
23+
{
24+
$this->assertThat($loader, new LogicalNot(
25+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item))
26+
), $message);
27+
}
28+
29+
protected function assertLoaderLoadsExactly(iterable $expected, iterable $input, LoaderInterface $loader, string $message = '')
30+
{
31+
$this->assertThat($loader, new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item)), $message);
32+
}
33+
34+
protected function assertLoaderDoesNotLoadExactly(iterable $expected, iterable $input, LoaderInterface $loader, string $message = '')
35+
{
36+
$this->assertThat($loader, new LogicalNot(
37+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item))
38+
), $message);
39+
}
40+
41+
protected function assertLoaderProducesFile(string $expected, iterable $input, LoaderInterface $loader, string $message = '')
42+
{
43+
$this->assertThat($loader, new PipelineWritesFile($input, $expected), $message);
44+
}
45+
46+
protected function assertLoaderDoesNotProduceFile(string $expected, iterable $input, LoaderInterface $loader, string $message = '')
47+
{
48+
$this->assertThat($loader, new LogicalNot(
49+
new PipelineWritesFile($input, $expected),
50+
), $message);
51+
}
52+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Kiboko\Component\PHPUnitExtension\Assert;
4+
5+
use Kiboko\Component\PHPUnitExtension\Constraint\Builder\BuilderProducesCodeThat;
6+
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineLoadsLike;
7+
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineWritesFile;
8+
use PhpParser\Builder as DefaultBuilder;
9+
use PHPUnit\Framework\Constraint\Constraint;
10+
use PHPUnit\Framework\Constraint\IsEqual;
11+
use PHPUnit\Framework\Constraint\IsIdentical;
12+
use PHPUnit\Framework\Constraint\LogicalNot;
13+
14+
trait LoaderBuilderAssertTrait
15+
{
16+
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
17+
18+
protected function assertBuildsLoaderLoadsLike(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
19+
{
20+
$this->assertThat($builder, new BuilderProducesCodeThat(
21+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item))
22+
), $message);
23+
}
24+
25+
protected function assertBuildsLoaderDoesNotLoadLike(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
26+
{
27+
$this->assertThat($builder, new LogicalNot(
28+
new BuilderProducesCodeThat(
29+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsEqual($item))
30+
),
31+
), $message);
32+
}
33+
34+
protected function assertBuildsLoaderLoadsExactly(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
35+
{
36+
$this->assertThat($builder, new BuilderProducesCodeThat(
37+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item))
38+
), $message);
39+
}
40+
41+
protected function assertBuildsLoaderDoesNotLoadExactly(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
42+
{
43+
$this->assertThat($builder, new LogicalNot(
44+
new BuilderProducesCodeThat(
45+
new PipelineLoadsLike($expected, $input, fn ($item) => new IsIdentical($item))
46+
),
47+
), $message);
48+
}
49+
50+
protected function assertBuildsLoaderProducesFile(string $expected, iterable $input, DefaultBuilder $builder, string $message = '')
51+
{
52+
$this->assertThat($builder, new BuilderProducesCodeThat(
53+
new PipelineWritesFile($input, $expected),
54+
), $message);
55+
}
56+
57+
protected function assertBuildsLoaderDoesNotProduceFile(string $expected, iterable $input, DefaultBuilder $builder, string $message = '')
58+
{
59+
$this->assertThat($builder, new LogicalNot(
60+
new BuilderProducesCodeThat(
61+
new PipelineWritesFile($input, $expected),
62+
),
63+
), $message);
64+
}
65+
}

src/Assert/PipelineAssertTrait.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Kiboko\Component\PHPUnitExtension\Assert;
4+
5+
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\IteratesLike;
6+
use PHPUnit\Framework\Constraint\Constraint;
7+
use PHPUnit\Framework\Constraint\IsEqual;
8+
use PHPUnit\Framework\Constraint\IsIdentical;
9+
use PHPUnit\Framework\Constraint\LogicalNot;
10+
11+
trait PipelineAssertTrait
12+
{
13+
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
14+
15+
protected function assertDoesIterateLike(iterable $expected, iterable $actual, $message = '')
16+
{
17+
$this->assertThat($actual, new IteratesLike($expected, fn ($item) => new IsEqual($item)), $message);
18+
}
19+
20+
protected function assertDoesIterateExactly(iterable $expected, iterable $actual, $message = '')
21+
{
22+
$this->assertThat($actual, new IteratesLike($expected, fn ($item) => new IsIdentical($item)), $message);
23+
}
24+
25+
protected function assertDoesNotIterateLike(iterable $expected, iterable $actual, $message = '')
26+
{
27+
$this->assertThat($actual, new LogicalNot(
28+
new IteratesLike($expected, fn ($item) => new IsEqual($item)),
29+
), $message);
30+
}
31+
32+
protected function assertDoesNotIterateExactly(iterable $expected, iterable $actual, $message = '')
33+
{
34+
$this->assertThat($actual, new LogicalNot(
35+
new IteratesLike($expected, fn ($item) => new IsIdentical($item)),
36+
), $message);
37+
}
38+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Kiboko\Component\PHPUnitExtension\Assert;
4+
5+
use Kiboko\Component\PHPUnitExtension\Constraint\Builder\BuilderProducesCodeThat;
6+
use PhpParser\Builder as DefaultBuilder;
7+
use PHPUnit\Framework\Constraint\Constraint;
8+
use PHPUnit\Framework\Constraint\IsInstanceOf;
9+
use PHPUnit\Framework\Constraint\LogicalNot;
10+
11+
trait PipelineBuilderAssertTrait
12+
{
13+
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
14+
15+
protected function assertBuilderProducesInstanceOf(string $expected, DefaultBuilder $builder, string $message = '')
16+
{
17+
$this->assertThat($builder, new BuilderProducesCodeThat(
18+
new IsInstanceOf($expected)
19+
), $message);
20+
}
21+
22+
protected function assertBuilderProducesNotInstanceOf(string $expected, DefaultBuilder $builder, string $message = '')
23+
{
24+
$this->assertThat($builder, new LogicalNot(
25+
new BuilderProducesCodeThat(
26+
new IsInstanceOf($expected)
27+
),
28+
), $message);
29+
}
30+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Kiboko\Component\PHPUnitExtension\Assert;
4+
5+
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineTransformsLike;
6+
use Kiboko\Contract\Pipeline\TransformerInterface;
7+
use PHPUnit\Framework\Constraint\Constraint;
8+
use PHPUnit\Framework\Constraint\IsEqual;
9+
use PHPUnit\Framework\Constraint\IsIdentical;
10+
use PHPUnit\Framework\Constraint\LogicalNot;
11+
12+
trait TransformerAssertTrait
13+
{
14+
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
15+
16+
protected function assertTransformerTransformsLike(iterable $expected, iterable $input, TransformerInterface $transformer, string $message = '')
17+
{
18+
$this->assertThat($transformer, new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item)), $message);
19+
}
20+
21+
protected function assertTransformerDoesNotTransformLike(iterable $expected, iterable $input, TransformerInterface $transformer, string $message = '')
22+
{
23+
$this->assertThat($transformer, new LogicalNot(
24+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item))
25+
), $message);
26+
}
27+
28+
protected function assertTransformerTransformsExactly(iterable $expected, iterable $input, TransformerInterface $transformer, string $message = '')
29+
{
30+
$this->assertThat($transformer, new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item)), $message);
31+
}
32+
33+
protected function assertTransformerDoesNotTransformExactly(iterable $expected, iterable $input, TransformerInterface $transformer, string $message = '')
34+
{
35+
$this->assertThat($transformer, new LogicalNot(
36+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item))
37+
), $message);
38+
}
39+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php declare(strict_types=1);
2+
3+
namespace Kiboko\Component\PHPUnitExtension\Assert;
4+
5+
use Kiboko\Component\PHPUnitExtension\Constraint\Builder\BuilderProducesCodeThat;
6+
use Kiboko\Component\PHPUnitExtension\Constraint\Pipeline\PipelineTransformsLike;
7+
use PhpParser\Builder as DefaultBuilder;
8+
use PHPUnit\Framework\Constraint\Constraint;
9+
use PHPUnit\Framework\Constraint\IsEqual;
10+
use PHPUnit\Framework\Constraint\IsIdentical;
11+
use PHPUnit\Framework\Constraint\LogicalNot;
12+
13+
trait TransformerBuilderAssertTrait
14+
{
15+
abstract public static function assertThat($value, Constraint $constraint, string $message = ''): void;
16+
17+
protected function assertBuildsTransformerTransformsLike(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
18+
{
19+
$this->assertThat($builder, new BuilderProducesCodeThat(
20+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item))
21+
), $message);
22+
}
23+
24+
protected function assertBuildsTransformerDoesNotTransformLike(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
25+
{
26+
$this->assertThat($builder, new LogicalNot(
27+
new BuilderProducesCodeThat(
28+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsEqual($item))
29+
),
30+
), $message);
31+
}
32+
33+
protected function assertBuildsTransformerTransformsExactly(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
34+
{
35+
$this->assertThat($builder, new BuilderProducesCodeThat(
36+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item))
37+
), $message);
38+
}
39+
40+
protected function assertBuildsTransformerDoesNotTransformExactly(iterable $expected, iterable $input, DefaultBuilder $builder, string $message = '')
41+
{
42+
$this->assertThat($builder, new LogicalNot(
43+
new BuilderProducesCodeThat(
44+
new PipelineTransformsLike($expected, $input, fn ($item) => new IsIdentical($item))
45+
),
46+
), $message);
47+
}
48+
}

0 commit comments

Comments
 (0)