mirror of
https://github.com/WhitestormJS/whs.js.git
synced 2026-01-25 16:08:01 +00:00
89 lines
2.0 KiB
JavaScript
89 lines
2.0 KiB
JavaScript
import test from 'ava';
|
|
import * as WHS from '../../build/whitestorm.js';
|
|
|
|
/*
|
|
* Ignored methods:
|
|
*
|
|
* - .publish() & .unpublish() - Aliases of .addDependency() and .removeDependency();
|
|
*
|
|
*/
|
|
|
|
const composition = {};
|
|
const testValue = {test: true};
|
|
|
|
const manager = new WHS.ModuleManager(composition);
|
|
const module = new WHS.app.SceneModule();
|
|
|
|
test('.setActiveModule()', t => {
|
|
manager.setActiveModule(module);
|
|
t.is(manager.currentModule, module);
|
|
});
|
|
|
|
test('.addDependency()', t => {
|
|
t.plan(2);
|
|
|
|
manager.addDependency('immutable', testValue, {immutable: true, alias: '$testkey'});
|
|
manager.addDependency('overwritable', testValue);
|
|
|
|
t.is(manager.store.immutable[0], testValue, 'value is set');
|
|
t.is(composition.$testkey, testValue, 'alias is set');
|
|
});
|
|
|
|
test('.get()', t => {
|
|
t.is(manager.get('immutable'), testValue);
|
|
});
|
|
|
|
test('.set()', t => {
|
|
t.plan(2);
|
|
|
|
t.throws(
|
|
() => {
|
|
manager.set('immutable', 'newValue');
|
|
},
|
|
'@ModuleManager: Dependency \'immutable\' is immutable and already used by another module',
|
|
'dependency is immutable'
|
|
);
|
|
|
|
manager.set('overwritable', 'newValue');
|
|
|
|
t.is(manager.store.overwritable[0], 'newValue', 'value is updated');
|
|
});
|
|
|
|
test('.onDependencyUpdate()', async t => {
|
|
const update = new Promise((resolve, reject) => {
|
|
manager.onDependencyUpdate({
|
|
overwritable: () => {
|
|
resolve(true);
|
|
}
|
|
});
|
|
|
|
setTimeout(reject, 1);
|
|
});
|
|
|
|
manager.set('overwritable', 'check update');
|
|
|
|
t.true(await update);
|
|
});
|
|
|
|
test('.has()', t => {
|
|
t.plan(2);
|
|
|
|
t.true(manager.has('immutable'), 'manager has \'immutable\' dependency');
|
|
t.false(manager.has('whatever'), 'manager doesn\'t have \'whatever\' dependency');
|
|
});
|
|
|
|
test('.removeDependency()', t => {
|
|
t.plan(2);
|
|
|
|
manager.removeDependency('immutable');
|
|
manager.removeDependency('overwritable');
|
|
|
|
t.is(manager.store.immutable, null);
|
|
t.is(manager.store.overwritable, null);
|
|
});
|
|
|
|
test('.reset()', t => {
|
|
manager.reset();
|
|
t.is(manager.currentModule, null);
|
|
});
|