diff options
Diffstat (limited to 'example/personalLog/scenario/personalLogScenario.js')
| -rw-r--r-- | example/personalLog/scenario/personalLogScenario.js | 98 | 
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(); +    }); +  }; +});  | 
