feat: getTasks

This commit is contained in:
Justin Lin committed 2025-04-21 18:31:33 +08:00
1 parent 254e4f75ed
commit d2cdd1304a
4 files changed
+74 -1

No files matched your search

+39
View File
@@ -12,6 +12,7 @@ const quest: IQuest = {
stages: [
{
id: 'stage1',
name: 'Stage 1',
requirements: [],
condition: {
command: 'echo start',
@@ -20,6 +21,7 @@ const quest: IQuest = {
},
{
id: 'stage2',
name: 'Stage 2',
requirements: ['stage1'],
condition: {
command: 'ls',
@@ -28,6 +30,7 @@ const quest: IQuest = {
},
{
id: 'stage3',
name: 'Stage 3',
requirements: ['stage1'],
condition: {
command: 'mkdir hello',
@@ -36,6 +39,7 @@ const quest: IQuest = {
},
{
id: 'stage4',
name: 'Stage 4',
requirements: ['stage2', 'stage3'],
condition: {
command: 'echo finish',
@@ -129,4 +133,39 @@ describe('Session', () => {
{ type: 'narrative', content: 'Narrative 2' },
])
})
it('should return tasks', () => {
const session = new Session(
{
completedEvents: [],
},
quest,
new MockFileChecker()
)
expect(session.getTasks()).toEqual([
{ id: 'stage1', name: 'Stage 1', completed: false },
])
session.complete('stage1')
expect(session.getTasks()).toEqual([
{ id: 'stage1', name: 'Stage 1', completed: true },
{ id: 'stage2', name: 'Stage 2', completed: false },
{ id: 'stage3', name: 'Stage 3', completed: false },
])
session.complete('stage2')
expect(session.getTasks()).toEqual([
{ id: 'stage1', name: 'Stage 1', completed: true },
{ id: 'stage2', name: 'Stage 2', completed: true },
{ id: 'stage3', name: 'Stage 3', completed: false },
])
session.complete('stage3')
expect(session.getTasks()).toEqual([
{ id: 'stage1', name: 'Stage 1', completed: true },
{ id: 'stage2', name: 'Stage 2', completed: true },
{ id: 'stage3', name: 'Stage 3', completed: true },
{ id: 'stage4', name: 'Stage 4', completed: false },
])
})
})