diff options
| author | Misko Hevery | 2010-05-13 13:57:39 -0700 |
|---|---|---|
| committer | Misko Hevery | 2010-05-13 13:57:39 -0700 |
| commit | 22d1464d7abc284dd56d6beaf47e8d85088e01c5 (patch) | |
| tree | 41c2702dc7505c30aa87edc87f17b8a50a77aaa8 /test/widgetsSpec.js | |
| parent | 0a288d1db368ae0754482ad06fe2a78ce6a9de85 (diff) | |
| download | angular.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.js | 70 |
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(){ |
