var assert = require('assert'); var DataSet = require('../lib/DataSet'); var DateUtil = require('../lib/timeline/DateUtil'); var Range = require('../lib/timeline/Range'); var ItemSet = require('../lib/timeline/component/ItemSet'); describe('Timeline ItemSet', function () { before(function () { this.jsdom = require('jsdom-global')(); this.TestSupport = require('./TestSupport'); var rangeBody = this.TestSupport.buildSimpleTimelineRangeBody(); this.testrange = new Range(rangeBody); this.testrange.setRange(new Date(2017, 1, 26, 13, 26, 3, 320), new Date(2017, 1, 26, 13, 26, 4, 320), false, false, null); this.testitems = new DataSet({ type: { start: 'Date', end: 'Date' } }); // add single items with different date types this.testitems.add({id: 1, content: 'Item 1', start: new Date(2017, 1, 26, 13, 26, 3, 600), type: 'point'}); this.testitems.add({id: 2, content: 'Item 2', start: new Date(2017, 1, 26, 13, 26, 5, 600), type: 'point'}); }); after(function () { this.jsdom(); }); var getBasicBody = function() { var body = { dom: { container: document.createElement('div'), leftContainer: document.createElement('div'), centerContainer: document.createElement('div'), top: document.createElement('div'), left: document.createElement('div'), center: document.createElement('div'), backgroundVertical: document.createElement('div') }, domProps: { root: {}, background: {}, centerContainer: {}, leftContainer: {}, rightContainer: {}, center: {}, left: {}, right: {}, top: {}, bottom: {}, border: {}, scrollTop: 0, scrollTopMin: 0 }, emitter: { on: function() {return {};}, emit: function() {} }, util: { } }; return body; }; it('should initialise with minimal data', function () { var body = getBasicBody(); var itemset = new ItemSet(body, {}); assert(itemset); }); it('should redraw() and have the right classNames', function () { var body = getBasicBody(); body.range = this.testrange; var itemset = new ItemSet(body, {}); itemset.redraw(); assert.equal(itemset.dom.frame.className, 'vis-itemset'); assert.equal(itemset.dom.background.className, 'vis-background'); assert.equal(itemset.dom.foreground.className, 'vis-foreground'); assert.equal(itemset.dom.axis.className, 'vis-axis'); assert.equal(itemset.dom.labelSet.className, 'vis-labelset'); }); it('should start with no items', function () { var body = getBasicBody(); var itemset = new ItemSet(body, {}); assert.equal(itemset.getItems(), null); }); it('should store items correctly', function() { var body = getBasicBody(); body.range = this.testrange; body.util.toScreen = function(time) { return DateUtil.toScreen({ body: { hiddenDates: [] }, range: { conversion: function() { return {offset: 0, scale: 100}; } } }, time, 900) }; var itemset = new ItemSet(body, {}); itemset.setItems(this.testitems); assert.equal(itemset.getItems().length, 2); assert.deepEqual(itemset.getItems(), this.testitems); }); });