Skip to content

Commit

Permalink
add initial test suite
Browse files Browse the repository at this point in the history
  • Loading branch information
woodenconsulting committed May 31, 2017
1 parent 7bcab55 commit bda26a8
Show file tree
Hide file tree
Showing 11 changed files with 665 additions and 21 deletions.
2 changes: 1 addition & 1 deletion .babelrc
Expand Up @@ -2,7 +2,7 @@
"presets": [
"es2017",
"es2016",
["es2015", {"modules": false}],
"es2015",
"react",
"stage-0"
],
Expand Down
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -159,6 +159,7 @@ render() {

#### Supported Keys


__deleteItems__ The deletion of items via delete keypress

__selectItems__ The ability to select any item,
Expand Down
2 changes: 1 addition & 1 deletion demos/demo4/store.js
@@ -1,5 +1,5 @@
import { createStore, compose, applyMiddleware } from 'redux';
import * as createLogger from 'redux-logger';
import createLogger from 'redux-logger';
import { reducer } from './reducer';

const logger = createLogger({
Expand Down
6 changes: 6 additions & 0 deletions package.json
Expand Up @@ -8,6 +8,7 @@
"scripts": {
"start": "node_modules/.bin/babel-node server.js --presets es2015,es2016,es2017,stage-0",
"lint": "eslint src --rulesdir eslint-rules",
"test": "NODE_ENV=test mocha --compilers js:babel-core/register test/.config.js test/**/*-test.js",
"prepublish": "npm run build",
"build:commonjs": "cross-env BABEL_ENV=commonjs babel src --out-dir lib --presets es2015,es2016,es2017,stage-0",
"build:es": "cross-env BABEL_ENV=es babel src --out-dir es --presets es2015,es2016,es2017,stage-0",
Expand Down Expand Up @@ -47,9 +48,13 @@
"babel-runtime": "6.23.0",
"cross-env": "^4.0.0",
"css-loader": "0.26.1",
"enzyme": "^2.8.2",
"eslint": "^3.19.0",
"eslint-plugin-react": "^6.10.3",
"expect.js": "^0.3.1",
"express": "^4.15.2",
"jsdom": "^11.0.0",
"mocha": "^3.4.2",
"node-sass": "4.5.0",
"prop-types": "^15.5.6",
"react": "^15.1.0",
Expand All @@ -62,6 +67,7 @@
"redux-logger": "^2.10.2",
"redux-undo": "^0.6.1",
"sass-loader": "6.0.0",
"sinon": "^2.3.2",
"source-map-loader": "0.1.6",
"style-loader": "0.13.1",
"webpack": "^2.2.1",
Expand Down
2 changes: 1 addition & 1 deletion src/DiagramEngine.js
Expand Up @@ -142,7 +142,7 @@ export class DiagramEngine extends BaseEntity {
};
}

getRelativePoint(x,y) {
getRelativePoint(x, y) {
const canvasRect = this.canvas.getBoundingClientRect();
return { x: x - canvasRect.left, y: y - canvasRect.top };
}
Expand Down
4 changes: 2 additions & 2 deletions src/widgets/DiagramWidget.js
Expand Up @@ -412,10 +412,10 @@ export class DiagramWidget extends React.Component {
});
}
} else if (model.model instanceof PortModel) {
const { getRelativeMousePoint, linkInstanceFactory } = diagramEngine;
const { linkInstanceFactory } = diagramEngine;

// This is a port element, we want to drag a link
const relative = getRelativeMousePoint(event);
const relative = diagramEngine.getRelativeMousePoint(event);
const link = linkInstanceFactory && linkInstanceFactory.getInstance() || new LinkModel();
link.setSourcePort(model.model);

Expand Down
17 changes: 17 additions & 0 deletions test/.config.js
@@ -0,0 +1,17 @@
const { JSDOM } = require('jsdom');
const jsdom = new JSDOM('<!doctype html><html><body></body></html>');
const { window } = jsdom;

function copyProps(src, target) {
const props = Object.getOwnPropertyNames(src)
.filter(prop => typeof target[prop] === 'undefined')
.map(prop => Object.getOwnPropertyDescriptor(src, prop));
Object.defineProperties(target, props);
}

global.window = window;
global.document = window.document;
global.navigator = {
userAgent: 'node.js'
};
copyProps(window, global);
19 changes: 19 additions & 0 deletions test/DiagramModel-test.js
@@ -0,0 +1,19 @@
import expect from 'expect.js';
import DATA from './data';
import { diagramEngine } from './engine';
import { DiagramModel } from '../src/main';

describe('Diagram Model', () => {

it('can deserialize test data', () => {
const diagramModel = new DiagramModel();
diagramModel.deSerializeDiagram(DATA, diagramEngine);

// There should be two nodes
expect(Object.keys(diagramModel.getNodes()).length).to.be(2);

// There should be a single link between nodes
expect(Object.keys(diagramModel.getLinks()).length).to.be(1);
});

});
95 changes: 95 additions & 0 deletions test/data.js
@@ -0,0 +1,95 @@
export default JSON.parse(
`{
"id":"fa093ee2-d52d-4106-b535-42de8f86789a",
"offsetX":0,
"offsetY":0,
"zoom":100,
"links":[
{
"id":"44e3fdc4-8bda-42a7-b01f-645745c540d9",
"_class":"LinkModel",
"selected":false,
"type":"default",
"source":"0c68bf7b-6489-4cf5-8e90-f632bcea59e3",
"sourcePort":"9e4025cc-685c-42f7-91dd-b8bf6fe1b68e",
"target":"a08f533c-b491-4419-b9e3-f547327d92e1",
"targetPort":"f84ee980-79a1-4860-a0b0-e9ff5650e3fe",
"points":[
{
"id":"3d837648-51b8-4d08-bcc2-14f7389029c3",
"_class":"PointModel",
"selected":false,
"x":157.953125,
"y":132.5
},
{
"id":"ef45fed2-45e3-4637-8c2a-74abfc50a216",
"_class":"PointModel",
"selected":false,
"x":409.5,
"y":132.5
}
],
"extras":{
}
}
],
"nodes":[
{
"id":"0c68bf7b-6489-4cf5-8e90-f632bcea59e3",
"_class":"DefaultNodeModel",
"selected":false,
"type":"default",
"x":100,
"y":100,
"extras":{
},
"ports":[
{
"id":"9e4025cc-685c-42f7-91dd-b8bf6fe1b68e",
"_class":"DefaultPortModel",
"selected":false,
"name":"out-1",
"parentNode":"0c68bf7b-6489-4cf5-8e90-f632bcea59e3",
"links":[
"44e3fdc4-8bda-42a7-b01f-645745c540d9"
],
"in":false,
"label":"Out"
}
],
"name":"Node 1",
"color":"rgb(0, 192, 255)"
},
{
"id":"a08f533c-b491-4419-b9e3-f547327d92e1",
"_class":"DefaultNodeModel",
"selected":false,
"type":"default",
"x":400,
"y":100,
"extras":{
},
"ports":[
{
"id":"f84ee980-79a1-4860-a0b0-e9ff5650e3fe",
"_class":"DefaultPortModel",
"selected":false,
"name":"in-1",
"parentNode":"a08f533c-b491-4419-b9e3-f547327d92e1",
"links":[
"44e3fdc4-8bda-42a7-b01f-645745c540d9"
],
"in":true,
"label":"In"
}
],
"name":"Node 2",
"color":"rgb(192, 255, 0)"
}
]
}`
);
9 changes: 9 additions & 0 deletions test/engine.js
@@ -0,0 +1,9 @@
import * as RJD from '../src/main';

// Setup the diagram engine
export const diagramEngine = new RJD.DiagramEngine();
diagramEngine.registerNodeFactory(new RJD.DefaultNodeFactory());
diagramEngine.registerLinkFactory(new RJD.DefaultLinkFactory());
diagramEngine.registerInstanceFactory(new RJD.DefaultNodeInstanceFactory());
diagramEngine.registerInstanceFactory(new RJD.DefaultPortInstanceFactory());
diagramEngine.registerInstanceFactory(new RJD.LinkInstanceFactory());

0 comments on commit bda26a8

Please sign in to comment.