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

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('');
}
}