test/tool/erase-tool-test.js
import chai from 'chai';
chai.should();
import EraseTool from '../../src/js/tool/erase-tool';
import Graph from '../../src/js/data/graph';
import CircleNode from '../../src/js/data/node/circle-node';
import SolidEdge from '../../src/js/data/edge/solid-edge';
describe('EraseTool', () => {
let eraseTool;
beforeEach(() => {
eraseTool = new EraseTool();
});
describe('#constructor', () => {
it('should create instance of EraseTool', () => {
eraseTool.should.be.instanceOf(EraseTool);
});
});
describe('#preSelectObject', () => {
it('should return true', () => {
(eraseTool.preSelectObject()).should.be.true;
});
});
describe('#preDragObject', () => {
it('should return false', () => {
(eraseTool.preDragObject()).should.be.false;
});
});
describe('#selectObject', () => {
let graph;
let node1;
let node2;
let edge;
beforeEach(() => {
graph = new Graph();
node1 = new CircleNode(0, 0);
node2 = new CircleNode(100, 100);
graph.addNode(node1);
graph.addNode(node2);
edge = new SolidEdge(node1, node2);
graph.addEdge(edge);
});
it('should remove nodes', () => {
eraseTool.selectObject(null, graph, node1, 0, 0);
(graph.nodes.has(node1)).should.be.false;
});
it('should remove nodes and the edges connected to that node', () => {
eraseTool.selectObject(null, graph, node1, 0, 0);
(graph.nodes.has(edge)).should.be.false;
});
it('should remove edges', () => {
eraseTool.selectObject(null, graph, edge, 0, 0);
(graph.edges.has(edge)).should.be.false;
});
it('should not handle other types of objects', () => {
eraseTool.selectObject(null, graph, null, 0, 0);
(graph.nodes.has(node1)).should.be.true;
(graph.nodes.has(node2)).should.be.true;
(graph.edges.has(edge)).should.be.true;
});
});
describe('#dragOverObject', () => {
let graph;
let node1;
let node2;
let edge;
beforeEach(() => {
graph = new Graph();
node1 = new CircleNode(0, 0);
node2 = new CircleNode(100, 100);
graph.addNode(node1);
graph.addNode(node2);
edge = new SolidEdge(node1, node2);
graph.addEdge(edge);
});
it('should remove nodes', () => {
eraseTool.dragOverObject(null, graph, node1, 0, 0);
(graph.nodes.has(node1)).should.be.false;
});
it('should remove nodes and the edges connected to that node', () => {
eraseTool.dragOverObject(null, graph, node1, 0, 0);
(graph.nodes.has(edge)).should.be.false;
});
it('should remove edges', () => {
eraseTool.dragOverObject(null, graph, edge, 0, 0);
(graph.edges.has(edge)).should.be.false;
});
it('should not handle other types of objects', () => {
eraseTool.dragOverObject(null, graph, null, 0, 0);
(graph.nodes.has(node1)).should.be.true;
(graph.nodes.has(node2)).should.be.true;
(graph.edges.has(edge)).should.be.true;
});
});
});