From f2b7fffdc0b0ad80cebb24f5fea743e9e4a439d5 Mon Sep 17 00:00:00 2001 From: Zhenbo Zhang Date: Wed, 9 May 2012 00:00:38 +0300 Subject: fix(ngRepeat): now works with primitive types closes #933 --- test/ng/directive/ngRepeatSpec.js | 115 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) (limited to 'test/ng/directive/ngRepeatSpec.js') diff --git a/test/ng/directive/ngRepeatSpec.js b/test/ng/directive/ngRepeatSpec.js index 72382591..83f23cec 100644 --- a/test/ng/directive/ngRepeatSpec.js +++ b/test/ng/directive/ngRepeatSpec.js @@ -37,6 +37,89 @@ describe('ngRepeat', function() { })); + it('should ngRepeat over array of primitive correctly', inject(function($rootScope, $compile) { + element = $compile( + '')($rootScope); + + Array.prototype.extraProperty = "should be ignored"; + // INIT + $rootScope.items = [true, true, true]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(3); + expect(element.text()).toEqual('true;true;true;'); + delete Array.prototype.extraProperty; + + $rootScope.items = [false, true, true]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(3); + expect(element.text()).toEqual('false;true;true;'); + + $rootScope.items = [false, true, false]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(3); + expect(element.text()).toEqual('false;true;false;'); + + $rootScope.items = [true]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(1); + expect(element.text()).toEqual('true;'); + + $rootScope.items = [true, true, false]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(3); + expect(element.text()).toEqual('true;true;false;'); + + $rootScope.items = [true, false, false]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(3); + expect(element.text()).toEqual('true;false;false;'); + + // string + $rootScope.items = ['a', 'a', 'a']; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(3); + expect(element.text()).toEqual('a;a;a;'); + + $rootScope.items = ['ab', 'a', 'a']; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(3); + expect(element.text()).toEqual('ab;a;a;'); + + $rootScope.items = ['test']; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(1); + expect(element.text()).toEqual('test;'); + + $rootScope.items = ['same', 'value']; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(2); + expect(element.text()).toEqual('same;value;'); + + // number + $rootScope.items = [12, 12, 12]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(3); + expect(element.text()).toEqual('12;12;12;'); + + $rootScope.items = [53, 12, 27]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(3); + expect(element.text()).toEqual('53;12;27;'); + + $rootScope.items = [89]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(1); + expect(element.text()).toEqual('89;'); + + $rootScope.items = [89, 23]; + $rootScope.$digest(); + expect(element.find('li').length).toEqual(2); + expect(element.text()).toEqual('89;23;'); + })); + + it('should ngRepeat over object', inject(function($rootScope, $compile) { element = $compile( '