From 715d97d5c87c9250f8ac8b5801b8c7f3b197e815 Mon Sep 17 00:00:00 2001 From: Brian Ford Date: Thu, 18 Jul 2013 14:22:04 -0700 Subject: test(ngRepeat): add a test for ngRepeat when using 'track by' and a filter --- test/ng/directive/ngRepeatSpec.js | 48 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'test/ng/directive') diff --git a/test/ng/directive/ngRepeatSpec.js b/test/ng/directive/ngRepeatSpec.js index 21ea21e9..6506e060 100644 --- a/test/ng/directive/ngRepeatSpec.js +++ b/test/ng/directive/ngRepeatSpec.js @@ -125,6 +125,54 @@ describe('ngRepeat', function() { }); + it('should still filter when track is present', function() { + scope.isIgor = function (item) { + return item.name === 'igor'; + }; + element = $compile( + '')(scope); + scope.items = [{name: 'igor'}, {name: 'misko'}]; + scope.$digest(); + + expect(element.find('li').text()).toBe('igor;'); + }); + + + it('should track using provided function when a filter is present', function() { + scope.newArray = function (items) { + var newArray = []; + angular.forEach(items, function (item) { + newArray.push({ + id: item.id, + name: item.name + }); + }); + return newArray; + }; + element = $compile( + '')(scope); + scope.items = [ + {id: 1, name: 'igor'}, + {id: 2, name: 'misko'} + ]; + scope.$digest(); + + expect(element.text()).toBe('igor;misko;'); + + var li0 = element.find('li')[0]; + var li1 = element.find('li')[1]; + + scope.items.push(scope.items.shift()); + scope.$digest(); + expect(element.find('li')[0]).toBe(li1); + expect(element.find('li')[1]).toBe(li0); + }); + + it('should iterate over an array of primitives', function() { element = $compile( '