describe("ScenarioSpec: Compilation", function(){
it("should compile dom node and return scope", function(){
var node = $('
{{b=a+1}}
')[0];
var scope = angular.compile(node);
scope.init();
expect(scope.get('a')).toEqual(1);
expect(scope.get('b')).toEqual(2);
});
it("should compile jQuery node and return scope", function(){
var scope = angular.compile($('{{a=123}}
')).init();
expect($(scope.element).text()).toEqual('123');
});
it("should compile text node and return scope", function(){
var scope = angular.compile('{{a=123}}
').init();
expect($(scope.element).text()).toEqual('123');
});
});
describe("ScenarioSpec: Scope", function(){
it("should have set, get, eval, init, updateView methods", function(){
var scope = angular.compile('{{a}}
').init();
scope.eval("$invalidWidgets.push({})");
expect(scope.set("a", 2)).toEqual(2);
expect(scope.get("a")).toEqual(2);
expect(scope.eval("a=3")).toEqual(3);
scope.updateView();
expect(scope.eval("$invalidWidgets")).toEqual([]);
expect($(scope.element).text()).toEqual('3');
});
it("should have config", function(){
expect(angular.compile('', {a:'b'}).config.a).toEqual('b');
});
it("should have $ objects", function(){
var scope = angular.compile('', {a:"b"});
expect(scope.get('$anchor')).toBeDefined();
expect(scope.get('$updateView')).toBeDefined();
expect(scope.get('$config')).toBeDefined();
expect(scope.get('$config.a')).toEqual("b");
expect(scope.get('$datastore')).toBeDefined();
});
});
describe("ScenarioSpec: configuration", function(){
it("should take location object", function(){
var url = "http://server/#book=moby";
var onUrlChange;
var location = {
listen:function(fn){onUrlChange=fn;},
set:function(u){url = u;},
get:function(){return url;}
};
var scope = angular.compile("{{$anchor}}
", {location:location});
var $anchor = scope.get('$anchor');
expect($anchor.book).toBeUndefined();
expect(onUrlChange).toBeUndefined();
scope.init();
expect($anchor.book).toEqual('moby');
expect(onUrlChange).toBeDefined();
url = "http://server/#book=none";
onUrlChange();
expect($anchor.book).toEqual('none');
});
});