diff --git a/test/Popup.test.js b/test/Popup.test.js new file mode 100644 index 00000000..7f5bad9f --- /dev/null +++ b/test/Popup.test.js @@ -0,0 +1,143 @@ +var assert = require('assert'); +var jsdom_global = require('jsdom-global'); + +var canvasMockify = require('./canvas-mock'); +var Popup = require('../lib/shared/Popup').default; + + +describe('Popup', function () { + before(function() { + this.jsdom_global = jsdom_global( + "
", + { skipWindowCheck: true} + ); + canvasMockify(window); + this.container = document.getElementById('mynetwork'); + }); + + after(function() { + this.jsdom_global(); + }); + + describe('constructor', function () { + + it('defaults overflowMethod to "cap"', function () { + var popup = new Popup(this.container); + assert.equal(popup.overflowMethod, 'cap'); + }); + + it('defaults hidden to false', function () { + var popup = new Popup(this.container); + assert.equal(popup.hidden, false); + }); + }); + + describe('setPosition', function () { + + it('handles ints', function () { + var popup = new Popup(this.container); + popup.setPosition(1, 2); + assert.equal(popup.x, 1); + assert.equal(popup.y, 2); + }); + + it('handles strings', function () { + var popup = new Popup(this.container); + popup.setPosition('1', '2'); + assert.equal(popup.x, 1); + assert.equal(popup.y, 2); + }); + + it('handles null with NaN', function () { + var popup = new Popup(this.container); + popup.setPosition(null, null); + assert(isNaN(popup.x)); + assert(isNaN(popup.y)); + }); + + it('handles null with NaN', function () { + var popup = new Popup(this.container); + popup.setPosition(undefined, undefined); + assert(isNaN(popup.x)); + assert(isNaN(popup.y)); + }); + }); + + describe('setText', function () { + + it('using Element replaces innerHTML', function () { + var popup = new Popup(this.container); + popup.frame.innerHTML = '
This will get cleared!
'; + popup.setText(document.createElement('div')); + assert.equal(popup.frame.innerHTML, '
'); + }); + + it('using string replaces innerHTML', function () { + var popup = new Popup(this.container); + popup.frame.innerHTML = '
This will get cleared!
'; + popup.setText('your text here!'); + assert.equal(popup.frame.innerHTML, 'your text here!'); + }); + }); + + describe('show', function () { + + it('set to undefined will show', function () { + var popup = new Popup(this.container); + popup.show(undefined); + assert.equal(popup.hidden, false); + assert.notEqual(popup.frame.style.left, "0px"); + assert.notEqual(popup.frame.style.top, "0px"); + assert.equal(popup.frame.style.visibility, "visible"); + }); + + it('set to true will show', function () { + var popup = new Popup(this.container); + popup.show(true); + assert.equal(popup.hidden, false); + assert.notEqual(popup.frame.style.left, "0px"); + assert.notEqual(popup.frame.style.top, "0px"); + assert.equal(popup.frame.style.visibility, "visible"); + }); + + it('set to true with overflowMethod "flip" will show', function () { + var popup = new Popup(this.container, 'flip'); + popup.show(true); + assert.equal(popup.hidden, false); + assert.equal(popup.frame.style.left, "0px"); + assert.equal(popup.frame.style.top, "0px"); + assert.equal(popup.frame.style.visibility, "visible"); + }); + + it('set to false will hide', function () { + var popup = new Popup(this.container); + popup.show(false); + assert.equal(popup.hidden, true); + assert.equal(popup.frame.style.left, "0px"); + assert.equal(popup.frame.style.top, "0px"); + assert.equal(popup.frame.style.visibility, "hidden"); + }); + }); + + describe('hide', function () { + + it('sets hidden to true, frame style to 0,0 and visibility to hidden', function () { + var popup = new Popup(this.container); + popup.hide(); + assert.equal(popup.hidden, true); + assert.equal(popup.frame.style.left, "0px"); + assert.equal(popup.frame.style.top, "0px"); + assert.equal(popup.frame.style.visibility, "hidden"); + }); + }); + + describe('destroy', function () { + + it('removes frame from container', function () { + var numChildrenBeforePopup = this.container.children.length; + var popup = new Popup(this.container); + popup.destroy(); + assert.equal(this.container.children.length, numChildrenBeforePopup); + }); + }); +});