aboutsummaryrefslogtreecommitdiffstats
path: root/test/AngularSpec.js
diff options
context:
space:
mode:
authorIgor Minar2011-10-25 08:47:02 -0700
committerIgor Minar2011-10-26 12:57:15 -0700
commitd7ba5bc83ba9a8937384ea677331c5156ed6772d (patch)
treeaef0e0eb9873265d6f1cbe90a6f3da360e8367ca /test/AngularSpec.js
parent950d02b4d4b1d574dfbb9bbdd56b8dc430db0a93 (diff)
downloadangular.js-d7ba5bc83ba9a8937384ea677331c5156ed6772d.tar.bz2
feat(bootstrap): drop angular.js file name restrictions for autobind
The last script element in the dom is always us if the script that contains angular is loaded synchronously. For async loading manual bootstrap needs to be performed. Close #621
Diffstat (limited to 'test/AngularSpec.js')
-rw-r--r--test/AngularSpec.js164
1 files changed, 40 insertions, 124 deletions
diff --git a/test/AngularSpec.js b/test/AngularSpec.js
index 5b0a3466..7831539d 100644
--- a/test/AngularSpec.js
+++ b/test/AngularSpec.js
@@ -228,181 +228,97 @@ describe('angular', function() {
});
- describe ('rngScript', function() {
- it('should match angular.js', function() {
- expect('angular.js'.match(rngScript)).not.toBeNull();
- expect('../angular.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular.js'.match(rngScript)).not.toBeNull();
-
- expect('foo.js'.match(rngScript)).toBeNull();
- expect('foo/foo.js'.match(rngScript)).toBeNull();
- expect('my-angular-app.js'.match(rngScript)).toBeNull();
- expect('foo/../my-angular-app.js'.match(rngScript)).toBeNull();
- });
-
- it('should match angular.min.js', function() {
- expect('angular.min.js'.match(rngScript)).not.toBeNull();
- expect('../angular.min.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular.min.js'.match(rngScript)).not.toBeNull();
-
- expect('my-angular-app.min.js'.match(rngScript)).toBeNull();
- expect('foo/../my-angular-app.min.js'.match(rngScript)).toBeNull();
- });
-
- it('should match angular-bootstrap.js', function() {
- expect('angular-bootstrap.js'.match(rngScript)).not.toBeNull();
- expect('../angular-bootstrap.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular-bootstrap.js'.match(rngScript)).not.toBeNull();
-
- expect('my-angular-app-bootstrap.js'.match(rngScript)).toBeNull();
- expect('foo/../my-angular-app-bootstrap.js'.match(rngScript)).toBeNull();
- });
-
- it('should match angular-0.9.0.js', function() {
- expect('angular-0.9.0.js'.match(rngScript)).not.toBeNull();
- expect('../angular-0.9.0.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular-0.9.0.js'.match(rngScript)).not.toBeNull();
-
- expect('my-angular-app-0.9.0.js'.match(rngScript)).toBeNull();
- expect('foo/../my-angular-app-0.9.0.js'.match(rngScript)).toBeNull();
- });
-
- it('should match angular-0.9.0.min.js', function() {
- expect('angular-0.9.0.min.js'.match(rngScript)).not.toBeNull();
- expect('../angular-0.9.0.min.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular-0.9.0.min.js'.match(rngScript)).not.toBeNull();
-
- expect('my-angular-app-0.9.0.min.js'.match(rngScript)).toBeNull();
- expect('foo/../my-angular-app-0.9.0.min.js'.match(rngScript)).toBeNull();
- });
-
- it('should match angular-0.9.0-de0a8612.js', function() {
- expect('angular-0.9.0-de0a8612.js'.match(rngScript)).not.toBeNull();
- expect('../angular-0.9.0-de0a8612.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular-0.9.0-de0a8612.js'.match(rngScript)).not.toBeNull();
-
- expect('my-angular-app-0.9.0-de0a8612.js'.match(rngScript)).toBeNull();
- expect('foo/../my-angular-app-0.9.0-de0a8612.js'.match(rngScript)).toBeNull();
- });
-
- it('should match angular-0.9.0-de0a8612.min.js', function() {
- expect('angular-0.9.0-de0a8612.min.js'.match(rngScript)).not.toBeNull();
- expect('../angular-0.9.0-de0a8612.min.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular-0.9.0-de0a8612.min.js'.match(rngScript)).not.toBeNull();
-
- expect('my-angular-app-0.9.0-de0a8612.min.js'.match(rngScript)).toBeNull();
- expect('foo/../my-angular-app-0.9.0-de0a8612.min.js'.match(rngScript)).toBeNull();
- });
-
- it('should match angular-scenario.js', function() {
- expect('angular-scenario.js'.match(rngScript)).not.toBeNull();
- expect('angular-scenario.min.js'.match(rngScript)).not.toBeNull();
- expect('../angular-scenario.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular-scenario.min.js'.match(rngScript)).not.toBeNull();
- });
-
- it('should match angular-scenario-0.9.0(.min).js', function() {
- expect('angular-scenario-0.9.0.js'.match(rngScript)).not.toBeNull();
- expect('angular-scenario-0.9.0.min.js'.match(rngScript)).not.toBeNull();
- expect('../angular-scenario-0.9.0.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular-scenario-0.9.0.min.js'.match(rngScript)).not.toBeNull();
- });
-
- it('should match angular-scenario-0.9.0-de0a8612(.min).js', function() {
- expect('angular-scenario-0.9.0-de0a8612.js'.match(rngScript)).not.toBeNull();
- expect('angular-scenario-0.9.0-de0a8612.min.js'.match(rngScript)).not.toBeNull();
- expect('../angular-scenario-0.9.0-de0a8612.js'.match(rngScript)).not.toBeNull();
- expect('foo/angular-scenario-0.9.0-de0a8612.min.js'.match(rngScript)).not.toBeNull();
- });
- });
+ describe('angularJsConfig', function() {
+ it('should always consider angular.js script tag to be the last script tag', function() {
+ var doc = {
+ getElementsByTagName: function(tagName) {
+ expect(tagName).toEqual('script');
+ return [{nodeName: 'SCRIPT', src: 'random.js',
+ attributes: [{name: 'ng:autobind', value: 'wrong'}]},
+ {nodeName: 'SCRIPT', src: 'angular.js',
+ attributes: [{name: 'ng:autobind', value: 'correct'}]}];
+ }
+ };
+ expect(angularJsConfig(doc)).toEqual({autobind: 'correct'});
- describe('angularJsConfig', function() {
- it('should find angular.js script tag and config', function() {
- var doc = { getElementsByTagName: function(tagName) {
- expect(tagName).toEqual('script');
- return [{nodeName: 'SCRIPT', src: 'random.js'},
- {nodeName: 'SCRIPT', src: 'angular.js'},
- {nodeName: 'SCRIPT', src: 'my-angular-app.js'}];
- }
+ doc = {
+ getElementsByTagName: function(tagName) {
+ expect(tagName).toEqual('script');
+ return [{nodeName: 'SCRIPT', src: 'angular.js',
+ attributes: [{name: 'ng:autobind', value: 'wrong'}]},
+ {nodeName: 'SCRIPT', src: 'concatinatedAndObfuscadedScriptWithOurScript.js',
+ attributes: [{name: 'ng:autobind', value: 'correct'}]}];
+ }
};
- expect(angularJsConfig(doc)).toEqual({base_url: ''});
+ expect(angularJsConfig(doc)).toEqual({autobind: 'correct'});
});
- it('should extract angular config from the ng: attributes',
- function() {
+ it('should extract angular config from the ng: attributes', function() {
var doc = { getElementsByTagName: function(tagName) {
expect(lowercase(tagName)).toEqual('script');
- return [{nodeName: 'SCRIPT',
+ return [{
+ nodeName: 'SCRIPT',
src: 'angularjs/angular.js',
attributes: [{name: 'ng:autobind', value:'elementIdToCompile'},
{name: 'ng:css', value: 'css/my_custom_angular.css'}] }];
}};
- expect(angularJsConfig(doc)).toEqual({base_url: 'angularjs/',
+ expect(angularJsConfig(doc)).toEqual({
autobind: 'elementIdToCompile',
- css: 'css/my_custom_angular.css'});
+ css: 'css/my_custom_angular.css'
+ });
});
it('should extract angular config and default autobind value to true if present', function() {
var doc = { getElementsByTagName: function(tagName) {
expect(lowercase(tagName)).toEqual('script');
- return [{nodeName: 'SCRIPT',
+ return [{
+ nodeName: 'SCRIPT',
src: 'angularjs/angular.js',
attributes: [{name: 'ng:autobind', value:undefined}]}];
}};
- expect(angularJsConfig(doc)).toEqual({autobind: true,
- base_url: 'angularjs/'});
+ expect(angularJsConfig(doc)).toEqual({autobind: true});
});
it('should extract angular autobind config from the script hashpath attributes', function() {
var doc = { getElementsByTagName: function(tagName) {
expect(lowercase(tagName)).toEqual('script');
- return [{nodeName: 'SCRIPT',
+ return [{
+ nodeName: 'SCRIPT',
src: 'angularjs/angular.js#autobind'}];
}};
- expect(angularJsConfig(doc)).toEqual({base_url: 'angularjs/',
- autobind: true});
+ expect(angularJsConfig(doc)).toEqual({autobind: true});
});
it('should extract autobind config with element id from the script hashpath', function() {
var doc = { getElementsByTagName: function(tagName) {
expect(lowercase(tagName)).toEqual('script');
- return [{nodeName: 'SCRIPT',
+ return [{
+ nodeName: 'SCRIPT',
src: 'angularjs/angular.js#autobind=foo'}];
}};
- expect(angularJsConfig(doc)).toEqual({base_url: 'angularjs/',
- autobind: 'foo'});
+ expect(angularJsConfig(doc)).toEqual({autobind: 'foo'});
});
- it("should default to versioned ie-compat file if angular file is versioned", function() {
+ it('should default to versioned ie-compat file if angular file is versioned', function() {
var doc = { getElementsByTagName: function(tagName) {
expect(lowercase(tagName)).toEqual('script');
- return [{nodeName: 'SCRIPT',
+ return [{
+ nodeName: 'SCRIPT',
src: 'js/angular-0.9.0.js'}];
}};
- expect(angularJsConfig(doc)).toEqual({base_url: 'js/'});
- });
-
-
- it("should default to versioned ie-compat file if angular file is versioned and minified", function() {
- var doc = { getElementsByTagName: function(tagName) {
- expect(lowercase(tagName)).toEqual('script');
- return [{nodeName: 'SCRIPT',
- src: 'js/angular-0.9.0-cba23f00.min.js'}];
- }};
-
- expect(angularJsConfig(doc)).toEqual({base_url: 'js/'});
+ expect(angularJsConfig(doc)).toEqual({});
});
});