From c25c7f0e9e599e9ca1dca6ce0a04119f411c9604 Mon Sep 17 00:00:00 2001 From: alliclemens Date: Wed, 21 Feb 2018 08:00:19 -0600 Subject: [PATCH] Tests added for dropdown open --- test/javascript/components/dropdown.js | 55 ++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/test/javascript/components/dropdown.js b/test/javascript/components/dropdown.js index 9162635c9..373c720f5 100644 --- a/test/javascript/components/dropdown.js +++ b/test/javascript/components/dropdown.js @@ -8,6 +8,12 @@ describe('Dropdown', function() { const getDropdownContainer = (dropdownClasses = '') => `
Dropdown
`; + const getHoverDropdownContainer = (dropdownClasses = '') => + `
Dropdown
`; + + const getAutoFocusDropdownContainer = (dropdownClasses = '') => + `
Dropdown
`; + afterEach(function() { plugin.destroy(); $dropdownController.remove(); @@ -19,6 +25,7 @@ describe('Dropdown', function() { $dropdownController = $(getDropdownController()).appendTo('body'); $dropdownContainer = $(getDropdownContainer()).appendTo('body'); plugin = new Foundation.Dropdown($dropdownContainer, {}); + console.log('dropdown constructor'); plugin.$element.should.be.an('object'); plugin.options.should.be.an('object'); @@ -37,6 +44,54 @@ describe('Dropdown', function() { sinon.assert.called(spy); Foundation.Keyboard.trapFocus.restore(); }); + + it('should open dropdown on button click', function() { + $dropdownController = $(getDropdownController()).appendTo('body'); + $dropdownContainer = $(getDropdownContainer()).appendTo('body'); + plugin = new Foundation.Dropdown($dropdownContainer, {}); + plugin.open(); + + $dropdownController.on('show.zf.dropdown', function() { + $('#my-dropdown').should.not.be.hidden; + $('#my-dropdown').should.have.attr('aria-hidden', 'false'); + $('#my-dropdown').should.have.class('is-open'); + done(); + }); + plugin.close(); + }); + + it('should open dropdown on hover', function() { + $dropdownController = $(getDropdownController()).appendTo('body'); + $dropdownContainer = $(getHoverDropdownContainer()).appendTo('body'); + plugin = new Foundation.Dropdown($dropdownContainer, {}); + plugin.open(); + + $dropdownController.on('show.zf.dropdown', function() { + $('#my-dropdown').should.not.be.hidden; + $('#my-dropdown').should.have.attr('aria-hidden', 'false'); + $('#my-dropdown').should.have.class('is-open'); + done(); + }); + plugin.close(); + }); + + it('should autofocus input on open', function() { + $dropdownController = $(getDropdownController()).appendTo('body'); + $dropdownContainer = $(getAutoFocusDropdownContainer()).appendTo('body'); + plugin = new Foundation.Dropdown($dropdownContainer, {}); + plugin.open(); + + $focusedElement = ''; + + $dropdownController.on('show.zf.dropdown', function() { + $('#my-dropdown').should.not.be.hidden; + $('#my-dropdown').should.have.attr('aria-hidden', 'false'); + $('#my-dropdown').should.have.class('is-open'); + document.activeElement.should.be.equal($focusedElement); + done(); + }); + plugin.close(); + }); }); describe('close()', function() { -- 2.47.2