Files
DataEnrichmentKit/tests/EnricherTest.php
2025-11-27 02:10:03 +04:00

117 lines
2.9 KiB
PHP

<?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)
];
}
}