aboutsummaryrefslogtreecommitdiffstats
path: root/example/personalLog/scenario/personalLogScenario.js
diff options
context:
space:
mode:
authorIgor Minar2010-10-23 21:40:27 -0700
committerIgor Minar2010-10-26 21:58:00 -0700
commit01c52e92b120eea498e0352a42a489d55e7d9979 (patch)
tree07e5e7d83e783a62e5333f1c22415dd3ac397900 /example/personalLog/scenario/personalLogScenario.js
parent943377a091bd7521d33e680dcd2141f7f9fa10c4 (diff)
downloadangular.js-01c52e92b120eea498e0352a42a489d55e7d9979.tar.bz2
Adding e2e tests for the PersonalLog app
- added scenario runner - added scenario specs - cookie cleaning DSL - making rmLog independent on ordering in the view
Diffstat (limited to 'example/personalLog/scenario/personalLogScenario.js')
-rw-r--r--example/personalLog/scenario/personalLogScenario.js98
1 files changed, 98 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();
+ });
+ };
+});