X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=POLICY-SDK-APP%2Fsrc%2Fmain%2Fwebapp%2Fapp%2FpolicyApp%2FCSS%2Fbootstrap%2Fjs%2Ftests%2Funit%2Fscrollspy.js;fp=POLICY-SDK-APP%2Fsrc%2Fmain%2Fwebapp%2Fapp%2FpolicyApp%2FCSS%2Fbootstrap%2Fjs%2Ftests%2Funit%2Fscrollspy.js;h=bf5fa0bff55689d11342d4b4873ccf7a7eb0d408;hb=e0addf5b588a1244f9679becd90999dfcb4c3a94;hp=0000000000000000000000000000000000000000;hpb=39fb0f30472777e4b60d6a7ac8aa4eb9773961ff;p=policy%2Fengine.git
diff --git a/POLICY-SDK-APP/src/main/webapp/app/policyApp/CSS/bootstrap/js/tests/unit/scrollspy.js b/POLICY-SDK-APP/src/main/webapp/app/policyApp/CSS/bootstrap/js/tests/unit/scrollspy.js
new file mode 100644
index 000000000..bf5fa0bff
--- /dev/null
+++ b/POLICY-SDK-APP/src/main/webapp/app/policyApp/CSS/bootstrap/js/tests/unit/scrollspy.js
@@ -0,0 +1,278 @@
+$(function () {
+ 'use strict';
+
+ QUnit.module('scrollspy plugin')
+
+ QUnit.test('should be defined on jquery object', function (assert) {
+ assert.expect(1)
+ assert.ok($(document.body).scrollspy, 'scrollspy method is defined')
+ })
+
+ QUnit.module('scrollspy', {
+ beforeEach: function () {
+ // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
+ $.fn.bootstrapScrollspy = $.fn.scrollspy.noConflict()
+ },
+ afterEach: function () {
+ $.fn.scrollspy = $.fn.bootstrapScrollspy
+ delete $.fn.bootstrapScrollspy
+ }
+ })
+
+ QUnit.test('should provide no conflict', function (assert) {
+ assert.expect(1)
+ assert.strictEqual($.fn.scrollspy, undefined, 'scrollspy was set back to undefined (org value)')
+ })
+
+ QUnit.test('should return jquery collection containing the element', function (assert) {
+ assert.expect(2)
+ var $el = $('
')
+ var $scrollspy = $el.bootstrapScrollspy()
+ assert.ok($scrollspy instanceof $, 'returns jquery collection')
+ assert.strictEqual($scrollspy[0], $el[0], 'collection contains element')
+ })
+
+ QUnit.test('should only switch "active" class on current target', function (assert) {
+ assert.expect(1)
+ var done = assert.async()
+
+ var sectionHTML = '
'
+ var $section = $(sectionHTML).appendTo('#qunit-fixture')
+
+ var $scrollspy = $section
+ .show()
+ .find('#scrollspy-example')
+ .bootstrapScrollspy({ target: '#ss-target' })
+
+ $scrollspy.on('scroll.bs.scrollspy', function () {
+ assert.ok($section.hasClass('active'), '"active" class still on root node')
+ done()
+ })
+
+ $scrollspy.scrollTop(350)
+ })
+
+ QUnit.test('should correctly select middle navigation option when large offset is used', function (assert) {
+ assert.expect(3)
+ var done = assert.async()
+
+ var sectionHTML = ''
+ + ''
+ + '
'
+ + ''
+ + ''
+ + ''
+ + '
'
+ var $section = $(sectionHTML).appendTo('#qunit-fixture')
+ var $scrollspy = $section
+ .show()
+ .filter('#content')
+
+ $scrollspy.bootstrapScrollspy({ target: '#navigation', offset: $scrollspy.position().top })
+
+ $scrollspy.on('scroll.bs.scrollspy', function () {
+ assert.ok(!$section.find('#one-link').parent().hasClass('active'), '"active" class removed from first section')
+ assert.ok($section.find('#two-link').parent().hasClass('active'), '"active" class on middle section')
+ assert.ok(!$section.find('#three-link').parent().hasClass('active'), '"active" class not on last section')
+ done()
+ })
+
+ $scrollspy.scrollTop(550)
+ })
+
+ QUnit.test('should add the active class to the correct element', function (assert) {
+ assert.expect(2)
+ 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 = Math.ceil($content.scrollTop() + $(target).position().top)
+ var done = assert.async()
+ $content.one('scroll', function () {
+ assert.ok($(element).hasClass('active'), 'target:' + target + ', element' + element)
+ done()
+ deferred.resolve()
+ })
+ $content.scrollTop(scrollHeight)
+ return deferred.promise()
+ }
+
+ $.when(testElementIsActiveAfterScroll('#li-1', '#div-1'))
+ .then(function () { return testElementIsActiveAfterScroll('#li-2', '#div-2') })
+ })
+
+ QUnit.test('should add the active class correctly when there are nested elements at 0 scroll offset', function (assert) {
+ assert.expect(6)
+ var times = 0
+ var done = assert.async()
+ var navbarHtml = ''
+
+ var contentHtml = '
'
+ + '
'
+ + '
div 2
'
+ + '
'
+ + '
'
+
+ $(navbarHtml).appendTo('#qunit-fixture')
+
+ var $content = $(contentHtml)
+ .appendTo('#qunit-fixture')
+ .bootstrapScrollspy({ offset: 0, target: '#navigation' })
+
+ !function testActiveElements() {
+ if (++times > 3) return done()
+
+ $content.one('scroll', function () {
+ assert.ok($('#li-1').hasClass('active'), 'nav item for outer element has "active" class')
+ assert.ok($('#li-2').hasClass('active'), 'nav item for inner element has "active" class')
+ testActiveElements()
+ })
+
+ $content.scrollTop($content.scrollTop() + 10)
+ }()
+ })
+
+ QUnit.test('should clear selection if above the first section', function (assert) {
+ assert.expect(3)
+ var done = assert.async()
+
+ var sectionHTML = ''
+ + ''
+ $(sectionHTML).appendTo('#qunit-fixture')
+
+ var scrollspyHTML = '
'
+ + ''
+ + ''
+ + ''
+ + ''
+ + ''
+ + '
'
+ var $scrollspy = $(scrollspyHTML).appendTo('#qunit-fixture')
+
+ $scrollspy
+ .bootstrapScrollspy({
+ target: '#navigation',
+ offset: $scrollspy.position().top
+ })
+ .one('scroll.bs.scrollspy', function () {
+ assert.strictEqual($('.active').length, 1, '"active" class on only one element present')
+ assert.strictEqual($('.active').has('#two-link').length, 1, '"active" class on second section')
+
+ $scrollspy
+ .one('scroll.bs.scrollspy', function () {
+ assert.strictEqual($('.active').length, 0, 'selection cleared')
+ done()
+ })
+ .scrollTop(0)
+ })
+ .scrollTop(201)
+ })
+
+ QUnit.test('should correctly select navigation element on backward scrolling when each target section height is 100%', function (assert) {
+ assert.expect(5)
+ var navbarHtml =
+ ''
+ var contentHtml =
+ '