'use strict';
describe("ScenarioSpec: Compilation", function(){
var scope;
beforeEach(function(){
scope = null;
});
afterEach(function(){
dealoc(scope);
});
describe('compilation', function(){
it("should compile dom node and return scope", function(){
var node = jqLite('
{{b=a+1}}
')[0];
scope = angular.compile(node)();
expect(scope.a).toEqual(1);
expect(scope.b).toEqual(2);
});
it("should compile jQuery node and return scope", function(){
scope = compile(jqLite('{{a=123}}
'))();
expect(jqLite(scope.$element).text()).toEqual('123');
});
it("should compile text node and return scope", function(){
scope = angular.compile('{{a=123}}
')();
expect(jqLite(scope.$element).text()).toEqual('123');
});
});
describe('scope', function(){
it("should have $set, $get, $eval, $updateView methods", function(){
scope = angular.compile('{{a}}
')();
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.$eval();
expect(jqLite(scope.$element).text()).toEqual('3');
});
it("should have $ objects", function(){
scope = angular.compile('')(angular.scope({$config: {a:"b"}}));
expect(scope.$service('$location')).toBeDefined();
expect(scope.$get('$eval')).toBeDefined();
expect(scope.$get('$config')).toBeDefined();
expect(scope.$get('$config.a')).toEqual("b");
});
});
describe("configuration", function(){
it("should take location object", function(){
var url = "http://server/#?book=moby";
scope = angular.compile("{{$location}}
")();
var $location = scope.$service('$location');
var $browser = scope.$service('$browser');
expect($location.hashSearch.book).toBeUndefined();
$browser.setUrl(url);
$browser.poll();
expect($location.hashSearch.book).toEqual('moby');
});
});
});