<!doctype html> <!-- @license Copyright (c) 2015 The Polymer Project Authors. All rights reserved. This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt --> <html> <head> <meta charset="UTF-8"> <title>iron-dropdown-scroll-manager tests</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> <script src="../../webcomponentsjs/webcomponents-lite.js"></script> <script src="../../web-component-tester/browser.js"></script> <script src="../../test-fixture/test-fixture-mocha.js"></script> <script src="../../iron-test-helpers/mock-interactions.js"></script> <link rel="import" href="../iron-dropdown-scroll-manager.html"> <link rel="import" href="../../test-fixture/test-fixture.html"> </head> <body> <test-fixture id="DOMSubtree"> <template> <div id="Parent"> <div id="ChildOne"> <div id="GrandchildOne"></div> </div> <div id="ChildTwo"> <div id="GrandchildTwo"></div> </div> </div> </template> </test-fixture> <script> suite('IronDropdownScrollManager', function() { var parent; var childOne; var childTwo; var grandchildOne; var grandchildTwo; var ancestor; setup(function() { parent = fixture('DOMSubtree'); childOne = parent.querySelector('#ChildOne'); childTwo = parent.querySelector('#ChildTwo'); grandChildOne = parent.querySelector('#GrandchildOne'); grandChildTwo = parent.querySelector('#GrandchildTwo'); ancestor = document.body; }); suite('contraining scroll in the DOM', function() { setup(function() { Polymer.IronDropdownScrollManager.pushScrollLock(childOne); }); teardown(function() { Polymer.IronDropdownScrollManager.removeScrollLock(childOne); }); test('recognizes sibling as locked', function() { expect(Polymer.IronDropdownScrollManager.elementIsScrollLocked(childTwo)) .to.be.equal(true); }); test('recognizes neice as locked', function() { expect(Polymer.IronDropdownScrollManager.elementIsScrollLocked(grandChildTwo)) .to.be.equal(true); }); test('recognizes parent as locked', function() { expect(Polymer.IronDropdownScrollManager.elementIsScrollLocked(parent)) .to.be.equal(true); }); test('recognizes ancestor as locked', function() { expect(Polymer.IronDropdownScrollManager.elementIsScrollLocked(ancestor)) .to.be.equal(true); }); test('recognizes locking child as unlocked', function() { expect(Polymer.IronDropdownScrollManager.elementIsScrollLocked(childOne)) .to.be.equal(false); }); test('recognizes descendant of locking child as unlocked', function() { expect(Polymer.IronDropdownScrollManager.elementIsScrollLocked(grandChildOne)) .to.be.equal(false); }); test('unlocks locked elements when there are no locking elements', function() { Polymer.IronDropdownScrollManager.removeScrollLock(childOne); expect(Polymer.IronDropdownScrollManager.elementIsScrollLocked(parent)) .to.be.equal(false); }); }); }); </script> </body> </html>