@@ -697,57 +697,59 @@ void main() {
697697 });
698698
699699 test (
700- 'list-based where methods encode special characters in String elements' ,
701- () {
702- final queryBuilder = QueryBuilder .name ('Diet_Plans' );
703-
704- queryBuilder.whereContainedIn ('topics' , < String > [
705- "RFI's & Change Orders" ,
706- 'Schedule (Impacts, Delays, Inspections)' ,
707- ]);
708- queryBuilder.whereNotContainedIn ('excluded' , < String > ['a=b' , 'c+d' ]);
709- queryBuilder.whereArrayContainsAll ('tags' , < String > ['x#y' , 'z&w' ]);
700+ 'list-based where methods encode special characters in String elements' ,
701+ () {
702+ final queryBuilder = QueryBuilder .name ('Diet_Plans' );
710703
711- final queryString = queryBuilder.buildQuery ();
712- const encodedAmp = '%26' ; // &
713- const encodedEq = '%3D' ; // =
714- const encodedPlus = '%2B' ; // +
715- const encodedHash = '%23' ; // #
716-
717- expect (queryString, contains (encodedAmp));
718- expect (queryString, contains (encodedEq));
719- expect (queryString, contains (encodedPlus));
720- expect (queryString, contains (encodedHash));
721-
722- // Raw delimiters would break querystring parsing on the server, so
723- // verify they are not present in the encoded output.
724- expect (queryString.contains ('& Change Orders' ), isFalse);
725- expect (queryString.contains ('a=b' ), isFalse);
726- expect (queryString.contains ('c+d' ), isFalse);
727- expect (queryString.contains ('x#y' ), isFalse);
728- });
704+ queryBuilder.whereContainedIn ('topics' , < String > [
705+ "RFI's & Change Orders" ,
706+ 'Schedule (Impacts, Delays, Inspections)' ,
707+ ]);
708+ queryBuilder.whereNotContainedIn ('excluded' , < String > ['a=b' , 'c+d' ]);
709+ queryBuilder.whereArrayContainsAll ('tags' , < String > ['x#y' , 'z&w' ]);
710+
711+ final queryString = queryBuilder.buildQuery ();
712+ const encodedAmp = '%26' ; // &
713+ const encodedEq = '%3D' ; // =
714+ const encodedPlus = '%2B' ; // +
715+ const encodedHash = '%23' ; // #
716+
717+ expect (queryString, contains (encodedAmp));
718+ expect (queryString, contains (encodedEq));
719+ expect (queryString, contains (encodedPlus));
720+ expect (queryString, contains (encodedHash));
721+
722+ // Raw delimiters would break querystring parsing on the server, so
723+ // verify they are not present in the encoded output.
724+ expect (queryString.contains ('& Change Orders' ), isFalse);
725+ expect (queryString.contains ('a=b' ), isFalse);
726+ expect (queryString.contains ('c+d' ), isFalse);
727+ expect (queryString.contains ('x#y' ), isFalse);
728+ },
729+ );
729730
730731 test (
731- 'list-based where methods JSON-escape quotes and backslashes in String elements' ,
732- () {
733- final queryBuilder = QueryBuilder .name ('Diet_Plans' );
732+ 'list-based where methods JSON-escape quotes and backslashes in String elements' ,
733+ () {
734+ final queryBuilder = QueryBuilder .name ('Diet_Plans' );
734735
735- queryBuilder.whereContainedIn ('topics' , < String > [
736- 'He said "hi"' ,
737- r'C:\path' ,
738- ]);
736+ queryBuilder.whereContainedIn ('topics' , < String > [
737+ 'He said "hi"' ,
738+ r'C:\path' ,
739+ ]);
739740
740- final queryString = queryBuilder.buildQuery ();
741+ final queryString = queryBuilder.buildQuery ();
741742
742- // Encoded form of `\"` and `\\`: the backslash must survive URL decoding
743- // so the server sees valid JSON (e.g. "He said \"hi\"").
744- expect (queryString, contains ('%5C%22' ));
745- expect (queryString, contains ('%5C%5C' ));
743+ // Encoded form of `\"` and `\\`: the backslash must survive URL decoding
744+ // so the server sees valid JSON (e.g. "He said \"hi\"").
745+ expect (queryString, contains ('%5C%22' ));
746+ expect (queryString, contains ('%5C%5C' ));
746747
747- // Unescaped `"` and `\` inside the string values would corrupt the JSON.
748- expect (queryString.contains ('"He said "hi""' ), isFalse);
749- expect (queryString.contains (r'C:\path' ), isFalse);
750- });
748+ // Unescaped `"` and `\` inside the string values would corrupt the JSON.
749+ expect (queryString.contains ('"He said "hi""' ), isFalse);
750+ expect (queryString.contains (r'C:\path' ), isFalse);
751+ },
752+ );
751753
752754 test ('list-based where methods leave non-String elements untouched' , () {
753755 final queryBuilder = QueryBuilder .name ('Diet_Plans' );
@@ -759,27 +761,28 @@ void main() {
759761 });
760762
761763 test (
762- 'scalar where methods JSON-escape quotes and backslashes in String values' ,
763- () {
764- final queryBuilder = QueryBuilder .name ('Diet_Plans' );
764+ 'scalar where methods JSON-escape quotes and backslashes in String values' ,
765+ () {
766+ final queryBuilder = QueryBuilder .name ('Diet_Plans' );
765767
766- queryBuilder.whereEqualTo ('title' , 'He said "hi"' );
767- queryBuilder.whereNotEqualTo ('note' , r'C:\path' );
768- queryBuilder.whereStartsWith ('name' , 'quote"prefix' );
769- queryBuilder.whereContains ('body' , r'back\slash' );
768+ queryBuilder.whereEqualTo ('title' , 'He said "hi"' );
769+ queryBuilder.whereNotEqualTo ('note' , r'C:\path' );
770+ queryBuilder.whereStartsWith ('name' , 'quote"prefix' );
771+ queryBuilder.whereContains ('body' , r'back\slash' );
770772
771- final queryString = queryBuilder.buildQuery ();
773+ final queryString = queryBuilder.buildQuery ();
772774
773- // `"` and `\` must come through percent-encoded as `\"` / `\\` so the
774- // JSON stays valid after the server URL-decodes the query.
775- expect (queryString, contains ('%5C%22' ));
776- expect (queryString, contains ('%5C%5C' ));
775+ // `"` and `\` must come through percent-encoded as `\"` / `\\` so the
776+ // JSON stays valid after the server URL-decodes the query.
777+ expect (queryString, contains ('%5C%22' ));
778+ expect (queryString, contains ('%5C%5C' ));
777779
778- // Raw `"` and `\` inside the values would break JSON parsing.
779- expect (queryString.contains ('"He said "hi""' ), isFalse);
780- expect (queryString.contains (r'C:\path' ), isFalse);
781- expect (queryString.contains ('quote"prefix' ), isFalse);
782- expect (queryString.contains (r'back\slash' ), isFalse);
783- });
780+ // Raw `"` and `\` inside the values would break JSON parsing.
781+ expect (queryString.contains ('"He said "hi""' ), isFalse);
782+ expect (queryString.contains (r'C:\path' ), isFalse);
783+ expect (queryString.contains ('quote"prefix' ), isFalse);
784+ expect (queryString.contains (r'back\slash' ), isFalse);
785+ },
786+ );
784787 });
785788}
0 commit comments