@@ -416,6 +416,50 @@ def test_keyword_index_str_query_and(self):
416
416
417
417
self .assertEqual (["/plone/folder/doc" ], result_paths (response .json ()))
418
418
419
+ def test_keyword_index_not_as_list (self ):
420
+ query = {"test_list_field.not" : ["Keyword1" , "Keyword2" ]}
421
+ response = self .api_session .get ("/@search" , params = query )
422
+
423
+ self .assertEqual (
424
+ sorted (
425
+ [
426
+ "/plone" ,
427
+ "/plone/doc-outside-folder" ,
428
+ "/plone/folder" ,
429
+ "/plone/folder2" ,
430
+ "/plone/folder2/doc" ,
431
+ ]
432
+ ),
433
+ sorted (result_paths (response .json ())),
434
+ )
435
+
436
+ def test_keyword_index_not_as_str (self ):
437
+ query = {"test_list_field.not" : "Keyword1" }
438
+ response = self .api_session .get ("/@search" , params = query )
439
+ self .assertEqual (
440
+ sorted (
441
+ [
442
+ "/plone" ,
443
+ "/plone/folder" ,
444
+ "/plone/folder/other-document" ,
445
+ "/plone/folder2" ,
446
+ "/plone/folder2/doc" ,
447
+ "/plone/doc-outside-folder" ,
448
+ ]
449
+ ),
450
+ sorted (result_paths (response .json ())),
451
+ )
452
+
453
+ def test_keyword_index_query_and_not (self ):
454
+ query = {
455
+ "test_list_field.query" : "Keyword2" ,
456
+ "test_list_field.not" : "Keyword1" ,
457
+ }
458
+ response = self .api_session .get ("/@search" , params = query )
459
+ self .assertEqual (
460
+ ["/plone/folder/other-document" ], result_paths (response .json ())
461
+ )
462
+
419
463
# BooleanIndex
420
464
421
465
def test_boolean_index_query (self ):
@@ -446,6 +490,32 @@ def test_field_index_int_range_query(self):
446
490
447
491
self .assertEqual (["/plone/folder/doc" ], result_paths (response .json ()))
448
492
493
+ def test_field_index_not_as_list (self ):
494
+ query = {"portal_type.not" : ["DXTestDocument" , "Plone Site" ]}
495
+ response = self .api_session .get ("/@search" , params = query )
496
+
497
+ self .assertEqual (
498
+ sorted (["/plone/folder" , "/plone/folder2" ]),
499
+ sorted (result_paths (response .json ())),
500
+ )
501
+
502
+ def test_field_index_not_as_str (self ):
503
+ query = {"portal_type.not" : ["DXTestDocument" ]}
504
+ response = self .api_session .get ("/@search" , params = query )
505
+
506
+ self .assertEqual (
507
+ sorted (["/plone/folder" , "/plone/folder2" , "/plone" ]),
508
+ sorted (result_paths (response .json ())),
509
+ )
510
+
511
+ def test_field_index_query_and_not (self ):
512
+ query = {
513
+ "id.query" : ["folder" , "folder2" ],
514
+ "id.not" : "folder2" ,
515
+ }
516
+ response = self .api_session .get ("/@search" , params = query )
517
+ self .assertEqual (["/plone/folder" ], result_paths (response .json ()))
518
+
449
519
# ExtendedPathIndex
450
520
451
521
def test_extended_path_index_query (self ):
@@ -555,6 +625,44 @@ def test_date_index_ranged_query(self):
555
625
556
626
self .assertEqual (["/plone/folder/doc" ], result_paths (response .json ()))
557
627
628
+ def test_date_index_not_as_list (self ):
629
+ query = {
630
+ "start.not" : [date (1950 , 1 , 1 ).isoformat (), date (1975 , 1 , 1 ).isoformat ()]
631
+ }
632
+ response = self .api_session .get ("/@search" , params = query )
633
+
634
+ self .assertEqual (
635
+ sorted (
636
+ [
637
+ "/plone" ,
638
+ "/plone/folder" ,
639
+ "/plone/folder2" ,
640
+ "/plone/doc-outside-folder" ,
641
+ ]
642
+ ),
643
+ sorted (result_paths (response .json ())),
644
+ )
645
+
646
+ def test_date_index_not_as_date (self ):
647
+ query = {
648
+ "start.not" : date (1950 , 1 , 1 ).isoformat (),
649
+ }
650
+ response = self .api_session .get ("/@search" , params = query )
651
+
652
+ self .assertEqual (
653
+ sorted (
654
+ [
655
+ "/plone" ,
656
+ "/plone/folder" ,
657
+ "/plone/folder/other-document" ,
658
+ "/plone/folder2" ,
659
+ "/plone/folder2/doc" ,
660
+ "/plone/doc-outside-folder" ,
661
+ ]
662
+ ),
663
+ sorted (result_paths (response .json ())),
664
+ )
665
+
558
666
# DateRangeIndex
559
667
560
668
def test_date_range_index_query (self ):
0 commit comments