@@ -626,111 +626,72 @@ - (void)testQueriesUsingInAndDocumentIdMustHaveProperDocumentReferencesInArray {
626626
627627- (void )testInvalidQueryFilters {
628628 FIRCollectionReference *collection = [self collectionRef ];
629-
630- // Multiple inequalities, one of which is inside a nested composite filter.
631- NSString *reason = @" Invalid Query. All where filters with an inequality (notEqual, lessThan, "
632- " lessThanOrEqual, greaterThan, or greaterThanOrEqual) must be on the same "
633- " field. But you have inequality filters on 'c' and 'r'" ;
634-
629+ NSString *reason = @" Invalid Query. You cannot use 'notIn' filters with 'in' filters." ;
635630 NSArray <FIRFilter *> *array1 = @[
636631 [FIRFilter andFilterWithFilters: @[
637632 [FIRFilter filterWhereField: @" a" isEqualTo: @" b" ], [FIRFilter filterWhereField: @" c"
638- isGreaterThan: @ " d" ]
633+ in: @[ @ " d" , @" e " ] ]
639634 ]],
640635 [FIRFilter andFilterWithFilters: @[
641636 [FIRFilter filterWhereField: @" e" isEqualTo: @" f" ], [FIRFilter filterWhereField: @" g"
642- isEqualTo: @ " h" ]
637+ notIn: @[ @ " h" , @" i " ] ]
643638 ]]
644639 ];
640+ FSTAssertThrows ([collection queryWhereFilter: [FIRFilter orFilterWithFilters: array1]], reason);
645641
646- FSTAssertThrows (
647- [[collection queryWhereFilter: [FIRFilter orFilterWithFilters: array1]] queryWhereField: @" r"
648- isGreaterThan: @" s" ],
649- reason);
650-
651- // OrderBy and inequality on different fields. Inequality inside a nested composite filter.
652- reason = @" Invalid query. You have a where filter with an inequality (notEqual, lessThan, "
653- " lessThanOrEqual, greaterThan, or greaterThanOrEqual) on field 'c' and so you must "
654- " also use 'c' as your first queryOrderedBy field, but your first queryOrderedBy is "
655- " currently on field 'r' instead." ;
656-
657- FSTAssertThrows ([[collection queryWhereFilter: [FIRFilter orFilterWithFilters: array1]]
658- queryOrderedByField: @" r" ],
659- reason);
660-
661- // Conflicting operations within a composite filter.
662- reason = @" Invalid Query. You cannot use 'notIn' filters with 'in' filters." ;
663-
642+ reason = @" Invalid Query. You cannot use 'notIn' filters with 'notEqual' filters." ;
664643 NSArray <FIRFilter *> *array2 = @[
665644 [FIRFilter andFilterWithFilters: @[
666645 [FIRFilter filterWhereField: @" a" isEqualTo: @" b" ], [FIRFilter filterWhereField: @" c"
667- in: @[ @ " d" , @" e " ] ]
646+ isNotEqualTo: @ " d" ]
668647 ]],
669648 [FIRFilter andFilterWithFilters: @[
670- [FIRFilter filterWhereField: @" e" isEqualTo: @" f" ], [FIRFilter filterWhereField: @" c "
671- notIn: @[ @" f " , @" g " ]]
649+ [FIRFilter filterWhereField: @" e" isEqualTo: @" f" ], [FIRFilter filterWhereField: @" g "
650+ notIn: @[ @" h " , @" i " ]]
672651 ]]
673652 ];
674-
675653 FSTAssertThrows ([collection queryWhereFilter: [FIRFilter orFilterWithFilters: array2]], reason);
676654
677- // Conflicting operations between a field filter and a composite filter.
655+ reason = @" Invalid Query. You cannot use more than one 'notIn' filter." ;
678656 NSArray <FIRFilter *> *array3 = @[
679657 [FIRFilter andFilterWithFilters: @[
680658 [FIRFilter filterWhereField: @" a" isEqualTo: @" b" ], [FIRFilter filterWhereField: @" c"
681- in : @[ @" d" , @" e" ]]
659+ notIn : @[ @" d" , @" e" ]]
682660 ]],
683661 [FIRFilter andFilterWithFilters: @[
684662 [FIRFilter filterWhereField: @" e" isEqualTo: @" f" ], [FIRFilter filterWhereField: @" g"
685- isEqualTo: @ " h" ]
663+ notIn: @[ @ " h" , @" i " ] ]
686664 ]]
687665 ];
666+ FSTAssertThrows ([collection queryWhereFilter: [FIRFilter orFilterWithFilters: array3]], reason);
688667
689- NSArray <NSString *> *array4 = @[ @" j" , @" k" ];
690-
691- FSTAssertThrows (
692- [[collection queryWhereFilter: [FIRFilter orFilterWithFilters: array3]] queryWhereField: @" i"
693- notIn: array4],
694- reason);
695-
696- // Conflicting operations between two composite filters.
697- NSArray <FIRFilter *> *array5 = @[
668+ reason = @" Invalid Query. You cannot use more than one 'notEqual' filter." ;
669+ NSArray <FIRFilter *> *array4 = @[
698670 [FIRFilter andFilterWithFilters: @[
699- [FIRFilter filterWhereField: @" i " isEqualTo: @" j " ], [FIRFilter filterWhereField: @" l "
700- notIn: @[ @" m " , @" n " ] ]
671+ [FIRFilter filterWhereField: @" a " isEqualTo: @" b " ], [FIRFilter filterWhereField: @" c "
672+ isNotEqualTo: @" d " ]
701673 ]],
702674 [FIRFilter andFilterWithFilters: @[
703- [FIRFilter filterWhereField: @" o " isEqualTo: @" p " ], [FIRFilter filterWhereField: @" q "
704- isEqualTo :@" r " ]
675+ [FIRFilter filterWhereField: @" e " isEqualTo: @" f " ], [FIRFilter filterWhereField: @" g "
676+ isNotEqualTo :@" h " ]
705677 ]]
706678 ];
707-
708- FSTAssertThrows ([[collection queryWhereFilter: [FIRFilter orFilterWithFilters: array3]]
709- queryWhereFilter: [FIRFilter orFilterWithFilters: array5]],
710- reason);
679+ FSTAssertThrows ([collection queryWhereFilter: [FIRFilter orFilterWithFilters: array4]], reason);
711680}
712681
713- - (void )testQueryInequalityFieldMustMatchFirstOrderByField {
682+ - (void )testQueryInequalityFieldWithMultipleOrderByFields {
714683 FIRCollectionReference *coll = [self .db collectionWithPath: @" collection" ];
715684 FIRQuery *base = [coll queryWhereField: @" x" isGreaterThanOrEqualTo: @32 ];
716685
717- FSTAssertThrows ([base queryWhereField: @" y" isLessThan: @" cat" ],
718- @" Invalid Query. All where filters with an inequality (notEqual, lessThan, "
719- " lessThanOrEqual, greaterThan, or greaterThanOrEqual) must be on the same "
720- " field. But you have inequality filters on 'x' and 'y'" );
686+ XCTAssertNoThrow ([base queryWhereField: @" y" isLessThan: @" cat" ]);
721687
722- NSString *reason =
723- @" Invalid query. You have a where filter with "
724- " an inequality (notEqual, lessThan, lessThanOrEqual, greaterThan, or greaterThanOrEqual) "
725- " on field 'x' and so you must also use 'x' as your first queryOrderedBy field, "
726- " but your first queryOrderedBy is currently on field 'y' instead." ;
727- FSTAssertThrows ([base queryOrderedByField: @" y" ], reason);
728- FSTAssertThrows ([[coll queryOrderedByField: @" y" ] queryWhereField: @" x" isGreaterThan: @32 ], reason);
729- FSTAssertThrows ([[base queryOrderedByField: @" y" ] queryOrderedByField: @" x" ], reason);
730- FSTAssertThrows ([[[coll queryOrderedByField: @" y" ] queryOrderedByField: @" x" ] queryWhereField: @" x"
731- isGreaterThan: @32 ],
732- reason);
733- FSTAssertThrows ([[coll queryOrderedByField: @" y" ] queryWhereField: @" x" isNotEqualTo: @32 ], reason);
688+ XCTAssertNoThrow ([base queryOrderedByField: @" y" ]);
689+ XCTAssertNoThrow ([[coll queryOrderedByField: @" y" ] queryWhereField: @" x" isGreaterThan: @32 ]);
690+ XCTAssertNoThrow ([[base queryOrderedByField: @" y" ] queryOrderedByField: @" x" ]);
691+ XCTAssertNoThrow ([[[coll queryOrderedByField: @" y" ] queryOrderedByField: @" x" ]
692+ queryWhereField: @" x"
693+ isGreaterThan: @32 ]);
694+ XCTAssertNoThrow ([[coll queryOrderedByField: @" y" ] queryWhereField: @" x" isNotEqualTo: @32 ]);
734695
735696 XCTAssertNoThrow ([base queryWhereField: @" x" isLessThanOrEqualTo: @" cat" ],
736697 @" Same inequality fields work" );
@@ -758,20 +719,6 @@ - (void)testQueryInequalityFieldMustMatchFirstOrderByField {
758719 @" array_contains different than orderBy works." );
759720}
760721
761- - (void )testQueriesWithMultipleNotEqualAndInequalitiesFail {
762- FIRCollectionReference *coll = [self .db collectionWithPath: @" collection" ];
763-
764- FSTAssertThrows ([[coll queryWhereField: @" x" isNotEqualTo: @1 ] queryWhereField: @" x"
765- isNotEqualTo: @2 ],
766- @" Invalid Query. You cannot use more than one 'notEqual' filter." );
767-
768- FSTAssertThrows ([[coll queryWhereField: @" x" isNotEqualTo: @1 ] queryWhereField: @" y"
769- isNotEqualTo: @2 ],
770- @" Invalid Query. All where filters with an inequality (notEqual, lessThan, "
771- " lessThanOrEqual, greaterThan, or greaterThanOrEqual) must be on "
772- " the same field. But you have inequality filters on 'x' and 'y'" );
773- }
774-
775722- (void )testQueriesWithNotEqualAndNotInFiltersFail {
776723 FIRCollectionReference *coll = [self .db collectionWithPath: @" collection" ];
777724
0 commit comments