2021-01-06 01:26:56 -06:00
|
|
|
import {expect} from 'chai';
|
|
|
|
|
2022-03-11 05:08:59 -06:00
|
|
|
// eslint-disable-next-line import/no-unresolved
|
|
|
|
import {Trait} from '@avocado/traits';
|
2021-01-06 01:26:56 -06:00
|
|
|
|
|
|
|
class TestTrait extends Trait {
|
|
|
|
|
|
|
|
static defaultParams() {
|
|
|
|
return {
|
|
|
|
asd: 'hello',
|
|
|
|
sdf: 311,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
static defaultState() {
|
|
|
|
return {
|
|
|
|
foo: 69,
|
|
|
|
bar: '420',
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2021-03-20 08:20:30 -05:00
|
|
|
// it('optimizes output based on deltas', async () => {
|
|
|
|
// const testTrait = await TestTrait.load({
|
|
|
|
// params: {
|
|
|
|
// asd: 'boo',
|
|
|
|
// },
|
|
|
|
// state: {
|
|
|
|
// bar: 'yee',
|
|
|
|
// },
|
|
|
|
// });
|
|
|
|
// expect(testTrait.toJSON()).to.deep.equal({
|
|
|
|
// params: {
|
|
|
|
// asd: 'boo',
|
|
|
|
// },
|
|
|
|
// state: {
|
|
|
|
// bar: 'yee',
|
|
|
|
// },
|
|
|
|
// });
|
|
|
|
// });
|
2021-01-06 01:26:56 -06:00
|
|
|
|
|
|
|
it('tracks state differences', () => {
|
|
|
|
const testTrait = new TestTrait();
|
|
|
|
testTrait.state.foo = 420;
|
|
|
|
expect(testTrait.stateDifferences()).to.deep.equal({
|
|
|
|
foo: {
|
|
|
|
old: 69,
|
|
|
|
value: 420,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
testTrait.markAsClean();
|
|
|
|
expect(testTrait.stateDifferences()).to.deep.equal({});
|
|
|
|
});
|
2021-01-12 22:36:44 -06:00
|
|
|
|
|
|
|
it('can memoize listeners', () => {
|
|
|
|
class ListenerTrait extends Trait {
|
|
|
|
|
|
|
|
listeners() {
|
|
|
|
return {
|
|
|
|
heard: () => {},
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
const testTrait = new ListenerTrait();
|
|
|
|
const memoized = testTrait.memoizedListeners();
|
|
|
|
expect(Object.keys(testTrait.listeners())).to.deep.equal(Object.keys(memoized));
|
|
|
|
expect(testTrait.memoizedListeners()).to.equal(testTrait.memoizedListeners());
|
|
|
|
});
|