rpg-table-randomizer
Version:
Module for random tables for use in roleplaying games
85 lines (77 loc) • 3.04 kB
JavaScript
;
import { expect } from 'chai';
import { describe, it } from 'mocha';
import NPC from '../src/NPC.js';
import RandomTableResultSet from '../src/RandomTableResultSet.js';
import RandomTableResult from '../src/RandomTableResult.js';
import TableErrorResult from '../src/TableErrorResult.js';
import { DiceResult } from '../src/dice_roller.js';
describe('NPC', function () {
it('should serialize the class to an object', function () {
const fieldMap = new Map();
fieldMap.set('one', 'a string');
fieldMap.set('two', new RandomTableResultSet({}));
fieldMap.set('three', new RandomTableResult({}));
fieldMap.set('four', new TableErrorResult({}));
fieldMap.set('five', new DiceResult({}));
const npc = new NPC({
id: '123-abc-789',
schema: 'ose',
fields: fieldMap
});
const serialized = npc.toJSON();
expect(serialized.id).to.equal('123-abc-789');
expect(serialized.schema).to.equal('ose');
expect(serialized.className).to.equal('NPC');
expect(serialized.fields.one).to.equal('a string');
expect(serialized.fields.two.className).to.equal('RandomTableResultSet');
expect(serialized.fields.three.className).to.equal('RandomTableResult');
expect(serialized.fields.four.className).to.equal('TableErrorResult');
expect(serialized.fields.five.className).to.equal('DiceResult');
});
it('should unserialize an object to class', function () {
const obj = {
className: 'NPC',
id: '123-abc-789',
schema: 'ose',
fields: {
one: 'a string',
two: {
className: 'RandomTableResultSet'
},
three: {
className: 'RandomTableResult'
},
four: {
className: 'TableErrorResult'
},
five: {
className: 'DiceResult'
},
six: null,
seven: {
foo: 'bar'
}
}
};
const npc = new NPC(obj);
expect(npc.id).to.equal('123-abc-789');
expect(npc.schema).to.equal('ose');
expect(npc.getFieldValue('one')).to.equal('a string');
expect(npc.getFieldValue('two')).to.be.instanceOf(RandomTableResultSet);
expect(npc.getFieldValue('three')).to.be.instanceOf(RandomTableResult);
expect(npc.getFieldValue('four')).to.be.instanceOf(TableErrorResult);
expect(npc.getFieldValue('five')).to.be.instanceOf(DiceResult);
expect(npc.getFieldValue('six')).to.be.equal(null);
expect(npc.getFieldValue('seven')).to.deep.property('foo', 'bar');
expect(npc.getFieldKeys()).to.deep.equal([
'one',
'two',
'three',
'four',
'five',
'six',
'seven'
]);
});
});