orgchart
Version:
Simple and direct organization chart(tree-like hierarchy) plugin based on pure DOM and jQuery.
115 lines (102 loc) • 4.21 kB
JavaScript
describe('Hybrid(horizontal + vertical) Chart', () => {
const laolao = '.node:contains("Lao Lao")';
const bomiao = '.node:contains("Bo Miao")';
const sumiao = '.node:contains("Su Miao")';
const hongmiao = '.node:contains("Hong Miao")';
const lixin = '.node:contains("Li Xin")';
const tiehua = '.node:contains("Tie Hua")';
const heihei = '.node:contains("Hei Hei")';
const pangpang = '.node:contains("Pang Pang")';
const dandan = '.node:contains("Dan Dan")';
beforeEach(() => {
cy.visit('demo/drag-drop.html');
});
function dropNodeToAnother (sourceNode, targetNode) {
const dataTransfer = new DataTransfer();
cy.get(sourceNode).trigger('dragstart', { dataTransfer, force: true });
cy.get(targetNode).trigger('drop', { dataTransfer, force: true });
}
it('drag lixin onto hongmiao', () => {
dropNodeToAnother(lixin, hongmiao);
cy.get(hongmiao).should(($node) => {
expect($node.siblings('.nodes')).to.exist;
expect($node.siblings('.nodes').find('.node:contains("Li Xin")')).to.exist;
});
cy.get(bomiao).should(($node) => {
expect($node.siblings('.nodes')).not.to.exist;
});
});
it('drag lixin onto heihei', () => {
dropNodeToAnother(lixin, heihei);
cy.get(heihei).should(($node) => {
expect($node.siblings('.nodes').find('.node').length).to.equal(3);
expect($node.siblings('.nodes').find('.node:contains("Li Xin")')).to.exist;
});
cy.get(bomiao).should(($node) => {
expect($node.siblings('.nodes')).not.to.exist;
});
});
it('heihei onto hongmiao', () => {
dropNodeToAnother(heihei, hongmiao);
cy.get(hongmiao).should(($node) => {
expect($node.siblings('.nodes')).to.exist;
expect($node.siblings('.nodes').find('.node').length).to.equal(3);
expect($node.siblings('.nodes').find('.node:contains("Hei Hei")')).to.exist;
});
cy.get(sumiao).should(($node) => {
expect($node.siblings('.nodes').find('.node:contains("Tie Hua")')).to.exist;
});
});
it('heihei onto bomiao', () => {
dropNodeToAnother(heihei, bomiao);
cy.get(bomiao).should(($node) => {
expect($node.siblings('.nodes').find('.node').length).to.equal(4);
expect($node.siblings('.nodes').find('.node:contains("Hei Hei")')).to.exist;
});
cy.get(sumiao).should(($node) => {
expect($node.siblings('.nodes').find('.node:contains("Tie Hua")')).to.exist;
});
});
it('pangpang onto heihei', () => {
dropNodeToAnother(pangpang, heihei);
cy.get(heihei).should(($node) => {
expect($node.siblings('.nodes').find('.node').length).to.equal(2);
expect($node.siblings('.nodes').find('.node:contains("Pang Pang")')).to.exist;
});
});
it('dandan onto heihei', () => {
dropNodeToAnother(dandan, heihei);
cy.get(heihei).should(($node) => {
expect($node.siblings('.nodes').find('.node').length).to.equal(2);
expect($node.siblings('.nodes').find('.node:contains("Dan Dan")')).to.exist;
});
});
it('pangpang onto dandan', () => {
dropNodeToAnother(pangpang, dandan);
cy.get(heihei).should(($node) => {
expect($node.siblings('.nodes').find('.node')).to.exist;
expect($node.siblings('.nodes').find('.node:contains("Dan Dan")')).to.exist;
});
cy.get(dandan).should(($node) => {
expect($node.siblings('.nodes').find('.node')).to.exist;
expect($node.siblings('.nodes').find('.node:contains("Pang Pang")')).to.exist;
});
});
it('heihei onto pangpang', () => {
dropNodeToAnother(heihei, pangpang);
cy.get(heihei).should(($node) => {
expect($node.siblings('.nodes').find('.node').length).to.equal(2);
expect($node.siblings('.nodes').find('.node:contains("Pang Pang")')).to.exist;
expect($node.siblings('.nodes').find('.node:contains("Dan Dan")')).to.exist;
});
});
it('hongmiao onto lixin', () => {
dropNodeToAnother(hongmiao, lixin);
cy.get(laolao).should(($node) => {
expect($node.siblings('.nodes').children('.hierarchy:contains("Hong Miao")')).to.exist;
});
cy.get(lixin).should(($node) => {
expect($node.siblings('.nodes').find('.node:contains("Hong Miao")')).not.to.exist;
});
});
});