aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMisko Hevery2010-12-01 20:29:54 -0800
committerMisko Hevery2010-12-02 22:45:57 -0800
commit5a8ad8fe329fc09898ff43a060710265d38393be (patch)
tree95058036d40b1dd993e2a9c4094ebd34b2751707 /test
parent41d5938883a3d06ffe8a88a51efd8d1896f7d747 (diff)
downloadangular.js-5a8ad8fe329fc09898ff43a060710265d38393be.tar.bz2
Closes #170. Corrected the behavior of select when options are ng:repeated
- Delete $postEval method, as it was a hack
Diffstat (limited to 'test')
-rw-r--r--test/AngularSpec.js1
-rw-r--r--test/BinderTest.js1
-rw-r--r--test/CompilerSpec.js25
-rw-r--r--test/ResourceSpec.js2
-rw-r--r--test/ScenarioSpec.js104
-rw-r--r--test/ScopeSpec.js22
-rw-r--r--test/ValidatorsTest.js6
-rw-r--r--test/directivesSpec.js3
-rw-r--r--test/markupSpec.js176
-rw-r--r--test/servicesSpec.js11
-rw-r--r--test/testabilityPatch.js24
-rw-r--r--test/widgetsSpec.js37
12 files changed, 228 insertions, 184 deletions
diff --git a/test/AngularSpec.js b/test/AngularSpec.js
index 6733a7ab..f5a202fe 100644
--- a/test/AngularSpec.js
+++ b/test/AngularSpec.js
@@ -10,6 +10,7 @@ describe('Angular', function(){
scope.$init();
scope.$eval();
expect(onUpdateView).wasCalled();
+ dealoc(scope);
});
});
diff --git a/test/BinderTest.js b/test/BinderTest.js
index d35d46f4..58081f25 100644
--- a/test/BinderTest.js
+++ b/test/BinderTest.js
@@ -5,6 +5,7 @@ BinderTest.prototype.setUp = function(){
this.compile = function(html, initialScope, parent) {
var compiler = new Compiler(angularTextMarkup, angularAttrMarkup, angularDirective, angularWidget);
+ if (self.element) dealoc(self.element);
var element = self.element = jqLite(html);
var scope = compiler.compile(element)(element);
diff --git a/test/CompilerSpec.js b/test/CompilerSpec.js
index fa63ab77..d8c7c1b8 100644
--- a/test/CompilerSpec.js
+++ b/test/CompilerSpec.js
@@ -1,5 +1,5 @@
describe('compiler', function(){
- var compiler, markup, directives, widgets, compile, log;
+ var compiler, markup, directives, widgets, compile, log, scope;
beforeEach(function(){
log = "";
@@ -32,6 +32,10 @@ describe('compiler', function(){
return scope;
};
});
+
+ afterEach(function(){
+ dealoc(scope);
+ });
it('should recognize a directive', function(){
var e = jqLite('<div directive="expr" ignore="me"></div>');
@@ -44,7 +48,8 @@ describe('compiler', function(){
};
};
var template = compiler.compile(e);
- var init = template(e).$init;
+ scope = template(e);
+ var init = scope.$init;
expect(log).toEqual("found");
init();
expect(e.hasClass('ng-directive')).toEqual(true);
@@ -52,12 +57,12 @@ describe('compiler', function(){
});
it('should recurse to children', function(){
- var scope = compile('<div><span hello="misko"/></div>');
+ scope = compile('<div><span hello="misko"/></div>');
expect(log).toEqual("hello misko");
});
it('should watch scope', function(){
- var scope = compile('<span watch="name"/>');
+ scope = compile('<span watch="name"/>');
expect(log).toEqual("");
scope.$eval();
scope.$set('name', 'misko');
@@ -71,7 +76,7 @@ describe('compiler', function(){
it('should prevent descend', function(){
directives.stop = function(){ this.descend(false); };
- var scope = compile('<span hello="misko" stop="true"><span hello="adam"/></span>');
+ scope = compile('<span hello="misko" stop="true"><span hello="adam"/></span>');
expect(log).toEqual("hello misko");
});
@@ -87,7 +92,7 @@ describe('compiler', function(){
});
};
};
- var scope = compile('before<span duplicate="expr">x</span>after');
+ scope = compile('before<span duplicate="expr">x</span>after');
expect(sortedHtml(scope.$element)).toEqual('<div>before<#comment></#comment><span>x</span>after</div>');
scope.$eval();
expect(sortedHtml(scope.$element)).toEqual('<div>before<#comment></#comment><span>x</span><span>x</span>after</div>');
@@ -103,7 +108,7 @@ describe('compiler', function(){
textNode[0].nodeValue = 'replaced';
}
});
- var scope = compile('before<span>middle</span>after');
+ scope = compile('before<span>middle</span>after');
expect(sortedHtml(scope.$element[0], true)).toEqual('<div>before<span class="ng-directive" hello="middle">replaced</span>after</div>');
expect(log).toEqual("hello middle");
});
@@ -116,7 +121,7 @@ describe('compiler', function(){
log += 'init';
};
};
- var scope = compile('<ng:button>push me</ng:button>');
+ scope = compile('<ng:button>push me</ng:button>');
expect(lowercase(scope.$element[0].innerHTML)).toEqual('<div>button</div>');
expect(log).toEqual('init');
});
@@ -135,7 +140,7 @@ describe('compiler', function(){
if (text == '{{1+2}}')
parent.text('3');
});
- var scope = compile('<div><h1>ignore me</h1></div>');
+ scope = compile('<div><h1>ignore me</h1></div>');
expect(scope.$element.text()).toEqual('3');
});
@@ -158,7 +163,7 @@ describe('compiler', function(){
textNode.remove();
}
});
- var scope = compile('A---B---C===D');
+ scope = compile('A---B---C===D');
expect(sortedHtml(scope.$element)).toEqual('<div>A<hr></hr>B<hr></hr>C<p></p>D</div>');
});
diff --git a/test/ResourceSpec.js b/test/ResourceSpec.js
index e258d5a3..a026263b 100644
--- a/test/ResourceSpec.js
+++ b/test/ResourceSpec.js
@@ -169,6 +169,7 @@ describe("resource", function() {
var person = Person.get({id:123});
$browser.xhr.flush();
expect(person.name).toEqual('misko');
+ dealoc(scope);
});
it('should return the same object when verifying the cache', function(){
@@ -188,6 +189,7 @@ describe("resource", function() {
$browser.xhr.flush();
expect(person2Cache).toEqual(person2);
expect(person2[0].name).toEqual('rob');
+ dealoc(scope);
});
describe('failure mode', function(){
diff --git a/test/ScenarioSpec.js b/test/ScenarioSpec.js
index 730019a2..4a8b5e69 100644
--- a/test/ScenarioSpec.js
+++ b/test/ScenarioSpec.js
@@ -1,52 +1,64 @@
describe("ScenarioSpec: Compilation", function(){
- it("should compile dom node and return scope", function(){
- var node = jqLite('<div ng:init="a=1">{{b=a+1}}</div>')[0];
- var scope = compile(node);
- scope.$init();
- expect(scope.a).toEqual(1);
- expect(scope.b).toEqual(2);
+ var scope;
+
+ beforeEach(function(){
+ scope = null;
});
-
- it("should compile jQuery node and return scope", function(){
- var scope = compile(jqLite('<div>{{a=123}}</div>')).$init();
- expect(jqLite(scope.$element).text()).toEqual('123');
+
+ afterEach(function(){
+ dealoc(scope);
});
-
- it("should compile text node and return scope", function(){
- var scope = compile('<div>{{a=123}}</div>').$init();
- expect(jqLite(scope.$element).text()).toEqual('123');
+
+ describe('compilation', function(){
+ it("should compile dom node and return scope", function(){
+ var node = jqLite('<div ng:init="a=1">{{b=a+1}}</div>')[0];
+ scope = compile(node);
+ scope.$init();
+ expect(scope.a).toEqual(1);
+ expect(scope.b).toEqual(2);
+ });
+
+ it("should compile jQuery node and return scope", function(){
+ scope = compile(jqLite('<div>{{a=123}}</div>')).$init();
+ expect(jqLite(scope.$element).text()).toEqual('123');
+ });
+
+ it("should compile text node and return scope", function(){
+ scope = compile('<div>{{a=123}}</div>').$init();
+ expect(jqLite(scope.$element).text()).toEqual('123');
+ });
});
-});
-
-describe("ScenarioSpec: Scope", function(){
- it("should have set, get, eval, $init, updateView methods", function(){
- var scope = compile('<div>{{a}}</div>').$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.$eval();
- expect(jqLite(scope.$element).text()).toEqual('3');
+
+ describe('scope', function(){
+ it("should have set, get, eval, $init, updateView methods", function(){
+ scope = compile('<div>{{a}}</div>').$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.$eval();
+ expect(jqLite(scope.$element).text()).toEqual('3');
+ });
+
+ it("should have $ objects", function(){
+ scope = compile('<div></div>', {$config: {a:"b"}});
+ expect(scope.$get('$location')).toBeDefined();
+ expect(scope.$get('$eval')).toBeDefined();
+ expect(scope.$get('$config')).toBeDefined();
+ expect(scope.$get('$config.a')).toEqual("b");
+ });
});
-
- it("should have $ objects", function(){
- var scope = compile('<div></div>', {$config: {a:"b"}});
- expect(scope.$get('$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 = compile("<div>{{$location}}</div>");
+ var $location = scope.$location;
+ var $browser = scope.$inject('$browser');
+ expect($location.hashSearch.book).toBeUndefined();
+ $browser.setUrl(url);
+ $browser.poll();
+ expect($location.hashSearch.book).toEqual('moby');
+ });
});
-});
-
-describe("ScenarioSpec: configuration", function(){
- it("should take location object", function(){
- var url = "http://server/#?book=moby";
- var scope = compile("<div>{{$location}}</div>");
- var $location = scope.$location;
- var $browser = scope.$inject('$browser');
- expect($location.hashSearch.book).toBeUndefined();
- $browser.setUrl(url);
- $browser.poll();
- expect($location.hashSearch.book).toEqual('moby');
- });
-});
+}); \ No newline at end of file
diff --git a/test/ScopeSpec.js b/test/ScopeSpec.js
index 38350b17..acded34b 100644
--- a/test/ScopeSpec.js
+++ b/test/ScopeSpec.js
@@ -209,28 +209,6 @@ describe('scope/model', function(){
});
});
- describe('$postEval', function(){
- it('should eval function once and last', function(){
- var log = '';
- var scope = createScope();
- function onceOnly(){log+= '@';}
- scope.$onEval(function(){log+= '.';});
- scope.$postEval(function(){log+= '!';});
- scope.$postEval(onceOnly);
- scope.$postEval(onceOnly);
- scope.$postEval(); // ignore
- scope.$eval();
- expect(log).toEqual('.!@');
- scope.$eval();
- expect(log).toEqual('.!@.');
-
- scope.$postEval(onceOnly);
- scope.$postEval(onceOnly);
- scope.$eval();
- expect(log).toEqual('.!@..@');
- });
- });
-
describe('$new', function(){
it('should $new should create new child scope and $become controller', function(){
var parent = createScope(null, {exampleService: function(){return 'Example Service';}});
diff --git a/test/ValidatorsTest.js b/test/ValidatorsTest.js
index cc77b6da..f740c7b2 100644
--- a/test/ValidatorsTest.js
+++ b/test/ValidatorsTest.js
@@ -104,12 +104,6 @@ describe('Validator:asynchronous', function(){
afterEach(function(){
if (self.$element) self.$element.remove();
- var oldCache = jqCache;
- jqCache = {};
- if (size(oldCache)) {
- dump(oldCache);
- }
- expect(size(oldCache)).toEqual(0);
});
it('should make a request and show spinner', function(){
diff --git a/test/directivesSpec.js b/test/directivesSpec.js
index b70067ba..ab1813c3 100644
--- a/test/directivesSpec.js
+++ b/test/directivesSpec.js
@@ -13,8 +13,7 @@ describe("directive", function(){
});
afterEach(function() {
- if (model && model.$element) model.$element.remove();
- expect(size(jqCache)).toEqual(0);
+ dealoc(model);
});
it("should ng:init", function() {
diff --git a/test/markupSpec.js b/test/markupSpec.js
index cb8ee23f..3234bf2f 100644
--- a/test/markupSpec.js
+++ b/test/markupSpec.js
@@ -14,8 +14,7 @@ describe("markups", function(){
});
afterEach(function(){
- if (element) element.remove();
- expect(size(jqCache)).toEqual(0);
+ dealoc(element);
});
it('should translate {{}} in text', function(){
@@ -63,92 +62,91 @@ describe("markups", function(){
compile('<a ng:href="{{url}}" rel="{{rel}}"></a>');
expect(sortedHtml(element)).toEqual('<a ng:bind-attr="{"href":"{{url}}","rel":"{{rel}}"}"></a>');
});
-});
+ it('should Parse Text With No Bindings', function(){
+ var parts = parseBindings("a");
+ assertEquals(parts.length, 1);
+ assertEquals(parts[0], "a");
+ assertTrue(!binding(parts[0]));
+ });
+
+ it('should Parse Empty Text', function(){
+ var parts = parseBindings("");
+ assertEquals(parts.length, 1);
+ assertEquals(parts[0], "");
+ assertTrue(!binding(parts[0]));
+ });
+
+ it('should Parse Inner Binding', function(){
+ var parts = parseBindings("a{{b}}C");
+ assertEquals(parts.length, 3);
+ assertEquals(parts[0], "a");
+ assertTrue(!binding(parts[0]));
+ assertEquals(parts[1], "{{b}}");
+ assertEquals(binding(parts[1]), "b");
+ assertEquals(parts[2], "C");
+ assertTrue(!binding(parts[2]));
+ });
+
+ it('should Parse Ending Binding', function(){
+ var parts = parseBindings("a{{b}}");
+ assertEquals(parts.length, 2);
+ assertEquals(parts[0], "a");
+ assertTrue(!binding(parts[0]));
+ assertEquals(parts[1], "{{b}}");
+ assertEquals(binding(parts[1]), "b");
+ });
+
+ it('should Parse Begging Binding', function(){
+ var parts = parseBindings("{{b}}c");
+ assertEquals(parts.length, 2);
+ assertEquals(parts[0], "{{b}}");
+ assertEquals(binding(parts[0]), "b");
+ assertEquals(parts[1], "c");
+ assertTrue(!binding(parts[1]));
+ });
+
+ it('should Parse Loan Binding', function(){
+ var parts = parseBindings("{{b}}");
+ assertEquals(parts.length, 1);
+ assertEquals(parts[0], "{{b}}");
+ assertEquals(binding(parts[0]), "b");
+ });
+
+ it('should Parse Two Bindings', function(){
+ var parts = parseBindings("{{b}}{{c}}");
+ assertEquals(parts.length, 2);
+ assertEquals(parts[0], "{{b}}");
+ assertEquals(binding(parts[0]), "b");
+ assertEquals(parts[1], "{{c}}");
+ assertEquals(binding(parts[1]), "c");
+ });
+
+ it('should Parse Two Bindings With Text In Middle', function(){
+ var parts = parseBindings("{{b}}x{{c}}");
+ assertEquals(parts.length, 3);
+ assertEquals(parts[0], "{{b}}");
+ assertEquals(binding(parts[0]), "b");
+ assertEquals(parts[1], "x");
+ assertTrue(!binding(parts[1]));
+ assertEquals(parts[2], "{{c}}");
+ assertEquals(binding(parts[2]), "c");
+ });
+
+ it('should Parse Multiline', function(){
+ var parts = parseBindings('"X\nY{{A\nB}}C\nD"');
+ assertTrue(!!binding('{{A\nB}}'));
+ assertEquals(parts.length, 3);
+ assertEquals(parts[0], '"X\nY');
+ assertEquals(parts[1], '{{A\nB}}');
+ assertEquals(parts[2], 'C\nD"');
+ });
+
+ it('should Has Binding', function(){
+ assertTrue(hasBindings(parseBindings("{{a}}")));
+ assertTrue(!hasBindings(parseBindings("a")));
+ assertTrue(hasBindings(parseBindings("{{b}}x{{c}}")));
+ });
+
+});
-var BindingMarkupTest = TestCase("BindingMarkupTest");
-
-BindingMarkupTest.prototype.testParseTextWithNoBindings = function(){
- var parts = parseBindings("a");
- assertEquals(parts.length, 1);
- assertEquals(parts[0], "a");
- assertTrue(!binding(parts[0]));
-};
-
-BindingMarkupTest.prototype.testParseEmptyText = function(){
- var parts = parseBindings("");
- assertEquals(parts.length, 1);
- assertEquals(parts[0], "");
- assertTrue(!binding(parts[0]));
-};
-
-BindingMarkupTest.prototype.testParseInnerBinding = function(){
- var parts = parseBindings("a{{b}}c");
- assertEquals(parts.length, 3);
- assertEquals(parts[0], "a");
- assertTrue(!binding(parts[0]));
- assertEquals(parts[1], "{{b}}");
- assertEquals(binding(parts[1]), "b");
- assertEquals(parts[2], "c");
- assertTrue(!binding(parts[2]));
-};
-
-BindingMarkupTest.prototype.testParseEndingBinding = function(){
- var parts = parseBindings("a{{b}}");
- assertEquals(parts.length, 2);
- assertEquals(parts[0], "a");
- assertTrue(!binding(parts[0]));
- assertEquals(parts[1], "{{b}}");
- assertEquals(binding(parts[1]), "b");
-};
-
-BindingMarkupTest.prototype.testParseBeggingBinding = function(){
- var parts = parseBindings("{{b}}c");
- assertEquals(parts.length, 2);
- assertEquals(parts[0], "{{b}}");
- assertEquals(binding(parts[0]), "b");
- assertEquals(parts[1], "c");
- assertTrue(!binding(parts[1]));
-};
-
-BindingMarkupTest.prototype.testParseLoanBinding = function(){
- var parts = parseBindings("{{b}}");
- assertEquals(parts.length, 1);
- assertEquals(parts[0], "{{b}}");
- assertEquals(binding(parts[0]), "b");
-};
-
-BindingMarkupTest.prototype.testParseTwoBindings = function(){
- var parts = parseBindings("{{b}}{{c}}");
- assertEquals(parts.length, 2);
- assertEquals(parts[0], "{{b}}");
- assertEquals(binding(parts[0]), "b");
- assertEquals(parts[1], "{{c}}");
- assertEquals(binding(parts[1]), "c");
-};
-
-BindingMarkupTest.prototype.testParseTwoBindingsWithTextInMiddle = function(){
- var parts = parseBindings("{{b}}x{{c}}");
- assertEquals(parts.length, 3);
- assertEquals(parts[0], "{{b}}");
- assertEquals(binding(parts[0]), "b");
- assertEquals(parts[1], "x");
- assertTrue(!binding(parts[1]));
- assertEquals(parts[2], "{{c}}");
- assertEquals(binding(parts[2]), "c");
-};
-
-BindingMarkupTest.prototype.testParseMultiline = function(){
- var parts = parseBindings('"X\nY{{A\nB}}C\nD"');
- assertTrue(!!binding('{{A\nB}}'));
- assertEquals(parts.length, 3);
- assertEquals(parts[0], '"X\nY');
- assertEquals(parts[1], '{{A\nB}}');
- assertEquals(parts[2], 'C\nD"');
-};
-
-BindingMarkupTest.prototype.testHasBinding = function(){
- assertTrue(hasBindings(parseBindings("{{a}}")));
- assertTrue(!hasBindings(parseBindings("a")));
- assertTrue(hasBindings(parseBindings("{{b}}x{{c}}")));
-};
diff --git a/test/servicesSpec.js b/test/servicesSpec.js
index 13e61b18..ff90e0a1 100644
--- a/test/servicesSpec.js
+++ b/test/servicesSpec.js
@@ -17,8 +17,7 @@ describe("service", function(){
});
afterEach(function(){
- if (scope && scope.$element)
- scope.$element.remove();
+ dealoc(scope);
});
@@ -202,7 +201,7 @@ describe("service", function(){
});
it('should update hash before any processing', function(){
- var scope = compile('<div>');
+ scope = compile('<div>');
var log = '';
scope.$watch('$location.hash', function(){
log += this.$location.hashPath + ';';
@@ -259,7 +258,7 @@ describe("service", function(){
describe("$invalidWidgets", function(){
it("should count number of invalid widgets", function(){
- var scope = compile('<input name="price" ng:required ng:validate="number"></input>');
+ scope = compile('<input name="price" ng:required ng:validate="number"></input>');
jqLite(document.body).append(scope.$element);
scope.$init();
expect(scope.$invalidWidgets.length).toEqual(1);
@@ -291,8 +290,8 @@ describe("service", function(){
function BookChapter() {
this.log = '<init>';
}
- var scope = compile('<div></div>').$init();
- var $route = scope.$inject('$route');
+ scope = compile('<div></div>').$init();
+ $route = scope.$inject('$route');
$route.when('/Book/:book/Chapter/:chapter', {controller: BookChapter, template:'Chapter.html'});
$route.when('/Blank');
$route.onChange(function(){
diff --git a/test/testabilityPatch.js b/test/testabilityPatch.js
index e8041ac7..ea5c8ab7 100644
--- a/test/testabilityPatch.js
+++ b/test/testabilityPatch.js
@@ -50,6 +50,25 @@ beforeEach(function(){
});
});
+afterEach(clearJqCache);
+
+function clearJqCache(){
+ var count = 0;
+ foreachSorted(jqCache, function(value, key){
+ count ++;
+ delete jqCache[key];
+ foreach(value, function(value, key){
+ if (value.$element)
+ dump(key, sortedHtml(value.$element));
+ else
+ dump(key, toJson(value));
+ });
+ });
+ if (count) {
+ fail('Found jqCache references that were not deallocated!');
+ }
+}
+
function nakedExpect(obj) {
return expect(angular.fromJson(angular.toJson(obj)));
}
@@ -58,6 +77,11 @@ function childNode(element, index) {
return jqLite(element[0].childNodes[index]);
}
+function dealoc(obj) {
+ var element = (obj||{}).$element || obj;
+ if (element && element.dealoc) element.dealoc();
+}
+
extend(angular, {
'element': jqLite,
'compile': compile,
diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js
index d3957e66..cb3b76a1 100644
--- a/test/widgetsSpec.js
+++ b/test/widgetsSpec.js
@@ -16,8 +16,7 @@ describe("widget", function(){
});
afterEach(function(){
- if (element && element.dealoc) element.dealoc();
- expect(size(jqCache)).toEqual(0);
+ dealoc(element);
});
describe("input", function(){
@@ -362,7 +361,7 @@ describe("widget", function(){
'<option value="{{$index}}" ng:repeat="name in [\'A\', \'B\', \'C\']">{{name}}</option>' +
'</select>');
// childNodes[0] is repeater comment
- expect(scope.selection).toEqual(undefined);
+ expect(scope.selection).toEqual(0);
browserTrigger(element[0].childNodes[2], 'change');
expect(scope.selection).toEqual(1);
@@ -398,6 +397,32 @@ describe("widget", function(){
scope.$eval();
expect(element[0].childNodes[1].selected).toEqual(true);
});
+
+ it('should select default option on repeater', function(){
+ compile(
+ '<select name="selection">' +
+ '<option ng:repeat="no in [1,2]">{{no}}</option>' +
+ '</select>');
+ expect(scope.selection).toEqual('1');
+ });
+
+ it('should select selected option on repeater', function(){
+ compile(
+ '<select name="selection">' +
+ '<option ng:repeat="no in [1,2]">{{no}}</option>' +
+ '<option selected>ABC</option>' +
+ '</select>');
+ expect(scope.selection).toEqual('ABC');
+ });
+
+ it('should select dynamically selected option on repeater', function(){
+ compile(
+ '<select name="selection">' +
+ '<option ng:repeat="no in [1,2]" ng:bind-attr="{selected:\'{{no==2}}\'}">{{no}}</option>' +
+ '</select>');
+ expect(scope.selection).toEqual('2');
+ });
+
});
it('should support type="select-multiple"', function(){
@@ -476,6 +501,7 @@ describe("widget", function(){
scope.url = '/Book/Moby';
scope.$init();
expect(scope.$element.text()).toEqual('Moby');
+ dealoc(scope);
});
it("should match sandwich ids", function(){
@@ -491,6 +517,7 @@ describe("widget", function(){
scope.$init();
expect(scope.name).toEqual(undefined);
expect(scope.$element.text()).toEqual('works');
+ dealoc(scope);
});
});
@@ -504,6 +531,7 @@ describe("widget", function(){
scope.$inject('$xhr.cache').data.myUrl = {value:'{{name}}'};
scope.$init();
expect(element.text()).toEqual('misko');
+ dealoc(scope);
});
it('should remove previously included text if a falsy value is bound to src', function() {
@@ -521,6 +549,7 @@ describe("widget", function(){
scope.$eval();
expect(element.text()).toEqual('');
+ dealoc(scope);
});
it('should allow this for scope', function(){
@@ -532,6 +561,7 @@ describe("widget", function(){
// This should not be 4, but to fix this properly
// we need to have real events on the scopes.
expect(element.text()).toEqual('4');
+ dealoc(scope);
});
it('should evaluate onload expression when a partial is loaded', function() {
@@ -545,6 +575,7 @@ describe("widget", function(){
scope.$init();
expect(element.text()).toEqual('my partial');
expect(scope.loaded).toBe(true);
+ dealoc(scope);
});
});