aboutsummaryrefslogtreecommitdiffstats
path: root/test/widgetsSpec.js
diff options
context:
space:
mode:
authorMisko Hevery2010-05-13 13:57:39 -0700
committerMisko Hevery2010-05-13 13:57:39 -0700
commit22d1464d7abc284dd56d6beaf47e8d85088e01c5 (patch)
tree41c2702dc7505c30aa87edc87f17b8a50a77aaa8 /test/widgetsSpec.js
parent0a288d1db368ae0754482ad06fe2a78ce6a9de85 (diff)
downloadangular.js-22d1464d7abc284dd56d6beaf47e8d85088e01c5.tar.bz2
fixed issue with radio view clobering model if radio was checked.
Diffstat (limited to 'test/widgetsSpec.js')
-rw-r--r--test/widgetsSpec.js70
1 files changed, 49 insertions, 21 deletions
diff --git a/test/widgetsSpec.js b/test/widgetsSpec.js
index 9df024cb..ecea6223 100644
--- a/test/widgetsSpec.js
+++ b/test/widgetsSpec.js
@@ -8,7 +8,7 @@ describe("widget", function(){
compile = function(html, before) {
element = jqLite(html);
scope = compiler.compile(element)(element);
- (before||noop)();
+ (before||noop).apply(scope);
scope.$init();
};
});
@@ -222,29 +222,57 @@ describe("widget", function(){
expect(scope.checkbox).toEqual(true);
});
- it('should support type="radio"', function(){
- compile('<div>' +
- '<input type="radio" name="chose" value="A" ng-change="clicked = 1"/>' +
- '<input type="radio" name="chose" value="B" checked ng-change="clicked = 2"/>' +
- '<input type="radio" name="chose" value="C" ng-change="clicked = 3"/>' +
+ describe('radio', function(){
+
+ it('should support type="radio"', function(){
+ compile('<div>' +
+ '<input type="radio" name="chose" value="A" ng-change="clicked = 1"/>' +
+ '<input type="radio" name="chose" value="B" checked ng-change="clicked = 2"/>' +
+ '<input type="radio" name="chose" value="C" ng-change="clicked = 3"/>' +
'</div>');
- var a = element[0].childNodes[0];
- var b = element[0].childNodes[1];
- expect(b.name.split('@')[1]).toEqual('chose');
- expect(scope.chose).toEqual('B');
- scope.chose = 'A';
- scope.$eval();
- expect(a.checked).toEqual(true);
+ var a = element[0].childNodes[0];
+ var b = element[0].childNodes[1];
+ expect(b.name.split('@')[1]).toEqual('chose');
+ expect(scope.chose).toEqual('B');
+ scope.chose = 'A';
+ scope.$eval();
+ expect(a.checked).toEqual(true);
- scope.chose = 'B';
- scope.$eval();
- expect(a.checked).toEqual(false);
- expect(b.checked).toEqual(true);
- expect(scope.clicked).not.toBeDefined();
+ scope.chose = 'B';
+ scope.$eval();
+ expect(a.checked).toEqual(false);
+ expect(b.checked).toEqual(true);
+ expect(scope.clicked).not.toBeDefined();
+
+ click(a);
+ expect(scope.chose).toEqual('A');
+ expect(scope.clicked).toEqual(1);
+ });
+
+ it('should honor model over html checked keyword after', function(){
+ compile('<div>' +
+ '<input type="radio" name="choose" value="A""/>' +
+ '<input type="radio" name="choose" value="B" checked/>' +
+ '<input type="radio" name="choose" value="C"/>' +
+ '</div>', function(){
+ this.choose = 'C';
+ });
+
+ expect(scope.choose).toEqual('C');
+ });
+
+ it('should honor model over html checked keyword before', function(){
+ compile('<div>' +
+ '<input type="radio" name="choose" value="A""/>' +
+ '<input type="radio" name="choose" value="B" checked/>' +
+ '<input type="radio" name="choose" value="C"/>' +
+ '</div>', function(){
+ this.choose = 'A';
+ });
+
+ expect(scope.choose).toEqual('A');
+ });
- click(a);
- expect(scope.chose).toEqual('A');
- expect(scope.clicked).toEqual(1);
});
it('should support type="select-one"', function(){