From 08e5d1e0e187c853f13e964049ff010e4087d8ed Mon Sep 17 00:00:00 2001 From: imakewebthings Date: Thu, 7 Nov 2013 14:32:34 -0800 Subject: [PATCH] Clean up tests for removed iframe hack and deferred hash goto call --- test/fixtures/iframe_simple.html | 10 ----- test/fixtures/iframes.html | 32 ---------------- test/spec.core.js | 79 +++++++++++----------------------------- test/spec.hash.js | 28 +++++++------- test/spec.navigation.js | 16 ++++---- test/spec.status.js | 14 ++++--- 6 files changed, 53 insertions(+), 126 deletions(-) delete mode 100644 test/fixtures/iframe_simple.html delete mode 100644 test/fixtures/iframes.html diff --git a/test/fixtures/iframe_simple.html b/test/fixtures/iframe_simple.html deleted file mode 100644 index a64e9c0..0000000 --- a/test/fixtures/iframe_simple.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Simple Iframe - - diff --git a/test/fixtures/iframes.html b/test/fixtures/iframes.html deleted file mode 100644 index 016665e..0000000 --- a/test/fixtures/iframes.html +++ /dev/null @@ -1,32 +0,0 @@ -
-
- -
-
- -
- -
- -
- -
- -
- -
- -
- -

- - / - -

- -
- - - -
-
diff --git a/test/spec.core.js b/test/spec.core.js index 9c7866a..6298724 100755 --- a/test/spec.core.js +++ b/test/spec.core.js @@ -51,7 +51,7 @@ describe('Deck JS', function() { $.deck('go', 5); expect($.deck('getSlide')).toHaveClass('slide1'); }); - + it('should go nowhere if id does not exist', function() { $.deck('go', 'i-dont-exist'); expect($.deck('getSlide')).toHaveClass('slide1'); @@ -123,13 +123,13 @@ describe('Deck JS', function() { expect(slides).toEqual(expectation); }); }); - + describe('getContainer()', function() { it('should return a jQuery object with the container element(s)', function() { expect($.deck('getContainer')).toBe(defaults.selectors.container); }); }); - + describe('getOptions()', function() { it('should return the current options object', function() { expect($.deck('getOptions')).toEqual(defaults); @@ -229,7 +229,7 @@ describe('Deck JS', function() { $d.trigger(e); expect($.deck('getSlide')).toHaveClass('alt-slide1'); }); - + it('should not trigger events that originate within editable elements', function() { var $outside = $('').appendTo('body'); e = jQuery.Event('keydown'); @@ -273,12 +273,12 @@ describe('Deck JS', function() { expect(from).toEqual(1); expect(to).toEqual(3); }; - + $d.bind('deck.change', f); $.deck('go', 3); $d.unbind('deck.change', f); }); - + it('should not change slides if default prevented', function() { $d.bind('deck.change', false); $.deck('go', 3); @@ -286,33 +286,33 @@ describe('Deck JS', function() { $d.unbind('deck.change', false); }); }); - + describe('deck.init', function() { it('should fire on deck initialization', function() { expect('deck.init').toHaveBeenTriggeredOn($d); }); - + it('should have already populated the slides array', function() { var f = function() { expect($.deck('getSlides').length).toBeGreaterThan(0); }; - + $d.bind('deck.init', f); $.deck('.slide'); $d.unbind('deck.init', f); }); }); - + describe('deck.beforeInit', function() { it('should fire on deck initialization', function() { expect('deck.beforeInit').toHaveBeenTriggeredOn($d); }); - + it('should have not populated the slides array', function() { var f = function() { expect($.deck('getSlides').length).toEqual(0); }; - + $d.bind('deck.beforeInit', f); $.deck('.slide'); $d.unbind('deck.beforeInit', f); @@ -320,7 +320,7 @@ describe('Deck JS', function() { }); }); }); - + describe('complex html structure', function() { beforeEach(function() { loadFixtures('complex.html'); @@ -341,43 +341,43 @@ describe('Deck JS', function() { ]); $.deck('go', 2); }); - + describe('compound state classes', function() { it('should apply current class', function() { $('.slide3').each(function(i, el) { expect($(el)).toHaveClass(defaults.classes.current); }); }); - + it('should apply previous class', function() { $('.slide2').each(function(i, el) { expect($(el)).toHaveClass(defaults.classes.previous); }); }); - + it('should apply next class', function() { $('.slide4').each(function(i, el) { expect($(el)).toHaveClass(defaults.classes.next); }); }); - + it('should apply before class', function() { $('.slide1').each(function(i, el) { expect($(el)).toHaveClass(defaults.classes.before); }); }); - + it('should apply after class', function() { $('.slide5, .slide6, .slide7, .slide8, .slide9, .slide10').each(function(i, el) { expect($(el)).toHaveClass(defaults.classes.after); }); }); - + it('should apply child-current class', function() { expect($('.slide2').not('.slide10')).toHaveClass(defaults.classes.childCurrent); }); }); - + it('should remove old state classes', function() { $.deck('go', 4); expect($('.slide3').not('.slide5')).not.toHaveClass(defaults.classes.current); @@ -386,49 +386,12 @@ describe('Deck JS', function() { }); }); - describe('iframes', function() { - beforeEach(function() { - loadFixtures('iframes.html'); - if (Modernizr.history) { - history.replaceState({}, "", "#") - } - $.deck([ - '.slide1', - '.slide2', - '.slide3', - '.slide4', - '.slide5', - '.slide6', - '.slide7', - '.slide8', - '.slide9', - '.slide10', - ]); - - }); - - it('should remove/restore iframe sources when leaving/entering a slide', function() { - $.deck('go', 4); - expect($.deck('getSlide').find('iframe').attr('src')).toEqual('fixtures/iframe_simple.html'); - $.deck('next'); - expect($('.slide5').find('iframe').attr('src')).toEqual(''); - $.deck('prev'); - expect($('.slide5').find('iframe').attr('src')).toEqual('fixtures/iframe_simple.html'); - }); - - it('should not store blank iframe sources', function() { - $.deck('go', 6); - $.deck('next'); - expect($.deck('getSlide').find('iframe').data('src')).toBeUndefined(); - }); - }); - describe('empty deck', function() { beforeEach(function() { loadFixtures('empty.html'); $.deck('.slide'); }); - + describe('getSlide()', function() { it('should not error on init', $.noop); }); diff --git a/test/spec.hash.js b/test/spec.hash.js index c1faafd..c1746fe 100644 --- a/test/spec.hash.js +++ b/test/spec.hash.js @@ -9,27 +9,27 @@ describe('Deck JS Hash Extension', function() { } $.deck('.slide'); }); - + it('should assign ids to slides that do not have them', function() { var slides = $.deck('getSlides'); $.each(slides, function(i, $e) { expect($e.attr('id')).toBeTruthy(); }); }); - + it('should reassign ids on reinitialization', function() { var $firstSlide = $.deck('getSlide', 0), firstID = $firstSlide.attr('id'); - + $firstSlide.before('
'); $.deck('.slide'); expect($firstSlide).not.toHaveId(firstID); }); - + it('should update container with a state class including the slide id', function() { var $c = $.deck('getContainer'), osp = defaults.classes.onPrefix; - + expect($c).toHaveClass(osp + $.deck('getSlide', 0).attr('id')); $.deck('next'); expect($c).toHaveClass(osp + $.deck('getSlide', 1).attr('id')); @@ -37,43 +37,45 @@ describe('Deck JS Hash Extension', function() { expect($c).not.toHaveClass(osp + $.deck('getSlide', 1).attr('id')); expect($c).toHaveClass(osp + $.deck('getSlide', 2).attr('id')); }); - + it('should update the href on slide change', function() { var $hashLink = $(defaults.selectors.hashLink); $.deck('go', 3); expect($hashLink.attr('href')).toMatch('#slide-3'); }); - + it('should use existing ids if they exist', function() { var $hashLink = $(defaults.selectors.hashLink); $.deck('go', 1); expect($hashLink.attr('href')).toMatch('#custom-id'); }); - + it('should update the URL on slide change (if supported)', function() { if (Modernizr.history) { $.deck('go', 3); expect(window.location.hash).toEqual('#slide-3'); } }); - + it('should deep link to slide on deck init', function() { window.location.hash = "#slide-3"; $.deck('.slide'); - expect($.deck('getSlide')).toHaveId('slide-3'); + waitsFor(function() { + return $.deck('getSlide').attr('id') === 'slide-3'; + }); }); - + it('should follow internal hash links using hashchange (if supported)', function() { if (Modernizr.hashchange) { window.location.hash = "#slide-3"; - + // Hashchange event doesn't fire right when the hash changes? waitsFor(function() { return $.deck('getSlide').attr('id') === 'slide-3'; }, 'hash to change to slide-3', 2000); } }); - + it('should follow internal hash links on click', function() { /* Triggered clicks dont generate hashchanges, so until I find a way to do this in an automated fashion, needs to be hand tested. */ diff --git a/test/spec.navigation.js b/test/spec.navigation.js index 46f6f21..9102518 100644 --- a/test/spec.navigation.js +++ b/test/spec.navigation.js @@ -9,18 +9,18 @@ describe('Deck JS Navigation Buttons', function() { } $.deck('.slide'); }); - + it('should go to the next slide if next link is clicked', function() { $(defaults.selectors.nextLink).click(); expect($.deck('getSlide')).toHaveClass('slide2'); }); - + it('should go to the previous slide if previous link is clicked', function() { $.deck('go', 2); $(defaults.selectors.previousLink).click(); expect($.deck('getSlide')).toHaveClass('slide2'); }); - + it('should add the disabled class to the previous link if on first slide', function() { expect($(defaults.selectors.previousLink)).toHaveClass(defaults.classes.navDisabled); $(defaults.selectors.nextLink).click(); @@ -28,19 +28,21 @@ describe('Deck JS Navigation Buttons', function() { $(defaults.selectors.previousLink).click(); expect($(defaults.selectors.previousLink)).toHaveClass(defaults.classes.navDisabled); }); - + it('should add the disabled class to the next link if on last slide', function() { expect($(defaults.selectors.nextLink)).not.toHaveClass(defaults.classes.navDisabled); $.deck('go', $.deck('getSlides').length - 1); expect($(defaults.selectors.nextLink)).toHaveClass(defaults.classes.navDisabled); }); - + it('should not start disabled if deck initialized in the middle', function() { $.deck('go', 2); $.deck('.slide'); - expect($(defaults.selectors.previousLink)).not.toHaveClass(defaults.classes.navDisabled); + waitsFor(function() { + return !$(defaults.selectors.previousLink).hasClass(defaults.classes.navDisabled); + }); }); - + it('should update the links hrefs with real fragment ids', function() { expect($(defaults.selectors.previousLink).attr('href')).toMatch(/#$/); expect($(defaults.selectors.nextLink).attr('href')).toMatch('#custom-id'); diff --git a/test/spec.status.js b/test/spec.status.js index fe0e015..da7a6bf 100644 --- a/test/spec.status.js +++ b/test/spec.status.js @@ -9,18 +9,20 @@ describe('Deck JS Status Indicator', function() { } $.deck('.slide'); }); - + it('should show the correct total number of slides', function() { expect($(defaults.selectors.statusTotal)).toHaveText($.deck('getSlides').length); }); - + it('should start at the right current slide', function() { expect($(defaults.selectors.statusCurrent)).toHaveText(1); $.deck('go', 2); $.deck('.slide'); - expect($(defaults.selectors.statusCurrent)).toHaveText(3); + waitsFor(function() { + return $(defaults.selectors.statusCurrent).text() === '3'; + }); }); - + it('should update to the correct number on slide change', function() { $.deck('go', 2); expect($(defaults.selectors.statusCurrent)).toHaveText('3'); @@ -40,11 +42,11 @@ describe('countNested false indicator', function() { countNested: false }); }); - + it('should ignore nested slides in the total', function() { expect($(defaults.selectors.statusTotal)).toHaveText('5'); }); - + it('should update to the root slide number when nested becomes active', function() { $.deck('go', 10); expect($(defaults.selectors.statusCurrent)).toHaveText('4'); -- 2.11.4.GIT