From 197f36a6ff8747d5927e316420ebcc16a5ebd903 Mon Sep 17 00:00:00 2001 From: macleodbroad-wf Date: Fri, 20 Oct 2017 06:59:21 -0400 Subject: [PATCH] =?UTF-8?q?Adds=20code=20coverage=20report=20the=20output?= =?UTF-8?q?=20of=20`npm=20test`=20and=20adds=20detailed=20=E2=80=A6=20(#35?= =?UTF-8?q?75)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Adds code coverage report the output of `npm test` and adds detailed html code coverage report using the command `npm run-script test-cov` * Switch over to using functions in lib/ rather than dist/, so that code coverage stats are complete. * Import vis at the top level to keep ItemSet passing * Remove requirement for dist/vis in TimelineItemSet --- package.json | 4 +++- test/DataSet.test.js | 8 +++---- test/DataView.test.js | 7 +++--- test/Graph3d.test.js | 5 ++-- test/Label.test.js | 34 ++++++++++++++-------------- test/Network.test.js | 44 ++++++++++++++++++------------------ test/PointItem.test.js | 6 ++--- test/TestSupport.js | 9 ++++---- test/TimeStep.test.js | 8 +++---- test/TimelineItemSet.test.js | 31 +++++++++++++------------ test/TimelineRange.test.js | 8 +++---- 11 files changed, 80 insertions(+), 84 deletions(-) diff --git a/package.json b/package.json index dd09a2ed..be72b0af 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,8 @@ ], "main": "./dist/vis.js", "scripts": { - "test": "mocha --compilers js:babel-core/register", + "test": "nyc mocha --compilers js:babel-core/register", + "test-cov": "nyc --reporter=html mocha --compilers js:babel-core/register", "build": "gulp", "lint": "gulp lint", "watch": "gulp watch", @@ -63,6 +64,7 @@ "merge-stream": "^1.0.1", "mocha": "^3.4.2", "mocha-jsdom": "^1.1.0", + "nyc": "^11.2.1", "rimraf": "^2.6.1", "test-console": "^1.0.0", "uglify-js": "^2.8.29", diff --git a/test/DataSet.test.js b/test/DataSet.test.js index cd7e2ed0..2d88c054 100644 --- a/test/DataSet.test.js +++ b/test/DataSet.test.js @@ -1,8 +1,8 @@ var assert = require('assert'); -var vis = require('../dist/vis'); -var moment = vis.moment; -var DataSet = vis.DataSet; -var Queue = vis.Queue; + +var DataSet = require('../lib/DataSet'); +var Queue = require('../lib/Queue'); + // TODO: test the source code immediately, but this is ES6 var now = new Date(); diff --git a/test/DataView.test.js b/test/DataView.test.js index 11d481c3..d6d558fa 100644 --- a/test/DataView.test.js +++ b/test/DataView.test.js @@ -1,8 +1,7 @@ var assert = require('assert'); -var vis = require('../dist/vis'); -var moment = vis.moment; -var DataSet = vis.DataSet; -var DataView = vis.DataView; + +var DataSet = require('../lib/DataSet'); +var DataView = require('../lib/DataView'); // TODO: test the source code immediately, but this is ES6 // TODO: improve DataView tests, split up in one test per function diff --git a/test/Graph3d.test.js b/test/Graph3d.test.js index f14136cc..c9bf2c5a 100644 --- a/test/Graph3d.test.js +++ b/test/Graph3d.test.js @@ -1,6 +1,5 @@ var assert = require('assert'); -var vis = require('../dist/vis'); -var Graph3d = vis.Graph3d; +var Graph3d = require('../lib/graph3d/Graph3d'); var jsdom_global = require('jsdom-global'); var canvasMockify = require('./canvas-mock'); var stdout = require('test-console').stdout; @@ -56,7 +55,7 @@ describe('Graph3d', function () { style: 'dot' }; - var graph = new vis.Graph3d(this.container, data, options); + var graph = new Graph3d(this.container, data, options); assert.equal(graph.style, DOT_STYLE, "Style not set to expected 'dot'"); graph.setOptions({ style: 'bar'}); // Call should just work, no exception thrown diff --git a/test/Label.test.js b/test/Label.test.js index 7a7421f0..f2dbe90a 100644 --- a/test/Label.test.js +++ b/test/Label.test.js @@ -8,14 +8,14 @@ * Currently, only "size[px] name color" is valid, always 3 items with this exact spacing. * All other combinations should either be rejected as error or handled gracefully. */ -var assert = require('assert') +var assert = require('assert'); var Label = require('../lib/network/modules/components/shared/Label').default; var NodesHandler = require('../lib/network/modules/NodesHandler').default; var util = require('../lib/util'); var jsdom_global = require('jsdom-global'); var canvasMockify = require('./canvas-mock'); -var vis = require('../dist/vis'); -var Network = vis.network; +var DataSet = require('../lib/DataSet'); +var Network = require('../lib/network/Network'); /************************************************************** @@ -477,7 +477,7 @@ describe('Node Labels', function() { // create a network var container = document.getElementById('mynetwork'); var data = { - nodes: new vis.DataSet(dataNodes), + nodes: new DataSet(dataNodes), edges: [] }; @@ -501,7 +501,7 @@ describe('Node Labels', function() { util.deepExtend(options, newOptions); } - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); return [network, data, options]; } @@ -678,8 +678,8 @@ describe('Edge Labels', function() { // create a network var container = document.getElementById('mynetwork'); var data = { - nodes: new vis.DataSet(dataNodes), - edges: new vis.DataSet(dataEdges), + nodes: new DataSet(dataNodes), + edges: new DataSet(dataEdges), }; var options = { @@ -694,7 +694,7 @@ describe('Edge Labels', function() { util.deepExtend(options, newOptions); } - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); return [network, data, options]; } @@ -823,8 +823,8 @@ describe('Shorthand Font Options', function() { // create a network var container = document.getElementById('mynetwork'); var data = { - nodes: new vis.DataSet(dataNodes), - edges: new vis.DataSet(dataEdges), + nodes: new DataSet(dataNodes), + edges: new DataSet(dataEdges), }; var options = { @@ -847,7 +847,7 @@ describe('Shorthand Font Options', function() { } }; - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); return [network, data]; } @@ -1114,7 +1114,7 @@ describe('Shorthand Font Options', function() { // create a network var container = document.getElementById('mynetwork'); var data = { - nodes: new vis.DataSet(dataNodes), + nodes: new DataSet(dataNodes), edges: [] }; @@ -1145,7 +1145,7 @@ describe('Shorthand Font Options', function() { }, }; - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); assert.equal(modBold(1).color, 'red'); // Group value assert(fontOption(1).multi); // Group value @@ -1487,7 +1487,7 @@ describe('Shorthand Font Options', function() { enabled: false } }; - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); var nodes_expected = [ { nodeId: 100, minWdt: -1, maxWdt: 200, minHgt: -1, valign: 'middle'}, @@ -1614,12 +1614,12 @@ describe('Shorthand Font Options', function() { // Kept in for regression testing. var container = document.getElementById('mynetwork'); var data = { - nodes: new vis.DataSet(nodes), - edges: new vis.DataSet(edges) + nodes: new DataSet(nodes), + edges: new DataSet(edges) }; var options = {}; - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); done(); }); diff --git a/test/Network.test.js b/test/Network.test.js index b9f191c4..425621e6 100644 --- a/test/Network.test.js +++ b/test/Network.test.js @@ -12,8 +12,8 @@ */ var fs = require('fs'); var assert = require('assert'); -var vis = require('../dist/vis'); -var Network = vis.network; +var DataSet = require('../lib/DataSet'); +var Network = require('../lib/network/Network'); var stdout = require('test-console').stdout; var Validator = require("./../lib/shared/Validator").default; var jsdom_global = require('jsdom-global'); @@ -78,7 +78,7 @@ function createSampleNetwork(options) { var NumInitialNodes = 8; var NumInitialEdges = 6; - var nodes = new vis.DataSet([ + var nodes = new DataSet([ {id: 1, label: '1'}, {id: 2, label: '2'}, {id: 3, label: '3'}, @@ -88,7 +88,7 @@ function createSampleNetwork(options) { {id: 13, label: '13'}, {id: 14, label: '14'}, ]); - var edges = new vis.DataSet([ + var edges = new DataSet([ {from: 1, to: 2}, {from: 2, to: 3}, {from: 3, to: 4}, @@ -117,7 +117,7 @@ function createSampleNetwork(options) { options = merge(defaultOptions, options); - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); assertNumNodes(network, NumInitialNodes); assertNumEdges(network, NumInitialEdges); @@ -409,7 +409,7 @@ describe('Network', function () { var container = document.getElementById('mynetwork'); for (var n = 0; n < awkwardData.length; ++n) { - var network = new vis.Network(container, awkwardData[n], {}); // Should not throw + var network = new Network(container, awkwardData[n], {}); // Should not throw } }); @@ -517,14 +517,14 @@ describe('Edge', function () { * Support routine for next unit test */ function createDataforColorChange() { - var nodes = new vis.DataSet([ + var nodes = new DataSet([ {id: 1, label: 'Node 1' }, // group:'Group1'}, {id: 2, label: 'Node 2', group:'Group2'}, {id: 3, label: 'Node 3'}, ]); // create an array with edges - var edges = new vis.DataSet([ + var edges = new DataSet([ {id: 1, from: 1, to: 2}, {id: 2, from: 1, to: 3, color: { inherit: 'to'}}, {id: 3, from: 3, to: 3, color: { color: '#00FF00'}}, @@ -556,7 +556,7 @@ describe('Edge', function () { }; // Test passing options on init. - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); var edges = network.body.edges; assert.equal(edges[1].options.color.inherit, 'to'); // new default assert.equal(edges[2].options.color.inherit, 'to'); // set in edge @@ -574,7 +574,7 @@ describe('Edge', function () { assert.equal(edges[4].options.color.inherit, 'from'); // set in edge // Check no options - network = new vis.Network(container, data, {}); + network = new Network(container, data, {}); edges = network.body.edges; assert.equal(edges[1].options.color.inherit, 'from'); // default assert.equal(edges[2].options.color.inherit, 'to'); // set in edge @@ -605,7 +605,7 @@ describe('Edge', function () { var data = createDataforColorChange(); // Check no options - var network = new vis.Network(container, data, {}); + var network = new Network(container, data, {}); var edges = network.body.edges; assert.equal(edges[1].options.color.inherit, 'from'); // default assert.equal(edges[2].options.color.inherit, 'to'); // set in edge @@ -636,7 +636,7 @@ describe('Edge', function () { }; // Test passing options on init. - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); var edges = network.body.edges; assert.equal(edges[1].options.color.color, color); assert.equal(edges[1].options.color.inherit, false); // Explicit color, so no inherit @@ -655,7 +655,7 @@ describe('Edge', function () { assert.equal(edges[4].options.color.color, defaultColor); // Check no options - network = new vis.Network(container, data, {}); + network = new Network(container, data, {}); edges = network.body.edges; // At this point, color has not changed yet assert.equal(edges[1].options.color.color, defaultColor); @@ -680,10 +680,10 @@ describe('Edge', function () { it('has reconnected edges', function () { var node1 = {id:1, label:"test1"}; var node2 = {id:2, label:"test2"}; - var nodes = new vis.DataSet([node1, node2]); + var nodes = new DataSet([node1, node2]); var edge = {id:1, from: 1, to:2}; - var edges = new vis.DataSet([edge]); + var edges = new DataSet([edge]); var data = { nodes: nodes, @@ -691,7 +691,7 @@ describe('Edge', function () { }; var container = document.getElementById('mynetwork'); - var network = new vis.Network(container, data); + var network = new Network(container, data); //remove node causing edge to become disconnected nodes.remove(node2.id); @@ -893,7 +893,7 @@ describe('Clustering', function () { */ function createOutlierGraph() { // create an array with nodes - var nodes = new vis.DataSet([ + var nodes = new DataSet([ {id: 1, label: '1', group:'Group1'}, {id: 2, label: '2', group:'Group2'}, {id: 3, label: '3', group:'Group3'}, @@ -902,7 +902,7 @@ describe('Clustering', function () { ]); // create an array with edges - var edges = new vis.DataSet([ + var edges = new DataSet([ {from: 1, to: 3}, {from: 1, to: 2}, {from: 2, to: 4}, @@ -924,7 +924,7 @@ describe('Clustering', function () { } }; - var network = new vis.Network (container, data, options); + var network = new Network (container, data, options); return network; } @@ -1320,8 +1320,8 @@ describe('runs example ', function () { // create a network var data = { - nodes: new vis.DataSet(nodes), - edges: new vis.DataSet(edges) + nodes: new DataSet(nodes), + edges: new DataSet(edges) }; if (noPhysics) { @@ -1330,7 +1330,7 @@ describe('runs example ', function () { options.physics = false; } - var network = new vis.Network(container, data, options); + var network = new Network(container, data, options); return network; }; diff --git a/test/PointItem.test.js b/test/PointItem.test.js index 463c3f9a..9d2c333d 100644 --- a/test/PointItem.test.js +++ b/test/PointItem.test.js @@ -1,10 +1,8 @@ var assert = require('assert'); -var vis = require('../dist/vis'); var jsdom = require('mocha-jsdom'); -var moment = vis.moment; -var timeline = vis.timeline; +var moment = require('../lib/module/moment'); var PointItem = require("../lib/timeline/component/item/PointItem"); -var Range = timeline.Range; +var Range = require('../lib/timeline/Range'); var TestSupport = require('./TestSupport'); describe('Timeline PointItem', function () { diff --git a/test/TestSupport.js b/test/TestSupport.js index 1de998b6..06381cdf 100644 --- a/test/TestSupport.js +++ b/test/TestSupport.js @@ -1,5 +1,4 @@ -var vis = require('../dist/vis'); -var DataSet = vis.DataSet; +var DataSet = require('../lib/DataSet'); module.exports = { buildMockItemSet: function() { @@ -35,8 +34,8 @@ module.exports = { }, hiddenDates: [], util: {} - } - body.dom.rollingModeBtn = document.createElement('div') + }; + body.dom.rollingModeBtn = document.createElement('div'); return body } -} +}; diff --git a/test/TimeStep.test.js b/test/TimeStep.test.js index de5210bb..7f3aa5a2 100644 --- a/test/TimeStep.test.js +++ b/test/TimeStep.test.js @@ -1,9 +1,7 @@ var assert = require('assert'); -var vis = require('../dist/vis'); -var jsdom = require('mocha-jsdom') -var moment = vis.moment; -var timeline = vis.timeline; -var TimeStep = timeline.TimeStep; +var jsdom = require('mocha-jsdom'); +var moment = require('../lib/module/moment'); +var TimeStep = require('../lib/timeline/TimeStep'); var TestSupport = require('./TestSupport'); describe('TimeStep', function () { diff --git a/test/TimelineItemSet.test.js b/test/TimelineItemSet.test.js index 8892c49e..baf597ed 100644 --- a/test/TimelineItemSet.test.js +++ b/test/TimelineItemSet.test.js @@ -1,15 +1,19 @@ 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 () { - delete require.cache[require.resolve('../dist/vis')] this.jsdom = require('jsdom-global')(); - this.vis = require('../dist/vis'); - var TestSupport = require('./TestSupport'); - var rangeBody = TestSupport.buildSimpleTimelineRangeBody(); - this.testrange = new this.vis.timeline.Range(rangeBody); + 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 this.vis.DataSet({ + this.testitems = new DataSet({ type: { start: 'Date', end: 'Date' @@ -18,11 +22,11 @@ describe('Timeline ItemSet', function () { // 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 = { @@ -56,20 +60,20 @@ describe('Timeline ItemSet', function () { }, util: { } - } + }; return body; }; it('should initialise with minimal data', function () { var body = getBasicBody(); - var itemset = new this.vis.timeline.components.ItemSet(body, {}); + 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 this.vis.timeline.components.ItemSet(body, {}); + var itemset = new ItemSet(body, {}); itemset.redraw(); assert.equal(itemset.dom.frame.className, 'vis-itemset'); assert.equal(itemset.dom.background.className, 'vis-background'); @@ -80,14 +84,13 @@ describe('Timeline ItemSet', function () { it('should start with no items', function () { var body = getBasicBody(); - var itemset = new this.vis.timeline.components.ItemSet(body, {}); + var itemset = new ItemSet(body, {}); assert.equal(itemset.getItems(), null); }); it('should store items correctly', function() { var body = getBasicBody(); body.range = this.testrange; - var DateUtil = this.vis.timeline.DateUtil; body.util.toScreen = function(time) { return DateUtil.toScreen({ body: { @@ -100,7 +103,7 @@ describe('Timeline ItemSet', function () { } }, time, 900) }; - var itemset = new this.vis.timeline.components.ItemSet(body, {}); + var itemset = new ItemSet(body, {}); itemset.setItems(this.testitems); assert.equal(itemset.getItems().length, 2); assert.deepEqual(itemset.getItems(), this.testitems); diff --git a/test/TimelineRange.test.js b/test/TimelineRange.test.js index f73d84df..933e5f99 100644 --- a/test/TimelineRange.test.js +++ b/test/TimelineRange.test.js @@ -1,9 +1,7 @@ var assert = require('assert'); -var vis = require('../dist/vis'); -var jsdom = require('mocha-jsdom') -var moment = vis.moment; -var timeline = vis.timeline; -var Range = timeline.Range; +var jsdom = require('mocha-jsdom'); +var moment = require('../lib/module/moment'); +var Range = require('../lib/timeline/Range'); var TestSupport = require('./TestSupport'); describe('Timeline Range', function () {