aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorVojta Jina2012-03-23 13:04:52 -0700
committerVojta Jina2012-03-26 21:14:09 -0700
commit09e175f02cca0f4a295fd0c9b980cd8f432e722b (patch)
tree49796ba88d2db7a6e621155e9849109206f744cd /test
parent5c5b1183c82a28841b3e1e246ee341262e91d743 (diff)
downloadangular.js-09e175f02cca0f4a295fd0c9b980cd8f432e722b.tar.bz2
feat(ngValue): allow radio inputs to have non string values
Closes #816
Diffstat (limited to 'test')
-rw-r--r--test/directive/inputSpec.js38
-rw-r--r--test/service/compilerSpec.js12
2 files changed, 48 insertions, 2 deletions
diff --git a/test/directive/inputSpec.js b/test/directive/inputSpec.js
index 0b848df1..8d0e44b3 100644
--- a/test/directive/inputSpec.js
+++ b/test/directive/inputSpec.js
@@ -1078,4 +1078,42 @@ describe('input', function() {
expect(scope.value).toBe('value3');
}));
});
+
+
+ describe('ng-value', function() {
+
+ it('should evaluate and set constant expressions', function() {
+ compileInput('<input type="radio" ng-model="selected" ng-value="true">' +
+ '<input type="radio" ng-model="selected" ng-value="false">' +
+ '<input type="radio" ng-model="selected" ng-value="1">');
+ scope.$digest();
+
+ browserTrigger(inputElm[0], 'click');
+ expect(scope.selected).toBe(true);
+
+ browserTrigger(inputElm[1], 'click');
+ expect(scope.selected).toBe(false);
+
+ browserTrigger(inputElm[2], 'click');
+ expect(scope.selected).toBe(1);
+ });
+
+
+ it('should watch the expression', function() {
+ compileInput('<input type="radio" ng-model="selected" ng-value="value">');
+
+ scope.$apply(function() {
+ scope.selected = scope.value = {some: 'object'};
+ });
+ expect(inputElm[0].checked).toBe(true);
+
+ scope.$apply(function() {
+ scope.value = {some: 'other'};
+ });
+ expect(inputElm[0].checked).toBe(false);
+
+ browserTrigger(inputElm, 'click');
+ expect(scope.selected).toBe(scope.value);
+ });
+ });
});
diff --git a/test/service/compilerSpec.js b/test/service/compilerSpec.js
index d7ecdafc..698fc23e 100644
--- a/test/service/compilerSpec.js
+++ b/test/service/compilerSpec.js
@@ -1401,7 +1401,7 @@ describe('$compile', function() {
it('should allow overriding of attribute name and remember the name', function() {
- attr.$set('ngOther', '123', 'other');
+ attr.$set('ngOther', '123', true, 'other');
expect(element.attr('other')).toEqual('123');
expect(attr.ngOther).toEqual('123');
@@ -1437,7 +1437,15 @@ describe('$compile', function() {
attr.$set('ngMyAttr', 'value');
attr.$set('ngMyAttr', null);
expect(element.attr('ng-my-attr')).toBe(undefined);
- })
+ });
+
+
+ it('should not set DOM element attr if writeAttr false', function() {
+ attr.$set('test', 'value', false);
+
+ expect(element.attr('test')).toBeUndefined();
+ expect(attr.test).toBe('value');
+ });
});
});