From: Marius Olbertz Date: Thu, 29 Sep 2016 19:52:16 +0000 (+0200) Subject: Added unit tests for Accordion Menu. X-Git-Tag: v6.2.4-rc1~25^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b7e57dad8cffe3d7a3f06e8eaa3661dc09e41c15;p=thirdparty%2Ffoundation%2Ffoundation-sites.git Added unit tests for Accordion Menu. --- diff --git a/test/javascript/components/accordionMenu.js b/test/javascript/components/accordionMenu.js index 7a3c8df3c..140ee2770 100644 --- a/test/javascript/components/accordionMenu.js +++ b/test/javascript/components/accordionMenu.js @@ -1,20 +1,175 @@ describe('Accordion Menu', function() { - var plugin; - var $html; - - // afterEach(function() { - // plugin.destroy(); - // $html.remove(); - // }); - - describe('constructor()', function() { - // it('', function() { - // $html = $('').appendTo('body'); - // plugin = new Foundation.AccordionMenu($html, {}); - - // plugin.$element.should.be.an('object'); - // plugin.options.should.be.an('object'); - // }); - }); + var plugin; + var $html; + var template = ` + `; + Foundation.AccordionMenu.defaults.slideSpeed = 0; + + afterEach(function() { + plugin.destroy(); + $html.remove(); + }); + + describe('constructor()', function() { + it('stores the element and plugin options', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {}); + + plugin.$element.should.be.an('object'); + plugin.options.should.be.an('object'); + }); + }); + + describe('up()', function() { + it('closes the targeted submenu', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html); + + // Open it first + plugin.down($html.find('.is-accordion-submenu').eq(0)); + + plugin.up($html.find('.is-accordion-submenu').eq(0)); + $html.find('.is-accordion-submenu').eq(0).should.be.hidden; + }); + + it('toggles attributes of title of the targeted container', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {}); + + // Open it first + plugin.down($html.find('.is-accordion-submenu').eq(0)); + + plugin.up($html.find('.is-accordion-submenu').eq(0)); + $html.find('.is-accordion-submenu-parent').eq(0).should.have.attr('aria-expanded', 'false'); + }); + + it('fires up.zf.accordionMenu event', function(done) { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {slideSpeed: 200}); + + // Open it first + plugin.down($html.find('.is-accordion-submenu').eq(0)); + + $html.on('up.zf.accordionMenu', function() { + $html.find('.is-accordion-submenu').eq(0).should.be.hidden; + done(); + }); + plugin.up($html.find('.is-accordion-submenu').eq(0)); + }); + }); + + describe('down()', function() { + it('opens the targeted submenu', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {}); + + plugin.down($html.find('.is-accordion-submenu').eq(0)); + $html.find('.is-accordion-submenu').eq(0).should.be.visible; + }); + + it('toggles attributes of title of the targeted submenu', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {}); + + plugin.down($html.find('.is-accordion-submenu').eq(0)); + $html.find('.is-accordion-submenu-parent').eq(0).should.have.attr('aria-expanded', 'true'); + }); + + it('closes open submenu if multiOpen is false', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {multiOpen: false}); + + // Open another one first + plugin.down($html.find('.is-accordion-submenu').eq(0)); + + plugin.down($html.find('.is-accordion-submenu').eq(2)); + $html.find('.is-accordion-submenu').eq(0).should.be.hidden; + }); + + it('not closes open submenu if multiOpen is true', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {multiOpen: true}); + + // Open another one first + plugin.down($html.find('.is-accordion-submenu').eq(0)); + + plugin.down($html.find('.is-accordion-submenu').eq(2)); + $html.find('.is-accordion-submenu').eq(0).should.be.visible; + }); + + it('fires down.zf.accordionMenu event', function(done) { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {slideSpeed: 200}); + + $html.on('down.zf.accordionMenu', function() { + $html.find('.is-accordion-submenu').eq(0).should.be.visible; + done(); + }); + plugin.down($html.find('.is-accordion-submenu').eq(0)); + }); + }); + + describe('toggle()', function() { + it('opens a closed container', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {}); + + plugin.toggle($html.find('.is-accordion-submenu').eq(0)); + $html.find('.is-accordion-submenu').eq(0).should.be.visible; + }); + + it('closes an open container', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {}); + + // Open first + plugin.down($html.find('.is-accordion-submenu').eq(0)); + + plugin.toggle($html.find('.is-accordion-submenu').eq(0)); + $html.find('.is-accordion-submenu').eq(0).should.be.hidden; + }); + }); + + describe('hideAll()', function() { + it('closes all accordions', function() { + $html = $(template).appendTo('body'); + plugin = new Foundation.AccordionMenu($html, {}); + + // Open some first + plugin.down($html.find('.is-accordion-submenu').eq(0)); + plugin.down($html.find('.is-accordion-submenu').eq(1)); + plugin.down($html.find('.is-accordion-submenu').eq(2)); + + plugin.hideAll(); + + $html.find('[data-submenu]').each(function() { + $(this).should.be.hidden; + }); + }); + }); }); \ No newline at end of file