mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
|
var assert = require('chai').assert;
|
||
|
var ko = require('knockout');
|
||
|
|
||
|
var clientUtil = require('../clientUtil');
|
||
|
var ObservableSet = require('app/client/lib/ObservableSet');
|
||
|
|
||
|
describe('ObservableSet', function() {
|
||
|
clientUtil.setTmpMochaGlobals();
|
||
|
|
||
|
it("should keep track of items", function() {
|
||
|
var set = ObservableSet.create();
|
||
|
assert.equal(set.count(), 0);
|
||
|
assert.deepEqual(set.all(), []);
|
||
|
|
||
|
var obs1 = ko.observable(true), val1 = { foo: 5 },
|
||
|
obs2 = ko.observable(false), val2 = { foo: 17 };
|
||
|
|
||
|
var sub1 = set.add(obs1, val1),
|
||
|
sub2 = set.add(obs2, val2);
|
||
|
|
||
|
assert.equal(set.count(), 1);
|
||
|
assert.deepEqual(set.all(), [val1]);
|
||
|
|
||
|
obs1(false);
|
||
|
assert.equal(set.count(), 0);
|
||
|
assert.deepEqual(set.all(), []);
|
||
|
|
||
|
obs2(true);
|
||
|
assert.equal(set.count(), 1);
|
||
|
assert.deepEqual(set.all(), [val2]);
|
||
|
|
||
|
obs1(true);
|
||
|
assert.equal(set.count(), 2);
|
||
|
assert.deepEqual(set.all(), [val1, val2]);
|
||
|
|
||
|
sub1.dispose();
|
||
|
assert.equal(set.count(), 1);
|
||
|
assert.deepEqual(set.all(), [val2]);
|
||
|
assert.equal(obs1.getSubscriptionsCount(), 0);
|
||
|
assert.equal(obs2.getSubscriptionsCount(), 1);
|
||
|
|
||
|
sub2.dispose();
|
||
|
assert.equal(set.count(), 0);
|
||
|
assert.deepEqual(set.all(), []);
|
||
|
assert.equal(obs1.getSubscriptionsCount(), 0);
|
||
|
assert.equal(obs2.getSubscriptionsCount(), 0);
|
||
|
});
|
||
|
});
|