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