import {resource} from '@avocado/resource'; import {Latus} from '@latus/core'; import {expect} from 'chai'; let latus; let Entity; let EntityList; 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, EntityList}} = resource(latus)); }); describe('Perishable', () => { let entity; beforeEach(async () => { entity = await Entity.load({ traits: { Existent: {}, Perishable: { params: { ttl: 10, }, }, }, }); }); it('exists', async () => { expect(entity.is('Perishable')).to.be.true; }); it('expires', async () => { const promise = Promise.all([ new Promise((resolve) => { entity.on('destroying', resolve); }), new Promise((resolve) => { entity.on('destroyed', resolve); }), ]); entity.tick(10); return promise; }); });