aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/scenario/e2e/Runner-compiled.html9
-rw-r--r--test/scenario/e2e/Runner.html9
-rw-r--r--test/scenario/e2e/style.css11
-rw-r--r--test/scenario/e2e/widgets-scenario.js65
-rw-r--r--test/scenario/e2e/widgets.html99
5 files changed, 193 insertions, 0 deletions
diff --git a/test/scenario/e2e/Runner-compiled.html b/test/scenario/e2e/Runner-compiled.html
new file mode 100644
index 00000000..c3a55f4d
--- /dev/null
+++ b/test/scenario/e2e/Runner-compiled.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <script type="text/javascript" src="../../../build/angular-scenario.js" ng:autotest></script>
+ <script type="text/javascript" src="widgets-scenario.js"></script>
+ </head>
+ <body>
+ </body>
+</html>
diff --git a/test/scenario/e2e/Runner.html b/test/scenario/e2e/Runner.html
new file mode 100644
index 00000000..387973db
--- /dev/null
+++ b/test/scenario/e2e/Runner.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <script type="text/javascript" src="../../../src/scenario/angular-bootstrap.js" ng:autotest></script>
+ <script type="text/javascript" src="widgets-scenario.js"></script>
+ </head>
+ <body>
+ </body>
+</html>
diff --git a/test/scenario/e2e/style.css b/test/scenario/e2e/style.css
new file mode 100644
index 00000000..26540bec
--- /dev/null
+++ b/test/scenario/e2e/style.css
@@ -0,0 +1,11 @@
+th {
+ text-align: left;
+}
+
+tr {
+ border: 1px solid black;
+}
+
+.redbox {
+ background-color: red;
+}
diff --git a/test/scenario/e2e/widgets-scenario.js b/test/scenario/e2e/widgets-scenario.js
new file mode 100644
index 00000000..e0a98224
--- /dev/null
+++ b/test/scenario/e2e/widgets-scenario.js
@@ -0,0 +1,65 @@
+describe('widgets', function() {
+ it('should verify that basic widgets work', function(){
+ browser().navigateTo('widgets.html');
+
+ using('#text-basic-box').input('text.basic').enter('Carlos');
+ expect(binding('text.basic')).toEqual('Carlos');
+ input('text.basic').enter('Carlos Santana');
+ expect(binding('text.basic')).not().toEqual('Carlos Boozer');
+
+ input('text.password').enter('secret');
+ expect(binding('text.password')).toEqual('secret');
+
+ expect(binding('text.hidden')).toEqual('hiddenValue');
+
+ expect(binding('gender')).toEqual('male');
+ input('gender').select('female');
+ expect(using('#gender-box').binding('gender')).toEqual('female');
+
+ expect(repeater('#repeater-row ul li').count()).toEqual(2);
+ expect(repeater('#repeater-row ul li').row(1)).toEqual(['adam']);
+ expect(repeater('#repeater-row ul li').column('name')).toEqual(['misko', 'adam']);
+
+ select('select').option('B');
+ expect(binding('select')).toEqual('B');
+
+ select('multiselect').options('A', 'C');
+ expect(binding('multiselect').fromJson()).toEqual(['A', 'C']);
+
+ expect(binding('button').fromJson()).toEqual({'count': 0});
+ expect(binding('form').fromJson()).toEqual({'count': 0});
+
+ element('form a', "'action' link").click();
+ expect(binding('button').fromJson()).toEqual({'count': 1});
+
+ element('input[value="submit input"]', "'submit input' button").click();
+ expect(binding('button').fromJson()).toEqual({'count': 2});
+ expect(binding('form').fromJson()).toEqual({'count': 1});
+
+ element('button:contains("submit button")', "'submit button' button").click();
+ expect(binding('button').fromJson()).toEqual({'count': 2});
+ expect(binding('form').fromJson()).toEqual({'count': 2});
+
+ element('input[value="button"]', "'button' button").click();
+ expect(binding('button').fromJson()).toEqual({'count': 3});
+
+ element('input[type="image"]', 'form image').click();
+ expect(binding('button').fromJson()).toEqual({'count': 4});
+
+ /**
+ * Custom value parser for futures.
+ */
+ function checkboxParser(value) {
+ return angular.fromJson(value.substring(value.indexOf('=')+1));
+ }
+
+ input('checkbox.tea').check();
+ expect(binding('checkbox').parsedWith(checkboxParser)).toEqual({coffee: false, tea: false});
+ input('checkbox.coffee').check();
+ expect(binding('checkbox').parsedWith(checkboxParser)).toEqual({coffee: true, tea: false});
+ input('checkbox.tea').check();
+ input('checkbox.tea').check();
+ input('checkbox.tea').check();
+ expect(binding('checkbox').parsedWith(checkboxParser)).toEqual({coffee: true, tea: true});
+ });
+});
diff --git a/test/scenario/e2e/widgets.html b/test/scenario/e2e/widgets.html
new file mode 100644
index 00000000..e19a33f4
--- /dev/null
+++ b/test/scenario/e2e/widgets.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns:ng="http://angularjs.org">
+ <head>
+ <link rel="stylesheet" type="text/css" href="style.css"/>
+ <script type="text/javascript" src="../../../src/angular-bootstrap.js" ng:autobind></script>
+ </head>
+ <body ng:init="$window.$scope = this">
+ <table>
+ <tr>
+ <th width="330">Description</th>
+ <th>Test</th>
+ <th>Result</th>
+ </tr>
+ <tr><th colspan="3">Input text field</th></tr>
+ <tr>
+ <td>basic</td>
+ <td id="text-basic-box">
+ <input type="text" name="text.basic"/>
+ </td>
+ <td>text.basic={{text.basic}}</td>
+ </tr>
+ <tr>
+ <td>password</td>
+ <td><input type="password" name="text.password" /></td>
+ <td>text.password={{text.password}}</td>
+ </tr>
+ <tr>
+ <td>hidden</td>
+ <td><input type="hidden" name="text.hidden" value="hiddenValue" /></td>
+ <td>text.hidden={{text.hidden}}</td>
+ </tr>
+ <tr><th colspan="3">Input selection field</th></tr>
+ <tr id="gender-box">
+ <td>radio</td>
+ <td>
+ <input type="radio" name="gender" value="female"/> Female <br/>
+ <input type="radio" name="gender" value="male" checked="checked"/> Male
+ </td>
+ <td>gender={{gender}}</td>
+ </tr>
+ <tr>
+ <td>checkbox</td>
+ <td>
+ <input type="checkbox" name="checkbox.tea" checked value="on"/> Tea<br/>
+ <input type="checkbox" name="checkbox.coffee" value="on"/> Coffe
+ </td>
+ <td>
+ <pre>checkbox={{checkbox}}</pre>
+ </td>
+ </tr>
+ <tr>
+ <td>select</td>
+ <td>
+ <select name="select">
+ <option>A</option>
+ <option>B</option>
+ <option>C</option>
+ </select>
+ </td>
+ <td>select={{select}}</td>
+ </tr>
+ <tr>
+ <td>multiselect</td>
+ <td>
+ <select name="multiselect" multiple>
+ <option>A</option>
+ <option>B</option>
+ <option>C</option>
+ </select>
+ </td>
+ <td>multiselect={{multiselect}}</td>
+ </tr>
+ <tr><th colspan="3">Buttons</th></tr>
+ <tr>
+ <td>ng:change<br/>ng:click</td>
+ <td ng:init="button.count = 0; form.count = 0;">
+ <form ng:submit="form.count = form.count + 1">
+ <input type="button" value="button" ng:change="button.count = button.count + 1"/> <br/>
+ <input type="submit" value="submit input" ng:change="button.count = button.count + 1"/><br/>
+ <button type="submit">submit button</button>
+ <input type="image" src="" ng:change="button.count = button.count + 1"/><br/>
+ <a href="" ng:click="button.count = button.count + 1">action</a>
+ </form>
+ </td>
+ <td>button={{button}} form={{form}}</td>
+ </tr>
+ <tr><th colspan="3">Repeaters</th></tr>
+ <tr id="repeater-row">
+ <td>ng:repeat</td>
+ <td>
+ <ul>
+ <li ng:repeat="name in ['misko', 'adam']">{{name}}</li>
+ </ul>
+ </td>
+ <td></td>
+ </tr>
+ </table>
+ </body>
+ </html>