diff options
| author | Elliott Sprehn | 2010-10-08 16:43:40 -0700 |
|---|---|---|
| committer | Elliott Sprehn | 2010-10-14 09:47:39 -0700 |
| commit | 03df6cbddbb80186caf571e29957370b2ef9881c (patch) | |
| tree | d5a321c8b207b464a5c8a300c422186e20e8ae31 /test/scenario/ApplicationSpec.js | |
| parent | 0f104317dff5628765e26cc68df7dd1175b2aa5e (diff) | |
| download | angular.js-03df6cbddbb80186caf571e29957370b2ef9881c.tar.bz2 | |
New Angular Scenario runner and DSL system with redesigned HTML UI.
Uses the Jasmine syntax for tests, ex:
describe('widgets', function() {
it('should verify that basic widgets work', function(){
navigateTo('widgets.html');
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(binding('gender')).toEqual('female');
});
});
Note: To create new UI's implement the interface shown in angular.scenario.ui.Html.
Diffstat (limited to 'test/scenario/ApplicationSpec.js')
| -rw-r--r-- | test/scenario/ApplicationSpec.js | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/test/scenario/ApplicationSpec.js b/test/scenario/ApplicationSpec.js new file mode 100644 index 00000000..706fbc36 --- /dev/null +++ b/test/scenario/ApplicationSpec.js @@ -0,0 +1,75 @@ +describe('angular.scenario.Application', function() { + var app, frames; + + beforeEach(function() { + frames = _jQuery("<div></div>"); + app = new angular.scenario.Application(frames); + }); + + it('should return new $window and $document after navigate', function() { + var testWindow, testDocument, counter = 0; + app.navigateTo = noop; + app.getWindow = function() { + return {x:counter++, document:{x:counter++}}; + }; + app.navigateTo('http://www.google.com/'); + app.executeAction(function($document, $window) { + testWindow = $window; + testDocument = $document; + }); + app.navigateTo('http://www.google.com/'); + app.executeAction(function($document, $window) { + expect($window).not.toEqual(testWindow); + expect($document).not.toEqual(testDocument); + }); + }); + + it('should execute callback on $window of frame', function() { + var testWindow = {document: {}}; + app.getWindow = function() { + return testWindow; + }; + app.executeAction(function($document, $window) { + expect(this).toEqual($window); + expect(this).toEqual(testWindow); + }); + }); + + it('should create a new iframe each time', function() { + app.navigateTo('about:blank'); + var frame = app.getFrame(); + frame.attr('test', true); + app.navigateTo('about:blank'); + expect(app.getFrame().attr('test')).toBeFalsy(); + }); + + it('should URL description bar', function() { + app.navigateTo('about:blank'); + var anchor = frames.find('> h2 a'); + expect(anchor.attr('href')).toEqual('about:blank'); + expect(anchor.text()).toEqual('about:blank'); + }); + + it('should call onload handler when frame loads', function() { + var called; + app.getFrame = function() { + // Mock a little jQuery + var result = { + remove: function() { + return result; + }, + attr: function(key, value) { + return (!value) ? 'attribute value' : result; + }, + load: function() { + called = true; + } + }; + return result; + }; + app.navigateTo('about:blank', function() { + called = true; + }); + expect(called).toBeTruthy(); + }); +}); |
