1
1
'use strict' ;
2
2
3
3
describe ( 'filterByFilter' , function ( ) {
4
-
5
4
var filter ;
6
5
7
6
beforeEach ( module ( 'a8m.filter-by' ) ) ;
8
-
9
7
beforeEach ( inject ( function ( $filter ) {
10
8
filter = $filter ( 'filterBy' ) ;
11
9
} ) ) ;
12
10
13
11
it ( 'should filter by specific properties and avoid the rest' , function ( ) {
14
-
15
12
var users = [
16
13
{ id : 1 , user : { first_name : 'foo' , last_name : 'bar' , mobile : 4444 } } ,
17
14
{ id : 2 , user : { first_name : 'bar' , last_name : 'foo' , mobile : 3333 } } ,
@@ -26,11 +23,9 @@ describe('filterByFilter', function() {
26
23
expect ( filter ( users , [ 'id' , 'user.mobile' ] , '1' ) ) . toEqual ( [ users [ 0 ] , users [ 3 ] ] ) ;
27
24
expect ( filter ( users , [ 'id' ] , '1' ) ) . toEqual ( [ users [ 0 ] ] ) ;
28
25
expect ( filter ( users , [ 'id' , 'user.mobile' ] , '11' ) ) . toEqual ( [ users [ 3 ] ] ) ;
29
-
30
26
} ) ;
31
27
32
28
it ( 'should support to get object as collection' , function ( ) {
33
-
34
29
var users = {
35
30
0 : { id : 1 , user : { first_name : 'foo' , last_name : 'bar' , mobile : 4444 } } ,
36
31
1 : { id : 2 , user : { first_name : 'bar' , last_name : 'foo' , mobile : 3333 } } ,
@@ -41,11 +36,9 @@ describe('filterByFilter', function() {
41
36
expect ( filter ( users , [ 'user.first_name' , 'user.last_name' ] , 'foo' ) ) . toEqual ( users ) ;
42
37
expect ( filter ( users , [ 'user.first_name' ] , 'oo' ) ) . toEqual ( [ users [ 0 ] , users [ 2 ] ] ) ;
43
38
expect ( filter ( users , [ 'user.last_name' ] , 'bar' ) ) . toEqual ( [ users [ 0 ] ] ) ;
44
-
45
39
} ) ;
46
40
47
41
it ( 'should parse concatenate properties, and search them by one field' , function ( ) {
48
-
49
42
var users = [
50
43
{ id : 1 , user : { first_name : 'foo' , last_name : 'bar' , mobile : 4444 } } ,
51
44
{ id : 2 , user : { first_name : 'bar' , last_name : 'foo' , mobile : 3333 } } ,
@@ -62,11 +55,9 @@ describe('filterByFilter', function() {
62
55
expect ( filter ( users , [ 'user.first_name + user.last_name' ] , 'a' ) ) . toEqual ( users ) ;
63
56
expect ( filter ( users , [ 'user.first_name + user.last_name' ] , 'ba' ) ) . toEqual ( users ) ;
64
57
expect ( filter ( users , [ 'user.first_name + user.last_name' ] , 'foo' ) ) . toEqual ( users ) ;
65
-
66
58
} ) ;
67
59
68
60
it ( 'should take care on extreme conditions' , function ( ) {
69
-
70
61
var users = [
71
62
{ id : 1 , user : { first_name : 'foo' , last_name : 'bar' , mobile : 4444 } } ,
72
63
{ id : 2 , user : { first_name : 'bar' , last_name : 'foo' , mobile : 3333 } } ,
@@ -80,16 +71,13 @@ describe('filterByFilter', function() {
80
71
expect ( filter ( users , [ 'id' , 'phone' ] , null ) ) . toEqual ( users ) ;
81
72
expect ( filter ( users , null , null ) ) . toEqual ( users ) ;
82
73
expect ( filter ( users , [ ] , [ ] ) ) . toEqual ( users ) ;
83
-
84
74
} ) ;
85
75
86
76
it ( 'should get a !collection and return it as-is' , function ( ) {
87
-
88
77
expect ( filter ( ! 1 ) ) . toBeFalsy ( ) ;
89
78
expect ( filter ( 1 ) ) . toEqual ( 1 ) ;
90
79
expect ( filter ( 'string' ) ) . toEqual ( 'string' ) ;
91
80
expect ( filter ( undefined ) ) . toEqual ( undefined ) ;
92
-
93
81
} ) ;
94
82
95
83
it ( 'should not coerce non-string/number properties' , function ( ) {
@@ -101,32 +89,23 @@ describe('filterByFilter', function() {
101
89
} ) ;
102
90
103
91
describe ( 'strict mode' , function ( ) {
104
-
105
92
var users = [
106
93
{ id : 1 , user : { first_name : 'foo' , last_name : 'bar' , mobile : 4444 } }
107
94
] ;
108
95
109
96
it ( 'should only return exact matches' , function ( ) {
110
-
111
97
expect ( filter ( users , [ 'user.first_name' ] , 'fo' , true ) ) . toEqual ( [ ] ) ;
112
98
expect ( filter ( users , [ 'user.first_name' ] , 'foo' , true ) ) . toEqual ( users ) ;
113
-
114
99
} ) ;
115
100
116
101
it ( 'should handle multiple properties' , function ( ) {
117
-
118
102
expect ( filter ( users , [ 'user.first_name' , 'user.last_name' ] , 'ba' , true ) ) . toEqual ( [ ] ) ;
119
103
expect ( filter ( users , [ 'user.first_name' , 'user.last_name' ] , 'bar' , true ) ) . toEqual ( users ) ;
120
-
121
104
} ) ;
122
105
123
106
it ( 'should handle concatenation' , function ( ) {
124
-
125
107
expect ( filter ( users , [ 'user.first_name + user.last_name' ] , 'foo ba' , true ) ) . toEqual ( [ ] ) ;
126
108
expect ( filter ( users , [ 'user.first_name + user.last_name' ] , 'foo bar' , true ) ) . toEqual ( users ) ;
127
-
128
109
} ) ;
129
-
130
110
} ) ;
131
-
132
111
} ) ;
0 commit comments