67 lines
2.0 KiB
PHP
67 lines
2.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Diffhead\PHP\DataEnrichmentKit\Tests\Service;
|
|
|
|
use Diffhead\PHP\DataEnrichmentKit\Object\Request;
|
|
use Diffhead\PHP\DataEnrichmentKit\Service\Parser;
|
|
use Diffhead\PHP\DataEnrichmentKit\Exception\InvalidRequest;
|
|
use Diffhead\PHP\DataEnrichmentKit\Interface\Parser as ParserInterface;
|
|
use PHPUnit\Framework\Attributes\CoversClass;
|
|
use PHPUnit\Framework\Attributes\CoversMethod;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
#[CoversClass(Parser::class)]
|
|
#[CoversMethod(Parser::class, 'parse')]
|
|
class ParserTest extends TestCase
|
|
{
|
|
public function testImplementsParserInterface(): void
|
|
{
|
|
$this->assertInstanceOf(ParserInterface::class, new Parser());
|
|
}
|
|
|
|
public function testParseValidInput(): void
|
|
{
|
|
$parser = new Parser();
|
|
$input = 'key1+alias1,key2+alias2@entity,field';
|
|
|
|
$request = $parser->parse($input);
|
|
|
|
$this->assertInstanceOf(Request::class, $request);
|
|
$this->assertEquals('entity', $request->target()->entity());
|
|
$this->assertEquals('field', $request->target()->field());
|
|
|
|
$items = iterator_to_array($request->items()->getIterator());
|
|
$this->assertCount(2, $items);
|
|
$this->assertEquals('key1', $items[0]->key());
|
|
$this->assertEquals('alias1', $items[0]->alias());
|
|
$this->assertEquals('key2', $items[1]->key());
|
|
$this->assertEquals('alias2', $items[1]->alias());
|
|
}
|
|
|
|
public function testParseThrowsExceptionOnEmptyTarget(): void
|
|
{
|
|
$this->expectException(InvalidRequest::class);
|
|
|
|
$parser = new Parser();
|
|
$parser->parse('key1+alias1,key2+alias2@');
|
|
}
|
|
|
|
public function testParseThrowsExceptionOnInvalidTarget(): void
|
|
{
|
|
$this->expectException(InvalidRequest::class);
|
|
|
|
$parser = new Parser();
|
|
$parser->parse('key1+alias1,key2+alias2@entity');
|
|
}
|
|
|
|
public function testParseThrowsExceptionOnEmptyInput(): void
|
|
{
|
|
$this->expectException(InvalidRequest::class);
|
|
|
|
$parser = new Parser();
|
|
$parser->parse('');
|
|
}
|
|
}
|