burnchart/test/Store.js
2016-01-26 18:34:07 +01:00

94 lines
1.8 KiB
JavaScript

import { assert } from 'chai';
import Store from '../src/js/lib/Store.js';
import actions from '../src/js/actions/appActions.js';
export default {
'store - set': (done) => {
let s = new Store();
s.set('A.B', 1);
assert.deepEqual({ A: { B: 1 }}, s.get());
done();
},
'store - setSilent': (done) => {
let s = new Store();
let val;
s.onAny(v => val = v);
s.set('A.B', 1, true);
s.set('A.B', 2, false);
assert.deepEqual({ A: { B: 2 }}, s.get());
assert.equal(1, val);
done();
},
'store - assign': (done) => {
let s = new Store({ A: 1 });
s.set({ B: 1 });
assert.deepEqual({ A: 1, B: 1 }, s.get());
done();
},
'store - changes': (done) => {
let s = new Store({ A: { B: { C: 1 } } });
let key;
s.onAny((v, k) => key = k);
s.set('A', { B: { C: 2 } });
assert.equal('A.B.C', key);
done();
},
'store - cb called': (done) => {
let s = new Store();
let events = [];
actions.on('system.loading', (val) => events.push(val));
let called = false;
let cb = s.cb(() => called = true);
assert.equal(Object.keys(s._cbs).length, 1);
cb();
assert.ok(called);
assert.equal(Object.keys(s._cbs).length, 0);
assert.deepEqual(events, [ true, false ]);
done();
},
'store - cb cancelled': (done) => {
let s = new Store();
let events = [];
actions.on('system.loading', (val) => events.push(val));
let called = false;
let cb = s.cb(() => called = true);
assert.equal(Object.keys(s._cbs).length, 1);
setTimeout(cb, 10);
s.clean();
assert.equal(Object.keys(s._cbs).length, 0);
setTimeout(() => {
assert.ok(!called);
assert.deepEqual(events, [ true, false ]);
done();
}, 20);
}
};