UNPKG

personae

Version:

This tool is used to generate a person either NPC or other Edit

137 lines (105 loc) 3.14 kB
import { expect } from 'chai'; import Personae from '../src/personae'; import { PersonTypes, Genders } from 'opendnd-core'; let personae, person, parents, child; import defaults from '../src/defaults'; // TODO: investigate what's setting this Object.defineProperty( global, 'token', { set: (x) => { debugger; } } ); describe('Personae', () => { before(() => { personae = new Personae(); }); context('person', () => { before(() => { person = personae.generate(); }); it('can generate', () => { expect(person).to.be.an('object'); }); it('has a culture', () => { expect(person.culture.uuid).to.be.a('string'); }); it('has a name', () => { expect(person.name).to.be.a('string'); }); it('has a age', () => { expect(person.age).to.be.a('number'); }); it('has an ageGroup', () => { expect(person.ageGroup).to.be.a('string'); }); it('has abilities', () => { expect(person.abilities).to.be.an('object'); }); it('has a type', () => { expect(person.type).to.be.a('string'); }); it('has an alignment', () => { expect(person.type).to.be.a('string'); }); it('has a klass', () => { expect(person.klass.name).to.be.a('string'); }); it('has a background', () => { expect(person.background.uuid).to.be.a('string'); }); it('has a specialty', () => { expect(person.specialty).to.be.a('string'); }); it('has personalityTraits', () => { expect(person.personalityTraits).to.be.an('array'); }); it('has a ideal', () => { expect(person.ideal).to.be.a('string'); }); it('has a bond', () => { expect(person.bond).to.be.a('string'); }); it('has a flaw', () => { expect(person.flaw).to.be.a('string'); }); it('has a mannerism', () => { expect(person.mannerism).to.be.a('string'); }); it('has a talent', () => { expect(person.talent).to.be.a('string'); }); it('has a trait', () => { expect(person.trait).to.be.a('string'); }); it('has a characteristic', () => { expect(person.characteristic).to.be.a('string'); }); it('has DNA', () => { expect(person.DNA).to.be.an('object'); expect(person.DNA.gender).to.be.a('string'); expect(person.DNA.race.uuid).to.be.a('string'); }); }) it('generates with default options', () => { person = personae.generate(); expect(person.type).to.eq(PersonTypes.Playable); }); it('generates parents', () => { person = personae.generate(); parents = personae.generateParents(person); const { mother, father } = parents; expect(mother).to.be.an('object'); expect(father).to.be.an('object'); }); it('generates a child', () => { const race = Object.values(defaults.races).sample(); const mother = personae.generate({ gender: Genders.Female, race }); const father = personae.generate({ gender: Genders.Male, race }); child = personae.generateChild({}, mother, father); expect(child).to.be.an('object'); }); });