blob: 4652e6a0bd9291e341e2638f6b38ab23b172e028 [file] [log] [blame]
library limit_to_spec;
import '../_specs.dart';
main() {
describe('orderBy filter', () {
beforeEach(() => inject((Scope scope, Parser parse, FilterMap filters) {
scope.context['list'] = 'abcdefgh'.split('');
scope.context['string'] = 'tuvwxyz';
}));
it('should return the first X items when X is positive', inject((Scope scope, Parser parse, FilterMap filters) {
scope.context['limit'] = 3;
expect(parse('list | limitTo: 3').eval(scope.context, filters)).toEqual(['a', 'b', 'c']);
expect(parse('list | limitTo: limit').eval(scope.context, filters)).toEqual(['a', 'b', 'c']);
expect(parse('string | limitTo: 3').eval(scope.context, filters)).toEqual('tuv');
expect(parse('string | limitTo: limit').eval(scope.context, filters)).toEqual('tuv');
}));
it('should return the last X items when X is negative', inject((Scope scope, Parser parse, FilterMap filters) {
scope.context['limit'] = 3;
expect(parse('list | limitTo: -3').eval(scope.context, filters)).toEqual(['f', 'g', 'h']);
expect(parse('list | limitTo: -limit').eval(scope.context, filters)).toEqual(['f', 'g', 'h']);
expect(parse('string | limitTo: -3').eval(scope.context, filters)).toEqual('xyz');
expect(parse('string | limitTo: -limit').eval(scope.context, filters)).toEqual('xyz');
}));
it('should return an null when limiting null list',
inject((Scope scope, Parser parse, FilterMap filters) {
expect(parse('null | limitTo: 1').eval(scope.context, filters)).toEqual(null);
expect(parse('thisIsNull | limitTo: 1').eval(scope.context, filters)).toEqual(null);
}));
it('should return an empty array when X cannot be parsed',
inject((Scope scope, Parser parse, FilterMap filters) {
expect(parse('list | limitTo: bogus').eval(scope.context, filters)).toEqual([]);
expect(parse('string | limitTo: null').eval(scope.context, filters)).toEqual([]);
expect(parse('string | limitTo: thisIsNull').eval(scope.context, filters)).toEqual([]);
}));
it('should return a copy of input array if X is exceeds array length',
inject((Scope scope, Parser parse, FilterMap filters) {
expect(parse('list | limitTo: 20').eval(scope.context, filters)).toEqual(scope.context['list']);
expect(parse('list | limitTo: -20').eval(scope.context, filters)).toEqual(scope.context['list']);
expect(parse('list | limitTo: 20').eval(scope.context, filters)).not.toBe(scope.context['list']);
}));
it('should return the entire string if X exceeds input length',
inject((Scope scope, Parser parse, FilterMap filters) {
expect(parse('string | limitTo: 20').eval(scope.context, filters)).toEqual(scope.context['string']);
expect(parse('string | limitTo: -20').eval(scope.context, filters)).toEqual(scope.context['string']);
}));
});
}