diff options
Diffstat (limited to 'catapult/third_party/polymer/components/paper-behaviors/test/paper-ripple-behavior.html')
-rw-r--r-- | catapult/third_party/polymer/components/paper-behaviors/test/paper-ripple-behavior.html | 335 |
1 files changed, 335 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/paper-behaviors/test/paper-ripple-behavior.html b/catapult/third_party/polymer/components/paper-behaviors/test/paper-ripple-behavior.html new file mode 100644 index 00000000..9daf17a4 --- /dev/null +++ b/catapult/third_party/polymer/components/paper-behaviors/test/paper-ripple-behavior.html @@ -0,0 +1,335 @@ +<!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> + <title>paper-ripple-behavior</title> + + <script src="../../webcomponentsjs/webcomponents-lite.js"></script> + <script src="../../web-component-tester/browser.js"></script> + <script src="../../iron-test-helpers/mock-interactions.js"></script> + + <link rel="import" href="../../polymer/polymer.html"> + <link rel="import" href="../../iron-behaviors/iron-button-state.html"> + <link rel="import" href="../paper-ripple-behavior.html"> + <link rel="import" href="shadowed-ripple.html"> +</head> +<body> + + <dom-module id="test-ripple"> + <template> + </template> + <script> + HTMLImports.whenReady(function() { + Polymer({ + is: 'test-ripple', + behaviors: [ + Polymer.IronButtonState, + Polymer.IronControlState, + Polymer.PaperRippleBehavior + ] + }); + }); + </script> + </dom-module> + + <test-fixture id="basic"> + <template> + <test-ripple></test-ripple> + </template> + </test-fixture> + + <test-fixture id="ShadowBasic"> + <template> + <sd-ripple></sd-ripple> + </template> + </test-fixture> + + <test-fixture id="ShadowText"> + <template> + <sd-ripple>Howdy!</sd-ripple> + </template> + </test-fixture> + + <test-fixture id="ShadowElement"> + <template> + <sd-ripple> + <div id="source">source!</div> + </sd-ripple> + </template> + </test-fixture> + + <script> + suite('PaperRippleBehavior', function() { + var ripple; + + setup(function() { + ripple = fixture('basic'); + }); + + test('no ripple at startup', function() { + assert.isFalse(ripple.hasRipple()); + }); + + test('calling getRipple returns ripple', function() { + assert.ok(ripple.getRipple()); + }); + + test('focus generates ripple', function() { + MockInteractions.focus(ripple); + assert.ok(ripple.hasRipple()); + }); + + test('down generates ripple', function() { + MockInteractions.down(ripple); + assert.ok(ripple.hasRipple()); + MockInteractions.up(ripple); + }); + + suite('Correct Targeting', function() { + + function assertInteractionCausesRipple(host, node, expected, msg) { + var ripple = host.getRipple(); + Polymer.dom.flush(); + MockInteractions.down(node); + assert.equal(ripple.ripples.length > 0, expected, msg); + MockInteractions.up(node); + } + + function assertInteractionAtLocationCausesRipple(host, node, location, expected, msg) { + var ripple = host.getRipple(); + Polymer.dom.flush(); + MockInteractions.down(node, location); + assert.equal(ripple.ripples.length > 0, expected, msg); + MockInteractions.up(node); + } + + suite('basic', function() { + suite('container = host', function() { + + setup(function() { + ripple = fixture('ShadowBasic'); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, true, 'ripple'); + }); + test('tap #wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + test('tap #separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + }); + + suite('container = wrapper', function() { + + setup(function() { + ripple = fixture('ShadowBasic'); + ripple._rippleContainer = ripple.$.wrapper; + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap #wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap #separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, false, '#separate') + }); + }); + + suite('container = separate', function() { + + setup(function() { + ripple = fixture('ShadowBasic'); + ripple._rippleContainer = ripple.$.separate; + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, false, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + }); + }); + + suite('distributed text', function() { + var textLocation; + + function getTextLocation(ripple) { + // build a Range to get the BCR of a given text node + var r = document.createRange(); + r.selectNode(Polymer.dom(ripple.$.content).getDistributedNodes()[0]); + return MockInteractions.middleOfNode(r); + } + + suite('container = host', function() { + setup(function() { + ripple = fixture('ShadowText'); + textLocation = getTextLocation(ripple); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, true, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + + test('tap text', function() { + assertInteractionAtLocationCausesRipple(ripple, ripple.$.wrapper, textLocation, true, 'text'); + }); + }); + + suite('container = wrapper', function() { + setup(function() { + ripple = fixture('ShadowText'); + ripple._rippleContainer = ripple.$.wrapper; + textLocation = getTextLocation(ripple); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, false, '#separate') + }); + + test('tap text', function() { + assertInteractionAtLocationCausesRipple(ripple, ripple.$.wrapper, textLocation, true, 'text'); + }); + }); + + suite('container = separate', function() { + setup(function() { + ripple = fixture('ShadowText'); + ripple._rippleContainer = ripple.$.separate; + textLocation = getTextLocation(ripple); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, false, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + + test('tap text', function() { + assertInteractionAtLocationCausesRipple(ripple, ripple.$.wrapper, textLocation, false, 'text'); + }); + }); + }); + + suite('distributed element', function() { + var source; + + suite('container = host', function() { + setup(function() { + ripple = fixture('ShadowElement'); + source = Polymer.dom(ripple).querySelector('#source'); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, true, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + + test('tap source', function() { + assertInteractionCausesRipple(ripple, source, true, '#source'); + }); + }); + + suite('container = wrapper', function() { + setup(function() { + ripple = fixture('ShadowElement'); + ripple._rippleContainer = ripple.$.wrapper; + source = Polymer.dom(ripple).querySelector('#source'); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, true, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, false, '#separate') + }); + + test('tap source', function() { + assertInteractionCausesRipple(ripple, source, true, '#source'); + }); + }); + + suite('container = separate', function() { + setup(function() { + ripple = fixture('ShadowElement'); + ripple._rippleContainer = ripple.$.separate; + source = Polymer.dom(ripple).querySelector('#source'); + }); + + test('tap host', function() { + assertInteractionCausesRipple(ripple, ripple, false, 'ripple'); + }); + + test('tap wrapper', function() { + assertInteractionCausesRipple(ripple, ripple.$.wrapper, false, '#wrapper'); + }); + + test('tap separate', function() { + assertInteractionCausesRipple(ripple, ripple.$.separate, true, '#separate') + }); + + test('tap source', function() { + assertInteractionCausesRipple(ripple, source, false, '#source'); + }); + }); + }); + }); + }); + </script> + +</body> +</html> |