diff options
| author | fat <[email protected]> | 2015-05-13 12:55:11 -0700 |
|---|---|---|
| committer | fat <[email protected]> | 2015-05-13 13:15:11 -0700 |
| commit | da495ee24c239ef9c9c154670b1a641745ac147f (patch) | |
| tree | 717944507c8c3450d3da3d3373551a6ac2506ac1 /js/tests | |
| parent | f8b2569ec8956a1f4d09fe6fc9865bd200ecde43 (diff) | |
| download | bootstrap-da495ee24c239ef9c9c154670b1a641745ac147f.tar.xz bootstrap-da495ee24c239ef9c9c154670b1a641745ac147f.zip | |
address https://github.com/twbs/bootstrap/pull/16135
Diffstat (limited to 'js/tests')
| -rw-r--r-- | js/tests/unit/scrollspy.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/js/tests/unit/scrollspy.js b/js/tests/unit/scrollspy.js index bf5fa0bff..bf963b3ab 100644 --- a/js/tests/unit/scrollspy.js +++ b/js/tests/unit/scrollspy.js @@ -275,4 +275,90 @@ $(function () { .then(function () { return testElementIsActiveAfterScroll('#li-100-1', '#div-100-1') }) }) + QUnit.test('should allow passed in option offset method: offset', function (assert) { + assert.expect(4) + + var testOffsetMethod = function (type) { + var deferred = $.Deferred() + var navbarHtml = + '<nav class="navbar"' + (type === 'data' ? ' id="navbar-offset-method-menu"' : '') + '>' + + '<ul class="nav">' + + '<li id="li-' + type + 'm-1"><a href="#div-' + type + 'm-1">div 1</a></li>' + + '<li id="li-' + type + 'm-2"><a href="#div-' + type + 'm-2">div 2</a></li>' + + '<li id="li-' + type + 'm-3"><a href="#div-' + type + 'm-3">div 3</a></li>' + + '</ul>' + + '</nav>' + var contentHtml = + '<div class="content"' + (type === 'data' ? ' data-spy="scroll" data-target="#navbar-offset-method-menu" data-offset="0" data-method="offset"' : '') + ' style="position: relative; overflow: auto; height: 100px">' + + '<div id="div-' + type + 'm-1" style="position: relative; height: 200px; padding: 0; margin: 0">div 1</div>' + + '<div id="div-' + type + 'm-2" style="position: relative; height: 150px; padding: 0; margin: 0">div 2</div>' + + '<div id="div-' + type + 'm-3" style="position: relative; height: 250px; padding: 0; margin: 0">div 3</div>' + + '</div>' + + + $(navbarHtml).appendTo('#qunit-fixture') + var $content = $(contentHtml) + .appendTo('#qunit-fixture') + + if (type === 'js') $content.bootstrapScrollspy({ target: '.navbar', offset: 0, method: 'offset' }) + else if (type === 'data') $(window).trigger('load.bs.scrollspy.data-api') + + var $target = $('#div-' + type + 'm-2') + var scrollspy = $content.data('bs.scrollspy') + + assert.ok(scrollspy._offsets[1] === $target.offset().top, 'offsed method with ' + type + ' option') + assert.ok(scrollspy._offsets[1] !== $target.position().top, 'position method with ' + type + ' option') + + deferred.resolve() + + return deferred.promise() + } + + $.when(testOffsetMethod('js')) + .then(function () { testOffsetMethod('data') }) + }) + + QUnit.test('should allow passed in option offset method: position', function (assert) { + assert.expect(4) + + var testOffsetMethod = function (type) { + var deferred = $.Deferred() + var navbarHtml = + '<nav class="navbar"' + (type === 'data' ? ' id="navbar-offset-method-menu"' : '') + '>' + + '<ul class="nav">' + + '<li id="li-' + type + 'm-1"><a href="#div-' + type + 'm-1">div 1</a></li>' + + '<li id="li-' + type + 'm-2"><a href="#div-' + type + 'm-2">div 2</a></li>' + + '<li id="li-' + type + 'm-3"><a href="#div-' + type + 'm-3">div 3</a></li>' + + '</ul>' + + '</nav>' + var contentHtml = + '<div class="content"' + (type === 'data' ? ' data-spy="scroll" data-target="#navbar-offset-method-menu" data-offset="0" data-method="position"' : '') + ' style="position: relative; overflow: auto; height: 100px">' + + '<div id="div-' + type + 'm-1" style="position: relative; height: 200px; padding: 0; margin: 0">div 1</div>' + + '<div id="div-' + type + 'm-2" style="position: relative; height: 150px; padding: 0; margin: 0">div 2</div>' + + '<div id="div-' + type + 'm-3" style="position: relative; height: 250px; padding: 0; margin: 0">div 3</div>' + + '</div>' + + + $(navbarHtml).appendTo('#qunit-fixture') + var $content = $(contentHtml) + .appendTo('#qunit-fixture') + + if (type === 'js') $content.bootstrapScrollspy({ target: '.navbar', offset: 0, method: 'position' }) + else if (type === 'data') $(window).trigger('load.bs.scrollspy.data-api') + + var $target = $('#div-' + type + 'm-2') + var scrollspy = $content.data('bs.scrollspy') + + assert.ok(scrollspy._offsets[1] !== $target.offset().top, 'offsed method with ' + type + ' option') + assert.ok(scrollspy._offsets[1] === $target.position().top, 'position method with ' + type + ' option') + + deferred.resolve() + + return deferred.promise() + } + + $.when(testOffsetMethod('js')) + .then(function () { testOffsetMethod('data') }) + }) + }) |
