From: Jacob Date: Mon, 7 Jul 2014 04:43:48 +0000 (-0700) Subject: Merge pull request #13853 from hnrch02/unit-tests-cleanup X-Git-Tag: v3.3.0~379^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5d86ad0bd47cae4e12126d8b84ca49d6c415e5d;p=thirdparty%2Fbootstrap.git Merge pull request #13853 from hnrch02/unit-tests-cleanup Major unit tests cleanup --- b5d86ad0bd47cae4e12126d8b84ca49d6c415e5d diff --cc js/tests/unit/scrollspy.js index d960ba71a9,3eefac85d2..084e6fe6ee --- a/js/tests/unit/scrollspy.js +++ b/js/tests/unit/scrollspy.js @@@ -78,77 -81,44 +81,81 @@@ $(function () .find('#scrollspy-example') .bootstrapScrollspy({ target: '#ss-target' }) - $scrollSpy.on('scroll.bs.scrollspy', function () { - ok($section.hasClass('active'), 'Active class still on root node') + $scrollspy.on('scroll.bs.scrollspy', function () { + ok($section.hasClass('active'), '"active" class still on root node') start() }) - $scrollSpy.scrollTop(350); + + $scrollspy.scrollTop(350) }) - asyncTest('middle navigation option correctly selected when large offset is used', function () { - expect(3); - var sectionHTML = '' + - '' + - '
' + - '
' + - '
' + - '
' + - '
' + test('middle navigation option correctly selected when large offset is used', function () { + stop() + + var sectionHTML = '' + + '' + + '
' + + '
' + + '
' + + '
' + + '
' var $section = $(sectionHTML).appendTo('#qunit-fixture') - var $scrollSpy = $section + var $scrollspy = $section .show() .filter('#content') - $scrollSpy.bootstrapScrollspy({ target: '#navigation', offset: $scrollSpy.position().top }) - $scrollSpy.on('scroll.bs.scrollspy', function () { - ok(!$section.find('#one-link').parent().hasClass('active'), 'Active class removed from first section') - ok($section.find('#two-link').parent().hasClass('active'), 'Active class on middle section') - ok(!$section.find('#three-link').parent().hasClass('active'), 'Active class not on last section') + $scrollspy.bootstrapScrollspy({ target: '#navigation', offset: $scrollspy.position().top }) + + $scrollspy.on('scroll.bs.scrollspy', function () { + ok(!$section.find('#one-link').parent().hasClass('active'), '"active" class removed from first section') + ok($section.find('#two-link').parent().hasClass('active'), '"active" class on middle section') + ok(!$section.find('#three-link').parent().hasClass('active'), '"active" class not on last section') start() }) - $scrollSpy.scrollTop(550); + + $scrollspy.scrollTop(550) }) + + test('should add the active class to the correct element', function () { + var navbarHtml = + '' + var contentHtml = + '
' + + '
div 1
' + + '
div 2
' + + '
' + + $(navbarHtml).appendTo('#qunit-fixture') + var $content = $(contentHtml) + .appendTo('#qunit-fixture') + .bootstrapScrollspy({ offset: 0, target: '.navbar' }) + + var testElementIsActiveAfterScroll = function (element, target) { + var deferred = $.Deferred() + var scrollHeight = $content.scrollTop() + $(target).position().top + stop() + $content.one('scroll', function () { + ok($(element).hasClass('active'), 'target:' + target + ', element' + element) + start() + deferred.resolve() + }) + $content.scrollTop(scrollHeight) + return deferred.promise() + } + + $.when(testElementIsActiveAfterScroll('#li-1', '#div-1')) + .then(function () { return testElementIsActiveAfterScroll('#li-2', '#div-2') }) + }) + })