UNPKG

rpg-table-randomizer

Version:

Module for random tables for use in roleplaying games

122 lines (96 loc) 3.93 kB
'use strict'; import { describe, it } from 'node:test'; import assert from 'node:assert/strict'; import NPCSchemaField from '../src/NPCSchemaField.js'; describe('NPCSchemaField', function () { it('should serialize the class to an object', function () { const field = new NPCSchemaField({ key: 'haircolor', label: 'Hair Color', type: 'string', source: 'color:natural', count: 1, starting_value: 'black' }); const serialized = field.toJSON(); assert.strictEqual(serialized.key, 'haircolor'); assert.strictEqual(serialized.label, 'Hair Color'); assert.strictEqual(serialized.type, 'string'); assert.strictEqual(serialized.count, 1); assert.strictEqual(serialized.starting_value, 'black'); assert.strictEqual(serialized.className, 'NPCSchemaField'); }); it('should unserialize an object to class with field objects', function () { const obj = { key: 'haircolor', label: 'Hair Color', type: 'string', source: 'color:natural', count: 1, starting_value: 'black', className: 'NPCSchemaField' }; const field = new NPCSchemaField(obj); assert.strictEqual(field.key, 'haircolor'); assert.strictEqual(field.label, 'Hair Color'); assert.strictEqual(field.type, 'string'); assert.strictEqual(field.count, 1); assert.strictEqual(field.starting_value, 'black'); }); it('should handle default constructor settings', function () { let field = new NPCSchemaField({ count: -2 }); assert.strictEqual(field.count, 1); field = new NPCSchemaField({ count: null }); assert.strictEqual(field.count, 1); }); it('should return defaultEmpty for each type', function () { const field = new NPCSchemaField({ type: 'string' }); assert.strictEqual(field.defaultEmpty, ''); field.type = 'text'; assert.strictEqual(field.defaultEmpty, ''); field.type = 'array'; assert.deepStrictEqual(field.defaultEmpty, []); field.type = 'number'; assert.strictEqual(field.defaultEmpty, 0); field.type = 'modifier'; assert.strictEqual(field.defaultEmpty, 0); field.type = 'note'; assert.strictEqual(field.defaultEmpty, null); field.type = 'resultset'; assert.strictEqual(field.defaultEmpty, null); field.type = 'something else'; assert.strictEqual(field.defaultEmpty, null); field.count = 2; assert.deepStrictEqual(field.defaultEmpty, []); }); it('should return true for specific type checks', function () { const field = new NPCSchemaField({ type: 'string' }); assert.strictEqual(field.isString(), true); field.type = 'text'; assert.strictEqual(field.isText(), true); field.type = 'array'; assert.strictEqual(field.isArray(), true); field.type = 'number'; assert.strictEqual(field.isNumber(), true); field.type = 'modifier'; assert.strictEqual(field.isModifier(), true); field.type = 'note'; assert.strictEqual(field.isNote(), true); field.type = 'resultset'; assert.strictEqual(field.isResult(), true); field.type = 'something else'; assert.strictEqual(field.isString(), false); assert.strictEqual(field.isText(), false); assert.strictEqual(field.isNumber(), false); assert.strictEqual(field.isModifier(), false); assert.strictEqual(field.isNote(), false); assert.strictEqual(field.isResult(), false); assert.strictEqual(field.isArray(), false); field.count = 2; assert.strictEqual(field.isArray(), true); }); });