under-falling-skies/src/lib/store/genNextBattle.test.js

87 lines
2.2 KiB
JavaScript

import { test, expect } from 'vitest';
import {
genNextBattle,
genChapter2Battle,
genChapter3Battle,
genChapter4Battle,
} from './genNextBattle.js';
test('generate for the first chapter', () => {
const next = genNextBattle();
expect(next).toHaveProperty('city');
expect(next).toHaveProperty('status', 'ongoing');
});
test('chapter 2, first battle', () => {
const result = genChapter2Battle([
{ character: 'one' },
{ character: 'two' },
]);
expect(result.additionalCharacters[0].selection).toEqual('one');
expect(result.additionalCharacters[0].choices).toEqual(['one', 'two']);
});
test('chapter 2, second battle', () => {
const result = genChapter2Battle([
{ character: 'one' },
{ character: 'two' },
{
character: 'three',
additionalCharacters: [{ selection: 'two' }],
},
]);
expect(result.additionalCharacters[0].selection).toEqual('one');
expect(result.additionalCharacters[0].choices).toEqual(['one']);
});
test('chapter 3, first battle', () => {
const result = genChapter3Battle([
{ character: 'one' },
{ character: 'two' },
{ character: 'three' },
{ character: 'four' },
]);
expect(result.additionalCharacters[0].selection).toEqual('one');
expect(result.additionalCharacters[1].selection).toEqual('three');
});
test('chapter 3, second battle', () => {
const result = genChapter3Battle([
{ character: 'one' },
{ character: 'two' },
{ character: 'three' },
{ character: 'four' },
{
character: 'five',
additionalCharacters: [
{ selection: 'one' },
{ selection: 'three' },
],
},
]);
expect(result.additionalCharacters[0].selection).toEqual('two');
expect(result.additionalCharacters[1].selection).toEqual('four');
});
test.only('chapter 4, first battle', () => {
const result = genChapter4Battle([
{ character: 'one', city: 'a' },
{ character: 'two', city: 'b', status: 'lost' },
{ character: 'three', city: 'c' },
{ character: 'four', city: 'd' },
{ character: 'five', city: 'e' },
{ character: 'six', city: 'f' },
]);
expect(result.additionalCharacters[0].selection).toEqual('one');
expect(result.additionalCharacters[1].selection).toEqual('two');
expect(result.additionalCharacters[2].selection).toEqual('three');
expect(result.city.choices).not.toContain('b');
});