aboutsummaryrefslogtreecommitdiffstats
path: root/example/personalLog/scenario
diff options
context:
space:
mode:
Diffstat (limited to 'example/personalLog/scenario')
-rw-r--r--example/personalLog/scenario/personalLogScenario.js98
-rw-r--r--example/personalLog/scenario/runner.html10
2 files changed, 108 insertions, 0 deletions
diff --git a/example/personalLog/scenario/personalLogScenario.js b/example/personalLog/scenario/personalLogScenario.js
new file mode 100644
index 00000000..3679a33c
--- /dev/null
+++ b/example/personalLog/scenario/personalLogScenario.js
@@ -0,0 +1,98 @@
+describe('personal log', function() {
+
+ beforeEach(function() {
+ navigateTo('../personalLog.html');
+ });
+
+
+ afterEach(function() {
+ clearCookies();
+ });
+
+
+ it('should create new logs and order them in reverse chronological order', function(){
+ //create first msg
+ input('newMsg').enter('my first message');
+ element('form input[type="submit"]').click();
+
+ expect(repeater('ul li').count()).toEqual(1);
+ expect(repeater('ul li').column('log.msg')).toEqual('my first message');
+
+ //create second msg
+ input('newMsg').enter('my second message');
+ element('form input[type="submit"]').click();
+
+ expect(repeater('ul li').count()).toEqual(2);
+ expect(repeater('ul li').column('log.msg')).toEqual(['my second message', 'my first message']);
+ });
+
+
+ it('should delete a log when user clicks on the related X link', function() {
+ //create first msg
+ input('newMsg').enter('my first message');
+ element('form input[type="submit"]').click();
+ //create second msg
+ input('newMsg').enter('my second message');
+ element('form input[type="submit"]').click();
+ expect(repeater('ul li').count()).toEqual(2);
+
+ element('ul li a:eq(1)').click();
+ expect(repeater('ul li').count()).toEqual(1);
+ expect(repeater('ul li').column('log.msg')).toEqual('my second message');
+
+ element('ul li a:eq(0)').click();
+ expect(repeater('ul li').count()).toEqual(0);
+ });
+
+
+ it('should delete all cookies when user clicks on "remove all" button', function() {
+ //create first msg
+ input('newMsg').enter('my first message');
+ element('form input[type="submit"]').click();
+ //create second msg
+ input('newMsg').enter('my second message');
+ element('form input[type="submit"]').click();
+ expect(repeater('ul li').count()).toEqual(2);
+
+ element('input[value="remove all"]').click();
+ expect(repeater('ul li').count()).toEqual(0);
+ });
+
+
+ it('should preserve logs over page reloads', function() {
+ input('newMsg').enter('my persistent message');
+ element('form input[type="submit"]').click();
+ expect(repeater('ul li').count()).toEqual(1);
+
+ navigateTo('about:blank');
+ navigateTo('../personalLog.html');
+
+ expect(repeater('ul li').column('log.msg')).toEqual('my persistent message');
+ expect(repeater('ul li').count()).toEqual(1);
+ });
+});
+
+
+/**
+ * DSL for deleting all cookies.
+ */
+angular.scenario.dsl('clearCookies', function() {
+ /**
+ * Deletes cookies by interacting with the cookie service within the application under test.
+ */
+ return function() {
+ this.addFutureAction('clear all cookies', function($window, $document, done) {
+ //TODO: accessing angular services is pretty nasty, we need a better way to reach them
+ var $cookies = $window.$root.$cookies,
+ cookieName;
+
+ for (cookieName in $cookies) {
+ console.log('deleting cookie: ' + cookieName);
+ delete $cookies[cookieName];
+ }
+ $window.$root.$eval();
+
+ done();
+ });
+ };
+});
diff --git a/example/personalLog/scenario/runner.html b/example/personalLog/scenario/runner.html
new file mode 100644
index 00000000..7129c228
--- /dev/null
+++ b/example/personalLog/scenario/runner.html
@@ -0,0 +1,10 @@
+<!doctype html">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>Personal Log Scenario Runner</title>
+ <script type="text/javascript" src="../../../src/scenario/angular-bootstrap.js"></script>
+ <script type="text/javascript" src="personalLogScenario.js"></script>
+ </head>
+ <body>
+ </body>
+</html>