import {resource} from '@avocado/resource'; import {Latus} from '@latus/core'; import {expect} from 'chai'; let latus; let Entity; beforeEach(async () => { latus = Latus.mock({ '@avocado/entity': require('../src'), '@avocado/resource': require('@avocado/resource'), '@avocado/traits': require('@avocado/traits'), }); await Promise.all(latus.invokeFlat('@latus/core/starting')); ({fromResourceType: {Entity}} = resource(latus)); }); describe('Existent', () => { let entity; beforeEach(async () => { entity = await Entity.load({ traits: { Existent: {}, }, }); }); it('exists', async () => { expect(entity.is('Existent')).to.be.true; }); it('can transition', async () => { entity.foobar = 10; const tickingPromise = entity.transition( {foobar: 30}, 200, 'linear', ); tickingPromise.tick(100); expect(entity.foobar).to.equal(20); tickingPromise.tick(100); expect(entity.foobar).to.equal(30); return tickingPromise; }); it('can be destroyed', async () => { expect(entity.isTicking).to.be.true; const promise = Promise.all([ new Promise((resolve) => { entity.on('destroy', resolve); }), new Promise((resolve) => { entity.on('destroyed', resolve); }), ]); entity.destroy(); expect(entity.traits).to.deep.equal({}); return promise; }); });