feat: include responses from Exceptions

This commit is contained in:
Justin Lin committed 2025-04-21 12:31:53 +08:00
1 parent 0f0f43b838
commit 254e4f75ed
3 files changed
+18 -13

No files matched your search

+3 -12
View File
@@ -1,14 +1,7 @@
/* eslint-disable no-await-in-loop */
import { Condition } from './condition/Condition'
import { Event } from './Event'
import { GlobalException, StageException } from './Exception'
import {
IQuest,
IStage,
IFileExistenceChecker,
ICommand,
IResponse,
} from './schema'
import { GlobalException } from './Exception'
import { IQuest, IFileExistenceChecker, ICommand, IResponse } from './schema'
import { Stage } from './Stage'
export class Quest {
@@ -72,8 +65,6 @@ export class Quest {
}
getResponses(completed: string[]): IResponse[] {
return this.quest.stages
.filter((stage) => completed.includes(stage.id))
.map((stage) => stage.response)
return completed.map((id) => this.events.get(id)!.getResponse())
}
}
-1
View File
@@ -72,7 +72,6 @@ describe('exceptions', () => {
)
expect(await session.runCommand({ command: 'ls' })).toBe('exception1')
await session.runCommand({ command: 'echo start' })
console.log('completed', session.completedEvents)
expect(await session.runCommand({ command: 'ls' })).toBe('stage2')
})
+15
View File
@@ -43,6 +43,19 @@ const quest: IQuest = {
response: { type: 'narrative', content: 'Narrative 4' },
},
],
exceptions: [
{
id: 'exception1',
condition: {
command: 'rm',
},
response: {
type: 'narrative',
content: 'Exception 1',
},
requirements: [],
},
],
}
describe('Session', () => {
@@ -108,9 +121,11 @@ describe('Session', () => {
},
])
session.complete('exception1')
session.complete('stage2')
expect(session.getResponses()).toEqual([
{ type: 'narrative', content: 'Narrative 1' },
{ type: 'narrative', content: 'Exception 1' },
{ type: 'narrative', content: 'Narrative 2' },
])
})