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