Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 715d97d

Browse files
committed
test(ngRepeat): add a test for ngRepeat when using 'track by' and a filter
1 parent ef4458a commit 715d97d

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

test/ng/directive/ngRepeatSpec.js

+48
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,54 @@ describe('ngRepeat', function() {
125125
});
126126

127127

128+
it('should still filter when track is present', function() {
129+
scope.isIgor = function (item) {
130+
return item.name === 'igor';
131+
};
132+
element = $compile(
133+
'<ul>' +
134+
'<li ng-repeat="item in items | filter:isIgor track by $id(item)">{{item.name}};</li>' +
135+
'</ul>')(scope);
136+
scope.items = [{name: 'igor'}, {name: 'misko'}];
137+
scope.$digest();
138+
139+
expect(element.find('li').text()).toBe('igor;');
140+
});
141+
142+
143+
it('should track using provided function when a filter is present', function() {
144+
scope.newArray = function (items) {
145+
var newArray = [];
146+
angular.forEach(items, function (item) {
147+
newArray.push({
148+
id: item.id,
149+
name: item.name
150+
});
151+
});
152+
return newArray;
153+
};
154+
element = $compile(
155+
'<ul>' +
156+
'<li ng-repeat="item in items | filter:newArray track by item.id">{{item.name}};</li>' +
157+
'</ul>')(scope);
158+
scope.items = [
159+
{id: 1, name: 'igor'},
160+
{id: 2, name: 'misko'}
161+
];
162+
scope.$digest();
163+
164+
expect(element.text()).toBe('igor;misko;');
165+
166+
var li0 = element.find('li')[0];
167+
var li1 = element.find('li')[1];
168+
169+
scope.items.push(scope.items.shift());
170+
scope.$digest();
171+
expect(element.find('li')[0]).toBe(li1);
172+
expect(element.find('li')[1]).toBe(li0);
173+
});
174+
175+
128176
it('should iterate over an array of primitives', function() {
129177
element = $compile(
130178
'<ul>' +

0 commit comments

Comments
 (0)