diff options
Diffstat (limited to 'catapult/third_party/polymer/components/iron-autogrow-textarea/test/basic.html')
-rw-r--r-- | catapult/third_party/polymer/components/iron-autogrow-textarea/test/basic.html | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/iron-autogrow-textarea/test/basic.html b/catapult/third_party/polymer/components/iron-autogrow-textarea/test/basic.html new file mode 100644 index 00000000..51f3abab --- /dev/null +++ b/catapult/third_party/polymer/components/iron-autogrow-textarea/test/basic.html @@ -0,0 +1,190 @@ +<!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>iron-autogrow-textarea tests</title> + + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes"> + + <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="../iron-autogrow-textarea.html"> + + </head> + <body> + + <test-fixture id="basic"> + <template> + <iron-autogrow-textarea></iron-autogrow-textarea> + </template> + </test-fixture> + + <test-fixture id="has-bindValue"> + <template> + <iron-autogrow-textarea bind-value="foobar"></iron-autogrow-textarea> + </template> + </test-fixture> + + <test-fixture id="has-value"> + <template> + <iron-autogrow-textarea value="foobar"></iron-autogrow-textarea> + </template> + </test-fixture> + + <test-fixture id="rows"> + <template> + <iron-autogrow-textarea rows="3"></iron-autogrow-textarea> + </template> + </test-fixture> + + <script> + + suite('basic', function() { + + test('setting bindValue sets textarea value', function() { + var autogrow = fixture('basic'); + var textarea = autogrow.textarea; + + autogrow.bindValue = 'batman'; + assert.equal(textarea.value, autogrow.bindValue, 'textarea value equals to bindValue'); + }); + + test('can set an initial bindValue', function() { + var autogrow = fixture('has-bindValue'); + assert.equal(autogrow.textarea.value, 'foobar', 'textarea value equals to initial bindValue'); + assert.equal(autogrow.value, 'foobar', 'value equals to initial bindValue'); + }); + + test('can set an initial value', function() { + var autogrow = fixture('has-value'); + assert.equal(autogrow.textarea.value, 'foobar', 'textarea value equals to initial bindValue'); + assert.equal(autogrow.bindValue, 'foobar', 'textarea bindValue equals to initial value'); + }); + + test('can update the value', function() { + var autogrow = fixture('has-bindValue'); + assert.equal(autogrow.textarea.value, 'foobar', 'textarea value equals to initial bindValue'); + autogrow.value = 'batman'; + assert.equal(autogrow.textarea.value, 'batman', 'textarea value is updated'); + assert.equal(autogrow.bindValue, 'batman', 'bindValue is updated'); + assert.equal(autogrow.value, 'batman', 'value is updated'); + }); + + test('can update the bindValue', function() { + var autogrow = fixture('has-bindValue'); + assert.equal(autogrow.textarea.value, 'foobar', 'textarea value equals to initial bindValue'); + autogrow.bindValue = 'batman'; + assert.equal(autogrow.textarea.value, 'batman', 'textarea value is updated'); + assert.equal(autogrow.bindValue, 'batman', 'bindValue is updated'); + assert.equal(autogrow.value, 'batman', 'value is updated'); + }); + + test('can set an initial number of rows', function() { + var autogrow = fixture("rows"); + assert.equal(autogrow.textarea.rows, 3, 'textarea has rows=3'); + }); + + test('adding rows grows the textarea', function() { + var autogrow = fixture('basic'); + var initialHeight = autogrow.offsetHeight; + + autogrow.bindValue = 'batman\nand\nrobin'; + var finalHeight = autogrow.offsetHeight + assert.isTrue(finalHeight > initialHeight); + }); + + test('removing rows shrinks the textarea', function() { + var autogrow = fixture('basic'); + autogrow.bindValue = 'batman\nand\nrobin'; + var initialHeight = autogrow.offsetHeight; + + autogrow.bindValue = 'batman'; + var finalHeight = autogrow.offsetHeight + assert.isTrue(finalHeight < initialHeight); + }); + + test('an undefined bindValue is the empty string', function() { + var autogrow = fixture('basic'); + var initialHeight = autogrow.offsetHeight; + + autogrow.bindValue = 'batman\nand\nrobin'; + var finalHeight = autogrow.offsetHeight; + assert.isTrue(finalHeight > initialHeight); + + autogrow.bindValue = undefined; + assert.equal(autogrow.offsetHeight, initialHeight); + assert.equal(autogrow.textarea.value, ''); + }); + + test('textarea selection works', function() { + var autogrow = fixture('basic'); + var textarea = autogrow.textarea; + autogrow.bindValue = 'batman\nand\nrobin'; + + autogrow.selectionStart = 3; + autogrow.selectionEnd = 5; + + assert.equal(textarea.selectionStart, 3); + assert.equal(textarea.selectionEnd, 5); + }); + }); + + suite('focus/blur events', function() { + var input; + + setup(function() { + input = fixture('basic'); + }); + + test('focus/blur events fired on host element', function(done) { + var nFocusEvents = 0; + var nBlurEvents = 0; + input.addEventListener('focus', function() { + nFocusEvents += 1; + // setTimeout to wait for potentially more, erroneous events + setTimeout(function() { + assert.equal(nFocusEvents, 1, 'one focus event fired'); + MockInteractions.blur(input.textarea); + }); + }); + input.addEventListener('blur', function() { + nBlurEvents += 1; + // setTimeout to wait for potentially more, erroneous events + setTimeout(function() { + assert.equal(nBlurEvents, 1, 'one blur event fired'); + done(); + }); + }); + MockInteractions.focus(input.textarea); + }); + + }); + + suite('validation', function() { + test('a required textarea with no text is invalid', function() { + var input = fixture('basic'); + input.required = true; + assert.isFalse(input.validate()); + + input.bindValue = 'batman'; + assert.isTrue(input.validate()); + }); + }); + + </script> + + </body> +</html> |