51 lines
1.9 KiB
Gherkin
51 lines
1.9 KiB
Gherkin
@api @chat-api
|
|
Feature: NPC Chat API
|
|
Validates chat endpoints and conversation flow
|
|
|
|
Background:
|
|
Given the API is accessible
|
|
And I am authenticated as "gandalf"
|
|
|
|
Scenario: Chat start returns opener and suggested action
|
|
When I start a chat with character "gandalf"
|
|
Then the response status should be 200
|
|
And the response body should have property "character"
|
|
And the response body should have property "opener"
|
|
And the response body should have property "suggested_action"
|
|
|
|
Scenario: NPC opener returns a non-empty message
|
|
When I start a chat with character "sam"
|
|
Then the response status should be 200
|
|
And the opener should not be empty
|
|
|
|
Scenario: Chat message endpoint returns NPC reply
|
|
Given I have started a chat with character "gandalf"
|
|
When I send a chat message "What should I do next?" to character "gandalf"
|
|
Then the response status should be 200
|
|
And the chat reply should not be empty
|
|
|
|
Scenario: Chat session can be retrieved
|
|
Given I have started a chat with character "gandalf"
|
|
When I GET the chat session for character "gandalf"
|
|
Then the response status should be 200
|
|
And the response body should have property "character"
|
|
And the response body should have property "messages"
|
|
And the response body messages should be an array
|
|
|
|
Scenario: Conversation can be reset
|
|
Given I have started a chat with character "gandalf"
|
|
When I reset the chat session for character "gandalf"
|
|
Then the response status should be less than 300
|
|
|
|
Scenario: Frodo persona is reflective
|
|
When I start a chat with character "frodo"
|
|
Then the response status should be 200
|
|
And the chat response character should be "frodo"
|
|
And the opener should not be empty
|
|
|
|
Scenario: Sam persona is accessible
|
|
When I start a chat with character "sam"
|
|
Then the response status should be 200
|
|
And the chat response character should be "sam"
|
|
And the opener should not be empty
|