UNPKG

doggo-quest-logic

Version:

The game logic for the Doggo Quest text-based game sample project

67 lines (66 loc) 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const StoryEngine_1 = require("../../StoryEngine"); const Room_1 = require("../Room"); describe('Crate', () => { let engine; beforeEach(() => { engine = new StoryEngine_1.StoryEngine(); engine.state.isCrateOpen = false; engine.state.currentRoom = Room_1.Room.InCrate; }); describe('navigation', () => { it('Should block navigation to the north when door is closed', () => { const response = engine.getResponseState('go north'); expect(response.state.isCrateOpen).toBe(false); expect(response.state.currentRoom).toBe(Room_1.Room.InCrate); }); it('Should allow navigation to the north when door is open', () => { engine.state.isCrateOpen = true; const response = engine.getResponseState('go north'); expect(response.state.currentRoom).toBe(Room_1.Room.Office); }); }); describe('room', () => { it('Lists objects', () => { const response = engine.getResponse('look'); expect(response).toContain('blanket'); expect(response).toContain('door'); }); }); describe('crate', () => { it('Looks unpleasant', () => { expect(engine.getResponse('look at crate')).toContain('You do not like it'); }); it('Smells like you', () => { expect(engine.getResponse('smell crate')).toContain('smells like you'); }); it(`responds to 'open crate`, () => { expect(engine.getResponse('open crate')).toContain('try pushing the door'); }); }); describe('door', () => { it(`opens with 'open door`, () => { const response = engine.getResponseState('open door'); expect(response.state.isCrateOpen).toBe(true); }); it(`opens with 'push door`, () => { const response = engine.getResponseState('push door'); expect(response.state.isCrateOpen).toBe(true); }); }); describe('Blanket', () => { it('Smell should smell like you', () => { expect(engine.getResponse('smell blanket')).toContain('It smells like you'); }); it('Looks should be descriptive', () => { expect(engine.getResponse('look at blanket')).toContain('soft'); }); it('Eat should be descriptive', () => { expect(engine.getResponse('eat blanket')).toContain('never'); }); it('Take should give a plausible reason', () => { expect(engine.getResponse('get blanket')).toContain('leave it'); }); }); });