aboutsummaryrefslogtreecommitdiffstats
path: root/test/widget/inputSpec.js
diff options
context:
space:
mode:
authorMisko Hevery2011-11-22 21:28:39 -0800
committerMisko Hevery2012-01-25 11:50:37 -0800
commit9ee2cdff44e7d496774b340de816344126c457b3 (patch)
tree476ffcb4425e7160865029d6b57d41b766750285 /test/widget/inputSpec.js
parent8af4fde18246ac1587b471a549e70d5d858bf0ee (diff)
downloadangular.js-9ee2cdff44e7d496774b340de816344126c457b3.tar.bz2
refactor(directives): connect new compiler
- turn everything into a directive
Diffstat (limited to 'test/widget/inputSpec.js')
-rw-r--r--test/widget/inputSpec.js79
1 files changed, 39 insertions, 40 deletions
diff --git a/test/widget/inputSpec.js b/test/widget/inputSpec.js
index 3e073d95..3b3aa282 100644
--- a/test/widget/inputSpec.js
+++ b/test/widget/inputSpec.js
@@ -51,7 +51,6 @@ describe('widget: input', function() {
it('should bind update scope from model', function() {
createInput();
- expect(scope.form.name.$required).toBe(false);
scope.name = 'misko';
scope.$digest();
expect(inputElement.val()).toEqual('misko');
@@ -60,7 +59,6 @@ describe('widget: input', function() {
it('should require', function() {
createInput({required:''});
- expect(scope.form.name.$required).toBe(true);
scope.$digest();
expect(scope.form.name.$valid).toBe(false);
scope.name = 'misko';
@@ -159,7 +157,7 @@ describe('widget: input', function() {
'</div>');
scope.obj = { abc: { name: 'Misko'} };
scope.$digest();
- expect(scope.$element.find('input').val()).toEqual('Misko');
+ expect(element.find('input').val()).toEqual('Misko');
});
@@ -181,7 +179,7 @@ describe('widget: input', function() {
it("should render as blank if null", function() {
compile('<input type="text" ng:model="age" ng:format="number" ng:init="age=null"/>');
expect(scope.age).toBeNull();
- expect(scope.$element[0].value).toEqual('');
+ expect(element[0].value).toEqual('');
});
@@ -189,19 +187,19 @@ describe('widget: input', function() {
compile('<input type="number" ng:model="age"/>');
scope.age = 123;
scope.$digest();
- expect(scope.$element.val()).toEqual('123');
+ expect(element.val()).toEqual('123');
try {
// to allow non-number values, we have to change type so that
// the browser which have number validation will not interfere with
// this test. IE8 won't allow it hence the catch.
- scope.$element[0].setAttribute('type', 'text');
+ element[0].setAttribute('type', 'text');
} catch (e){}
- scope.$element.val('123X');
- browserTrigger(scope.$element, 'change');
+ element.val('123X');
+ browserTrigger(element, 'change');
defer.flush();
- expect(scope.$element.val()).toEqual('123X');
+ expect(element.val()).toEqual('123X');
expect(scope.age).toEqual(123);
- expect(scope.$element).toBeInvalid();
+ expect(element).toBeInvalid();
});
@@ -211,28 +209,28 @@ describe('widget: input', function() {
// the user from ever typying ','.
compile('<input type="list" ng:model="list"/>');
- scope.$element.val('a ');
- browserTrigger(scope.$element, 'change');
+ element.val('a ');
+ browserTrigger(element, 'change');
defer.flush();
- expect(scope.$element.val()).toEqual('a ');
+ expect(element.val()).toEqual('a ');
expect(scope.list).toEqual(['a']);
- scope.$element.val('a ,');
- browserTrigger(scope.$element, 'change');
+ element.val('a ,');
+ browserTrigger(element, 'change');
defer.flush();
- expect(scope.$element.val()).toEqual('a ,');
+ expect(element.val()).toEqual('a ,');
expect(scope.list).toEqual(['a']);
- scope.$element.val('a , ');
- browserTrigger(scope.$element, 'change');
+ element.val('a , ');
+ browserTrigger(element, 'change');
defer.flush();
- expect(scope.$element.val()).toEqual('a , ');
+ expect(element.val()).toEqual('a , ');
expect(scope.list).toEqual(['a']);
- scope.$element.val('a , b');
- browserTrigger(scope.$element, 'change');
+ element.val('a , b');
+ browserTrigger(element, 'change');
defer.flush();
- expect(scope.$element.val()).toEqual('a , b');
+ expect(element.val()).toEqual('a , b');
expect(scope.list).toEqual(['a', 'b']);
});
@@ -240,7 +238,7 @@ describe('widget: input', function() {
it("should come up blank when no value specified", function() {
compile('<input type="number" ng:model="age"/>');
scope.$digest();
- expect(scope.$element.val()).toEqual('');
+ expect(element.val()).toEqual('');
expect(scope.age).toEqual(null);
});
});
@@ -250,7 +248,7 @@ describe('widget: input', function() {
it("should format booleans", function() {
compile('<input type="checkbox" ng:model="name" ng:init="name=false"/>');
expect(scope.name).toBe(false);
- expect(scope.$element[0].checked).toBe(false);
+ expect(element[0].checked).toBe(false);
});
@@ -270,15 +268,15 @@ describe('widget: input', function() {
scope.name='y';
scope.$digest();
- expect(scope.$element[0].checked).toBe(true);
+ expect(element[0].checked).toBe(true);
scope.name='n';
scope.$digest();
- expect(scope.$element[0].checked).toBe(false);
+ expect(element[0].checked).toBe(false);
scope.name='abc';
scope.$digest();
- expect(scope.$element[0].checked).toBe(false);
+ expect(element[0].checked).toBe(false);
browserTrigger(element);
expect(scope.name).toEqual('y');
@@ -302,7 +300,6 @@ describe('widget: input', function() {
it("should process required", inject(function($formFactory) {
compile('<input type="text" ng:model="price" name="p" required/>', jqLite(document.body));
- expect($formFactory.rootForm.p.$required).toBe(true);
expect(element.hasClass('ng-invalid')).toBeTruthy();
scope.price = 'xxx';
@@ -394,7 +391,7 @@ describe('widget: input', function() {
'</div>');
expect(scope.choose).toEqual('C');
- var inputs = scope.$element.find('input');
+ var inputs = element.find('input');
expect(inputs[1].checked).toBe(false);
expect(inputs[2].checked).toBe(true);
});
@@ -408,7 +405,7 @@ describe('widget: input', function() {
'</div>');
expect(scope.choose).toEqual('A');
- var inputs = scope.$element.find('input');
+ var inputs = element.find('input');
expect(inputs[0].checked).toBe(true);
expect(inputs[1].checked).toBe(false);
});
@@ -421,7 +418,7 @@ describe('widget: input', function() {
' type="radio" ng:model="choice" value="{{item}}" name="choice">'+
'</li>');
- var inputs = scope.$element.find('input');
+ var inputs = element.find('input');
expect(inputs[0].checked).toBe(false);
expect(inputs[1].checked).toBe(false);
@@ -435,7 +432,7 @@ describe('widget: input', function() {
function($rootScope, $compile){
$rootScope.choice = 'b';
$rootScope.items = ['a', 'b'];
- var element = $compile(
+ element = $compile(
'<li>'+
'<input ng:repeat="item in items" ' +
' type="radio" ng:model="choice" value="{{item}}" name="choice">'+
@@ -465,21 +462,22 @@ describe('widget: input', function() {
$rootScope.value = undefined;
$rootScope.$digest();
expect(element.val()).toEqual('');
+ dealoc(element);
}));
});
it('should ignore text widget which have no name', function() {
compile('<input type="text"/>');
- expect(scope.$element.attr('ng-exception')).toBeFalsy();
- expect(scope.$element.hasClass('ng-exception')).toBeFalsy();
+ expect(element.attr('ng-exception')).toBeFalsy();
+ expect(element.hasClass('ng-exception')).toBeFalsy();
});
it('should ignore checkbox widget which have no name', function() {
compile('<input type="checkbox"/>');
- expect(scope.$element.attr('ng-exception')).toBeFalsy();
- expect(scope.$element.hasClass('ng-exception')).toBeFalsy();
+ expect(element.attr('ng-exception')).toBeFalsy();
+ expect(element.hasClass('ng-exception')).toBeFalsy();
});
@@ -506,6 +504,7 @@ describe('widget: input', function() {
expect(formFactory).toBe($formFactory);
expect(input[0]).toBe(element[0]);
+ dealoc(element);
}));
it('should throw an error of Controller not declared in scope', inject(function($rootScope, $compile) {
@@ -530,13 +529,13 @@ describe('widget: input', function() {
forEach(validList, function(value){
it('should validate "' + value + '"', function() {
setup(value);
- expect(scope.$element).toBeValid();
+ expect(element).toBeValid();
});
});
forEach(invalidList, function(value){
it('should NOT validate "' + value + '"', function() {
setup(value);
- expect(scope.$element).toBeInvalid();
+ expect(element).toBeInvalid();
});
});
@@ -553,10 +552,10 @@ describe('widget: input', function() {
// to allow non-number values, we have to change type so that
// the browser which have number validation will not interfere with
// this test. IE8 won't allow it hence the catch.
- scope.$element[0].setAttribute('type', 'text');
+ element[0].setAttribute('type', 'text');
} catch (e){}
if (value != undefined) {
- scope.$element.val(value);
+ element.val(value);
browserTrigger(element, 'keydown');
defer.flush();
}