Skip to content

Commit

Permalink
Merge pull request #26 from DrMarcII/textarea
Browse files Browse the repository at this point in the history
Fix typing in HtmlPageLoader to work with TextAreaElements.
  • Loading branch information
DrMarcII committed Jan 29, 2015
2 parents adfb848 + 3e32dca commit d06863c
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 10 deletions.
15 changes: 9 additions & 6 deletions dart/lib/html.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import 'dart:mirrors' hide Comment;

/// A function that will be executed after [click] and [type] and during
/// [waitFor] and [waitForValue] to allow events to be processed. For example
/// if using Angular's async test wrapper this should be function that calls
/// if using Angular's async test wrapper this should be a function that calls
/// scope.apply() and clockTick.
typedef void SyncActionFn(Duration interval);

Expand Down Expand Up @@ -242,9 +242,11 @@ class _ElementPageLoaderElement extends HtmlPageLoaderElement {
void type(String keys) {
node.focus();
_fireKeyPressEvents(node, keys);
if (node is InputElement) {
var value = (node as InputElement).value + keys;
(node as InputElement).value = '';
if (node is InputElement || node is TextAreaElement) {
// suppress warning by hiding field
var node = this.node;
var value = node.value + keys;
node.value = '';
node.dispatchEvent(new TextEvent('textInput', data: value));
}
node.blur();
Expand All @@ -253,8 +255,9 @@ class _ElementPageLoaderElement extends HtmlPageLoaderElement {

@override
void clear() {
if (node is InputElement) {
(node as InputElement).value = '';
if (node is InputElement || node is TextAreaElement) {
var node = this.node;
node.value = '';
node.dispatchEvent(new TextEvent('textInput', data: ''));
} else {
super.clear();
Expand Down
6 changes: 3 additions & 3 deletions dart/lib/src/core.dart
Original file line number Diff line number Diff line change
Expand Up @@ -309,9 +309,9 @@ abstract class _FieldInfo {
}

if (finder != null) {
var fieldInfo = isList ?
new _FinderListFieldInfo(name, finder, filters, type) :
new _FinderSingleFieldInfo(name, finder, filters, type, isOptional);
var fieldInfo = isList
? new _FinderListFieldInfo(name, finder, filters, type)
: new _FinderSingleFieldInfo(name, finder, filters, type, isOptional);
if (isFunction) {
fieldInfo = new _FinderFunctionFieldInfo(fieldInfo);
}
Expand Down
2 changes: 1 addition & 1 deletion dart/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: pageloader
version: 1.2.5
version: 1.2.6
author: Marc Fisher II
description: Supports the creation of page objects that can be shared between in-browser tests and WebDriver tests.
environment:
Expand Down
1 change: 1 addition & 0 deletions dart/test/html_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ void main() {
<option id='option1' value='value 1'>option 1</option>
<option id='option2' value='value 2'>option 2</option>
</select>
<textarea id='textarea'></textarea>
<div class="outer-div">
outer div 1
<a-custom-tag></a-custom-tag>
Expand Down
5 changes: 5 additions & 0 deletions dart/test/page_objects.dart
Original file line number Diff line number Diff line change
Expand Up @@ -429,3 +429,8 @@ class NestedPageForGlobalTest {
@Global(const ByTagName('table'))
PageLoaderElement table;
}

class PageForTextAreaTypingText {
@ById('textarea')
PageLoaderElement textArea;
}
11 changes: 11 additions & 0 deletions dart/test/pageloader_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,17 @@ void runTests() {
PageForGlobalTest page = loader.getInstance(PageForGlobalTest);
expect(page.nested.table, equals(page.table));
});

test('Type into textarea', () {
PageForTextAreaTypingText page =
loader.getInstance(PageForTextAreaTypingText);
page.textArea.type('some');
expect(page.textArea.attributes['value'], 'some');
page.textArea.type(' string');
expect(page.textArea.attributes['value'], 'some string');
page.textArea.clear();
expect(page.textArea.attributes['value'], '');
});
});

group('waitFor()', () {
Expand Down
1 change: 1 addition & 0 deletions dart/test/test_page.html
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
<option id='option1' value='value 1'>option 1</option>
<option id='option2' value='value 2'>option 2</option>
</select>
<textarea id='textarea'></textarea>
<div class="outer-div">
outer div 1
<a-custom-tag></a-custom-tag>
Expand Down

0 comments on commit d06863c

Please sign in to comment.