// eslint-disable-next-line no-shadow-restricted-names (function(undefined) { 'use strict'; describe('Collapsible', function() { var $el, html, html_custom, initialize = function(template) { setFixtures(template); $el = $('.collapsible'); Collapsible.setCollapsibles($el); }, disableFx = function() { $.fx.off = true; }, enableFx = function() { $.fx.off = false; }; beforeEach(function() { html = '' + '
' + '
shortform message
' + '
' + '

longform is visible

' + '
' + '
'; html_custom = '' + '
' + '
shortform message
' + '
' + '

longform is visible

' + '
' + '
'; }); describe('setCollapsibles', function() { it('Default container initialized correctly', function() { initialize(html); expect($el.find('.shortform')).toContainElement('.full-top'); expect($el.find('.shortform')).toContainElement('.full-bottom'); expect($el.find('.longform')).toBeHidden(); expect($el.find('.full')).toHandle('click'); }); it('Custom container initialized correctly', function() { initialize(html_custom); expect($el.find('.shortform-custom')).toContainElement('.full-custom'); expect($el.find('.full-custom')).toHaveText('Show shortform-custom'); expect($el.find('.longform')).toBeHidden(); expect($el.find('.full-custom')).toHandle('click'); }); }); describe('toggleFull', function() { var assertChanges = function(state, anchorsElClass, showText, hideText) { var anchors, text; if (state == null) { state = 'closed'; } anchors = $el.find('.' + anchorsElClass); if (state === 'closed') { expect($el.find('.longform')).toBeHidden(); expect($el).not.toHaveClass('open'); text = showText; } else { expect($el.find('.longform')).toBeVisible(); expect($el).toHaveClass('open'); text = hideText; } $.each(anchors, function(index, el) { expect(el).toHaveText(text); }); }; beforeEach(function() { disableFx(); }); afterEach(function() { enableFx(); }); it('Default container', function() { var event; initialize(html); event = jQuery.Event('click', { target: $el.find('.full').get(0) }); Collapsible.toggleFull(event, 'See full output', 'Hide output'); assertChanges('opened', 'full', 'See full output', 'Hide output'); Collapsible.toggleFull(event, 'See full output', 'Hide output'); assertChanges('closed', 'full', 'See full output', 'Hide output'); }); it('Custom container', function() { var event; initialize(html_custom); event = jQuery.Event('click', { target: $el.find('.full-custom').get(0) }); Collapsible.toggleFull(event, 'Show shortform-custom', 'Hide shortform-custom'); assertChanges('opened', 'full-custom', 'Show shortform-custom', 'Hide shortform-custom'); Collapsible.toggleFull(event, 'Show shortform-custom', 'Hide shortform-custom'); assertChanges('closed', 'full-custom', 'Show shortform-custom', 'Hide shortform-custom'); }); }); }); }).call(this);