avocado/packages/entity/test/entity.js
2022-03-14 15:07:47 -05:00

94 lines
2.5 KiB
JavaScript

// import {Trait, traits} from '@avocado/traits';
// import {Flecks} from '@flecks/core';
// import {expect} from 'chai';
// let flecks;
// let Entity;
// beforeEach(async () => {
// flecks = Flecks.mock({
// '@avocado/entity': require('../src'),
// '@avocado/resource': require('@avocado/resource'),
// '@avocado/traits': require('@avocado/traits'),
// });
// await Promise.all(flecks.invokeFlat('@flecks/core/starting'));
// ({Entity} = flecks.get('$avocado/resource.resources'));
// });
// it('has sane defaults', () => {
// const entity = new Entity();
// expect(entity.traits).to.deep.equal({});
// expect(entity.traitTypes()).to.deep.equal([]);
// });
// it('can add and remove traits', async () => {
// const entity = new Entity();
// const TestTrait = class extends Trait {
// static get type() {
// return 'TestTrait';
// }
// };
// flecks.set('$avocado/traits.traits.TestTrait', TestTrait);
// await entity.addTrait('TestTrait');
// expect(entity.is('TestTrait')).to.be.true;
// entity.removeTrait('TestTrait');
// expect(entity.is('TestTrait')).to.be.false;
// });
// it('can add traits asynchronously', async () => {
// const DELAY = 30;
// class AsyncTrait extends Trait {
// static async extendJson(json) {
// const extended = await super.extendJson(json);
// await new Promise((resolve) => setTimeout(resolve, DELAY));
// return extended;
// }
// }
// flecks.set('$avocado/traits.traits.Async', AsyncTrait);
// let start = Date.now();
// const entity = await Entity.load({
// traits: {
// Async: {},
// },
// });
// expect(Date.now() - start).to.be.at.least(DELAY * 0.9);
// });
// it('can invoke hooks', async () => {
// class AnotherTrait extends Trait {
// hooks() {
// return {
// testHook: () => 69,
// };
// }
// static get type() {
// return 'AnotherTrait';
// }
// }
// class YetAnotherTrait extends Trait {
// hooks() {
// return {
// testHook: () => 420,
// };
// }
// static get type() {
// return 'YetAnotherTrait';
// }
// }
// flecks.set('$avocado/traits.traits.AnotherTrait', AnotherTrait);
// flecks.set('$avocado/traits.traits.YetAnotherTrait', YetAnotherTrait);
// const entity = new Entity();
// await entity.addTrait('AnotherTrait');
// await entity.addTrait('YetAnotherTrait');
// expect(entity.invokeHook('testHook')).to.deep.equal({AnotherTrait: 69, YetAnotherTrait: 420});
// });