handle($request); $this->assertInstanceOf(ListPromptsResult::class, $response->result); $this->assertEquals(1, $response->getId()); $this->assertEquals([], $response->result->prompts); } public function testHandleReturnAll() { $item = self::createMetadataItem(); $handler = new ListPromptsHandler(new PromptChain([$item])); $request = new ListPromptsRequest(); NSA::setProperty($request, 'id', 1); $response = $handler->handle($request); $this->assertInstanceOf(ListPromptsResult::class, $response->result); $this->assertCount(1, $response->result->prompts); $this->assertNull($response->result->nextCursor); } public function testHandlePagination() { $item = self::createMetadataItem(); $handler = new ListPromptsHandler(new PromptChain([$item, $item]), 2); $request = new ListPromptsRequest(); NSA::setProperty($request, 'id', 1); $response = $handler->handle($request); $this->assertInstanceOf(ListPromptsResult::class, $response->result); $this->assertCount(2, $response->result->prompts); $this->assertNotNull($response->result->nextCursor); } private static function createMetadataItem(): MetadataInterface { return new class implements MetadataInterface { public function getName(): string { return 'greet'; } public function getDescription(): string { return 'Greet a person with a nice message'; } public function getArguments(): array { return [ [ 'name' => 'first name', 'description' => 'The name of the person to greet', 'required' => false, ], ]; } }; } }