Version 1.0.0
This commit is contained in:
116
tests/EnricherTest.php
Normal file
116
tests/EnricherTest.php
Normal file
@@ -0,0 +1,116 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Diffhead\PHP\DataEnrichmentKit\Tests;
|
||||
|
||||
use Diffhead\PHP\DataEnrichmentKit\Enricher;
|
||||
use Diffhead\PHP\DataEnrichmentKit\Interface\Repository;
|
||||
use Diffhead\PHP\DataEnrichmentKit\Object\Item;
|
||||
use Diffhead\PHP\DataEnrichmentKit\Object\ItemsBag;
|
||||
use Diffhead\PHP\DataEnrichmentKit\Object\Request;
|
||||
use Diffhead\PHP\DataEnrichmentKit\Object\Target;
|
||||
use Diffhead\PHP\DataEnrichmentKit\Service\Enrichment;
|
||||
use Diffhead\PHP\DataEnrichmentKit\Storage\Repositories;
|
||||
use Diffhead\PHP\DataEnrichmentKit\Storage\Requests;
|
||||
use PHPUnit\Framework\Attributes\CoversClass;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
#[CoversClass(Enricher::class)]
|
||||
class EnricherTest extends TestCase
|
||||
{
|
||||
public function testEnrich(): void
|
||||
{
|
||||
$posts = [
|
||||
[
|
||||
'user_id' => 1,
|
||||
'content' => 'Post by user 1'
|
||||
],
|
||||
[
|
||||
'user_id' => 2,
|
||||
'content' => 'Post by user 2'
|
||||
],
|
||||
[
|
||||
'user_id' => 3,
|
||||
'content' => 'Post by user 3'
|
||||
],
|
||||
];
|
||||
|
||||
$enrichment = new Enrichment($this->getRepositories());
|
||||
$enricher = new Enricher($enrichment);
|
||||
|
||||
$items = new ItemsBag();
|
||||
$items->push(new Item('*.user_id', 'user'));
|
||||
|
||||
$target = new Target('user', 'id');
|
||||
|
||||
$requests = new Requests([
|
||||
new Request($items, $target)
|
||||
]);
|
||||
|
||||
$enriched = $enricher->enrich($posts, $requests);
|
||||
|
||||
$this->assertSame(
|
||||
[
|
||||
'user_id' => 1,
|
||||
'content' => 'Post by user 1',
|
||||
'user' => [
|
||||
'id' => 1,
|
||||
'name' => 'Blank.1',
|
||||
],
|
||||
],
|
||||
$enriched[0]
|
||||
);
|
||||
|
||||
$this->assertSame(
|
||||
[
|
||||
'user_id' => 2,
|
||||
'content' => 'Post by user 2',
|
||||
'user' => [
|
||||
'id' => 2,
|
||||
'name' => 'Blank.2',
|
||||
],
|
||||
],
|
||||
$enriched[1]
|
||||
);
|
||||
|
||||
$this->assertSame(
|
||||
[
|
||||
'user_id' => 3,
|
||||
'content' => 'Post by user 3',
|
||||
'user' => [
|
||||
'id' => 3,
|
||||
'name' => 'Blank.3',
|
||||
],
|
||||
],
|
||||
$enriched[2]
|
||||
);
|
||||
}
|
||||
|
||||
private function getRepositories(): Repositories
|
||||
{
|
||||
return new Repositories([
|
||||
'user' => new EnricherTestUserRepository(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
class EnricherTestUserRepository implements Repository
|
||||
{
|
||||
public function getByFieldValues(string $field, array $values): iterable
|
||||
{
|
||||
return [
|
||||
$this->getBlankWithId(1),
|
||||
$this->getBlankWithId(2),
|
||||
$this->getBlankWithId(3),
|
||||
];
|
||||
}
|
||||
|
||||
private function getBlankWithId(int $id): array
|
||||
{
|
||||
return [
|
||||
'id' => $id,
|
||||
'name' => sprintf('Blank.%d', $id)
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user