@@ -198,23 +198,29 @@ public void TestAutomaticFacetFilters()
198
198
[ Parallelizable ]
199
199
public void TestLegacyFilterFormats ( )
200
200
{
201
- // Testing "one string" legacy filters => should be converted to "ORED " nested filters
202
- // [["color:green", "color:yellow"]]
201
+ // Testing "one string" legacy filters => should be converted to "ANDED " nested filters
202
+ // [["color:green"],[ "color:yellow"]]
203
203
string stringFilters = "\" color:green,color:yellow\" " ;
204
204
205
205
var serializedStringFilters =
206
206
JsonConvert . DeserializeObject < List < List < string > > > ( stringFilters , new FiltersConverter ( ) ) ;
207
207
208
- AssertOredResult ( serializedStringFilters ) ;
208
+ AssertAndedResult ( serializedStringFilters , "color:green" , "color:yellow" ) ;
209
209
210
- // Testing "one array" legacy filters => should be converted to "ORED " nested filters
211
- // [["color:green", "color:yellow"]]
210
+ // Testing "one array" legacy filters => should be converted to "ANDED " nested filters
211
+ // [["color:green"],[ "color:yellow"]]
212
212
string arrayFilters = "[\" color:green\" ,\" color:yellow\" ]" ;
213
213
214
214
var serializedArrayFilter =
215
215
JsonConvert . DeserializeObject < List < List < string > > > ( arrayFilters , new FiltersConverter ( ) ) ;
216
216
217
- AssertOredResult ( serializedArrayFilter ) ;
217
+ AssertAndedResult ( serializedArrayFilter , "color:green" , "color:yellow" ) ;
218
+
219
+ // Strings inside an array should not be modified (i.e. not split into AND filter)
220
+ string arrayFilters2 = "[\" color:green,color:yellow\" ,\" color:blue\" ]" ;
221
+ var serializedArrayFilter2 =
222
+ JsonConvert . DeserializeObject < List < List < string > > > ( arrayFilters2 , new FiltersConverter ( ) ) ;
223
+ AssertAndedResult ( serializedArrayFilter2 , "color:green,color:yellow" , "color:blue" ) ;
218
224
219
225
string nestedArrayFilters = "[[\" color:green\" ,\" color:yellow\" ]]" ;
220
226
@@ -223,18 +229,20 @@ public void TestLegacyFilterFormats()
223
229
224
230
AssertOredResult ( serializedNestedArrayFilter ) ;
225
231
232
+ // Testing "one string with parenthesis" legacy filters => should be converted to "ORED" filters
233
+ // [["color:green", "color:yellow"], ["color:blue"]]
234
+ string stringParenthesisFilters = "\" (color:green,color:yellow),color:blue\" " ;
235
+ var serializedStringParenthesisFilters =
236
+ JsonConvert . DeserializeObject < List < List < string > > > ( stringParenthesisFilters , new FiltersConverter ( ) ) ;
237
+ AssertOredLatestResult ( serializedStringParenthesisFilters , "color:green" , "color:yellow" , "color:blue" ) ;
238
+
226
239
// Testing the latest format of filters i.e nested arrays
227
240
string nestedAndedArrayFilters = "[[\" color:green\" ,\" color:yellow\" ],[\" color:blue\" ]]" ;
228
241
229
- var serializedAdedNestedArrayFilter =
242
+ var serializedAndedNestedArrayFilter =
230
243
JsonConvert . DeserializeObject < List < List < string > > > ( nestedAndedArrayFilters , new FiltersConverter ( ) ) ;
231
244
232
- Assert . That ( serializedAdedNestedArrayFilter , Has . Count . EqualTo ( 2 ) ) ;
233
- Assert . That ( serializedAdedNestedArrayFilter . ElementAt ( 0 ) , Has . Count . EqualTo ( 2 ) ) ;
234
- Assert . That ( serializedAdedNestedArrayFilter . ElementAt ( 0 ) . ElementAt ( 0 ) , Contains . Substring ( "color:green" ) ) ;
235
- Assert . That ( serializedAdedNestedArrayFilter . ElementAt ( 0 ) . ElementAt ( 1 ) , Contains . Substring ( "color:yellow" ) ) ;
236
- Assert . That ( serializedAdedNestedArrayFilter . ElementAt ( 1 ) , Has . Count . EqualTo ( 1 ) ) ;
237
- Assert . That ( serializedAdedNestedArrayFilter . ElementAt ( 1 ) . ElementAt ( 0 ) , Contains . Substring ( "color:blue" ) ) ;
245
+ AssertOredLatestResult ( serializedAndedNestedArrayFilter , "color:green" , "color:yellow" , "color:blue" ) ;
238
246
239
247
// Finally, testing that the custom reader is not breaking current implementation
240
248
Rule ruleWithFilters = new Rule
@@ -293,6 +301,25 @@ void AssertOredResult(List<List<string>> result)
293
301
Assert . That ( result . ElementAt ( 0 ) . ElementAt ( 0 ) , Contains . Substring ( "color:green" ) ) ;
294
302
Assert . That ( result . ElementAt ( 0 ) . ElementAt ( 1 ) , Contains . Substring ( "color:yellow" ) ) ;
295
303
}
304
+
305
+ void AssertAndedResult ( List < List < string > > result , string expectedElement1 , string expectedElement2 )
306
+ {
307
+ Assert . That ( result , Has . Count . EqualTo ( 2 ) ) ;
308
+ Assert . That ( result . ElementAt ( 0 ) , Has . Count . EqualTo ( 1 ) ) ;
309
+ Assert . That ( result . ElementAt ( 0 ) . ElementAt ( 0 ) , Contains . Substring ( expectedElement1 ) ) ;
310
+ Assert . That ( result . ElementAt ( 1 ) , Has . Count . EqualTo ( 1 ) ) ;
311
+ Assert . That ( result . ElementAt ( 1 ) . ElementAt ( 0 ) , Contains . Substring ( expectedElement2 ) ) ;
312
+ }
313
+
314
+ void AssertOredLatestResult ( List < List < string > > result , string expectedAnd1 , string expectedAnd2 , string expectedOr )
315
+ {
316
+ Assert . That ( result , Has . Count . EqualTo ( 2 ) ) ;
317
+ Assert . That ( result . ElementAt ( 0 ) , Has . Count . EqualTo ( 2 ) ) ;
318
+ Assert . That ( result . ElementAt ( 0 ) . ElementAt ( 0 ) , Contains . Substring ( expectedAnd1 ) ) ;
319
+ Assert . That ( result . ElementAt ( 0 ) . ElementAt ( 1 ) , Contains . Substring ( expectedAnd2 ) ) ;
320
+ Assert . That ( result . ElementAt ( 1 ) , Has . Count . EqualTo ( 1 ) ) ;
321
+ Assert . That ( result . ElementAt ( 1 ) . ElementAt ( 0 ) , Contains . Substring ( expectedOr ) ) ;
322
+ }
296
323
}
297
324
298
325
[ Test ]
0 commit comments