1
1
import { TypeormMock } from '@lomray/microservice-helpers/mocks' ;
2
2
import { expect } from 'chai' ;
3
+ import { allUserRolesMock } from '@__mocks__/user-roles' ;
3
4
import { FilterIgnoreType , FilterOperator } from '@constants/filter' ;
4
5
import MethodFiltersEntity from '@entities/method-filter' ;
5
6
import MethodFilters from '@services/method-filters' ;
@@ -80,10 +81,10 @@ describe('services/method-filters', () => {
80
81
} ) ;
81
82
82
83
it ( 'should correctly collect filters for method: admins role' , ( ) => {
83
- const userRoles = [ 'admins' , 'users' , 'guests' ] ; // order matters
84
- const filters = MethodFilters . init ( { userRoles, templateOptions : { userId } } ) . getFilters (
85
- methodFilters ,
86
- ) ;
84
+ const filters = MethodFilters . init ( {
85
+ userRoles : allUserRolesMock ,
86
+ templateOptions : { userId } ,
87
+ } ) . getFilters ( methodFilters ) ;
87
88
88
89
expect ( filters ) . to . deep . equal ( {
89
90
options : guests . filter . condition . options ,
@@ -97,12 +98,10 @@ describe('services/method-filters', () => {
97
98
98
99
it ( 'should correctly collect filters for method: collect for admins - except users filter' , ( ) => {
99
100
const usersFilter = { ...users , operator : 'only' } ;
100
- const userRoles = [ 'admins' , 'users' , 'guests' ] ; // order matters
101
- const filters = MethodFilters . init ( { userRoles, templateOptions : { userId } } ) . getFilters ( [
102
- methodFilters [ 0 ] ,
103
- usersFilter ,
104
- methodFilters [ 2 ] ,
105
- ] ) ;
101
+ const filters = MethodFilters . init ( {
102
+ userRoles : allUserRolesMock ,
103
+ templateOptions : { userId } ,
104
+ } ) . getFilters ( [ methodFilters [ 0 ] , usersFilter , methodFilters [ 2 ] ] ) ;
106
105
107
106
expect ( filters ) . to . deep . equal ( {
108
107
options : guests . filter . condition . options ,
@@ -119,12 +118,10 @@ describe('services/method-filters', () => {
119
118
...guests ,
120
119
filter : { ...guests . filter , ignore : { users : FilterIgnoreType . stop } } ,
121
120
} ;
122
- const userRoles = [ 'admins' , 'users' , 'guests' ] ; // order matters
123
- const filters = MethodFilters . init ( { userRoles, templateOptions : { userId } } ) . getFilters ( [
124
- guestFilter ,
125
- methodFilters [ 1 ] ,
126
- methodFilters [ 2 ] ,
127
- ] ) ;
121
+ const filters = MethodFilters . init ( {
122
+ userRoles : allUserRolesMock ,
123
+ templateOptions : { userId } ,
124
+ } ) . getFilters ( [ guestFilter , methodFilters [ 1 ] , methodFilters [ 2 ] ] ) ;
128
125
129
126
expect ( filters ) . to . deep . equal ( {
130
127
query : {
@@ -140,12 +137,10 @@ describe('services/method-filters', () => {
140
137
...guests ,
141
138
filter : { ...guests . filter , ignore : { admins : FilterIgnoreType . stop } } ,
142
139
} ;
143
- const userRoles = [ 'admins' , 'users' , 'guests' ] ; // order matters
144
- const filters = MethodFilters . init ( { userRoles, templateOptions : { userId } } ) . getFilters ( [
145
- guestFilter ,
146
- methodFilters [ 1 ] ,
147
- methodFilters [ 2 ] ,
148
- ] ) ;
140
+ const filters = MethodFilters . init ( {
141
+ userRoles : allUserRolesMock ,
142
+ templateOptions : { userId } ,
143
+ } ) . getFilters ( [ guestFilter , methodFilters [ 1 ] , methodFilters [ 2 ] ] ) ;
149
144
150
145
expect ( filters ) . to . deep . equal ( {
151
146
query : {
@@ -161,12 +156,10 @@ describe('services/method-filters', () => {
161
156
...guests ,
162
157
filter : { ...guests . filter , ignore : { users : FilterIgnoreType . only } } ,
163
158
} ;
164
- const userRoles = [ 'admins' , 'users' , 'guests' ] ; // order matters
165
- const filters = MethodFilters . init ( { userRoles, templateOptions : { userId } } ) . getFilters ( [
166
- guestFilter ,
167
- methodFilters [ 1 ] ,
168
- methodFilters [ 2 ] ,
169
- ] ) ;
159
+ const filters = MethodFilters . init ( {
160
+ userRoles : allUserRolesMock ,
161
+ templateOptions : { userId } ,
162
+ } ) . getFilters ( [ guestFilter , methodFilters [ 1 ] , methodFilters [ 2 ] ] ) ;
170
163
171
164
expect ( filters ) . to . deep . equal ( {
172
165
options : guests . filter . condition . options ,
@@ -254,11 +247,12 @@ describe('services/method-filters', () => {
254
247
} ,
255
248
} ) ;
256
249
257
- const userRoles = [ 'admins' , 'users' , 'guests' ] ; // order matters
258
- const filters = MethodFilters . init ( { userRoles, templateOptions : { userId : 99 } } ) . getFilters ( [
259
- usersFilter ,
260
- extendFilter ,
261
- ] ) ;
250
+ const filters = MethodFilters . init ( {
251
+ userRoles : allUserRolesMock ,
252
+ templateOptions : {
253
+ userId : 99 ,
254
+ } ,
255
+ } ) . getFilters ( [ usersFilter , extendFilter ] ) ;
262
256
263
257
expect ( filters ) . to . deep . equal ( {
264
258
methodOptions : {
@@ -279,4 +273,32 @@ describe('services/method-filters', () => {
279
273
} ,
280
274
} ) ;
281
275
} ) ;
276
+
277
+ it ( 'should correctly collect allow distinct in query for method' , ( ) => {
278
+ const allowDistinctInQueryFilter = methodFiltersRepo . create ( {
279
+ roleAlias : 'admins' ,
280
+ operator : FilterOperator . and ,
281
+ filter : {
282
+ condition : {
283
+ methodOptions : { isAllowDistinct : true } ,
284
+ options : { isDisableAttributes : false } ,
285
+ } ,
286
+ } ,
287
+ } ) ;
288
+
289
+ const filters = MethodFilters . init ( {
290
+ userRoles : allUserRolesMock ,
291
+ templateOptions : {
292
+ userId : 99 ,
293
+ } ,
294
+ } ) . getFilters ( [ allowDistinctInQueryFilter ] ) ;
295
+
296
+ expect ( filters ) . to . deep . equal ( {
297
+ methodOptions : {
298
+ isAllowDistinct : true ,
299
+ } ,
300
+ options : { isDisableAttributes : false } ,
301
+ query : { } ,
302
+ } ) ;
303
+ } ) ;
282
304
} ) ;
0 commit comments