Skip to content

Commit 568fe98

Browse files
committed
Format parse_query and tests
Simplify the Uri.encodeComponent call in _encodeStringElement to a single line and reformat test files for consistent indentation and argument/closure layout. These are whitespace/formatting changes only and do not alter runtime behavior or test logic.
1 parent da30001 commit 568fe98

2 files changed

Lines changed: 66 additions & 65 deletions

File tree

packages/dart/lib/src/network/parse_query.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,9 +325,7 @@ class QueryBuilder<T extends ParseObject> {
325325
/// parsing on the way in.
326326
String _encodeStringElement(String value) {
327327
final String jsonString = jsonEncode(value);
328-
return Uri.encodeComponent(
329-
jsonString.substring(1, jsonString.length - 1),
330-
);
328+
return Uri.encodeComponent(jsonString.substring(1, jsonString.length - 1));
331329
}
332330

333331
/// Runs [_encodeStringElement] on each String in [value]; other elements

packages/dart/test/src/network/parse_query_test.dart

Lines changed: 65 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)