|
|
- var assert = require('assert');
- var moment = require('moment');
- var DataSet = require('../lib/DataSet');
- var DataView = require('../lib/DataView');
-
- // TODO: improve DataView tests, split up in one test per function
- describe('DataView', function () {
- it('should work', function () {
- var groups = new DataSet();
-
- // add items with different groups
- groups.add([
- {id: 1, content: 'Item 1', group: 1},
- {id: 2, content: 'Item 2', group: 2},
- {id: 3, content: 'Item 3', group: 2},
- {id: 4, content: 'Item 4', group: 1},
- {id: 5, content: 'Item 5', group: 3}
- ]);
-
- var group2 = new DataView(groups, {
- filter: function (item) {
- return item.group == 2;
- }
- });
-
- // test getting the filtered data
- assert.deepEqual(group2.get(), [
- {id: 2, content: 'Item 2', group: 2},
- {id: 3, content: 'Item 3', group: 2}
- ]);
-
- // test filtering the view contents
- assert.deepEqual(group2.get({
- filter: function (item) {
- return item.id > 2;
- }
- }), [
- {id: 3, content: 'Item 3', group: 2}
- ]);
-
- // test event subscription
- var groupsTriggerCount = 0;
- groups.on('*', function () {
- groupsTriggerCount++;
- });
- var group2TriggerCount = 0;
- group2.on('*', function () {
- group2TriggerCount++;
- });
-
- groups.update({id:2, content: 'Item 2 (changed)'});
- assert.equal(groupsTriggerCount, 1);
- assert.equal(group2TriggerCount, 1);
-
- groups.update({id:5, content: 'Item 5 (changed)'});
- assert.equal(groupsTriggerCount, 2);
- assert.equal(group2TriggerCount, 1);
-
- // detach the view from groups
- group2.setData(null);
- assert.equal(groupsTriggerCount, 2);
- assert.equal(group2TriggerCount, 2);
-
- groups.update({id:2, content: 'Item 2 (changed again)'});
- assert.equal(groupsTriggerCount, 3);
- assert.equal(group2TriggerCount, 2);
- });
-
- });
|