@@ -407,6 +407,55 @@ class APICommandTests: XCTestCase {
407407 }
408408 }
409409
410+ func testQueryWhereEncoding( ) async throws {
411+ let query = Level . query ( " name " == " test@parse.com " )
412+ let parameters = try query. getQueryParameters ( )
413+
414+ let queryCommand = API . NonParseBodyCommand < Query < Level > , Level ? > (
415+ method: . GET,
416+ path: query. endpoint,
417+ params: parameters
418+ ) { _ in
419+ return nil
420+ }
421+
422+ switch await queryCommand. prepareURLRequest ( options: [ ] ) {
423+
424+ case . success( let request) :
425+ XCTAssertEqual (
426+ request. url? . absoluteString,
427+ " http://localhost:1337/parse/classes/Level?limit=100&skip=0&where=%7B%22name%22:%22test@parse.com%22%7D "
428+ )
429+ case . failure( let error) :
430+ XCTFail ( error. localizedDescription)
431+ }
432+ }
433+
434+ func testQueryWhereEncodingPlus( ) async throws {
435+ let query = Level . query ( " name " == " test+1@parse.com " )
436+ let parameters = try query. getQueryParameters ( )
437+
438+ let queryCommand = API . NonParseBodyCommand < Query < Level > , Level ? > (
439+ method: . GET,
440+ path: query. endpoint,
441+ params: parameters
442+ ) { _ in
443+ return nil
444+ }
445+
446+ switch await queryCommand. prepareURLRequest ( options: [ ] ) {
447+
448+ case . success( let request) :
449+ XCTAssertEqual (
450+ request. url? . absoluteString,
451+ // swiftlint:disable:next line_length
452+ " http://localhost:1337/parse/classes/Level?limit=100&skip=0&where=%7B%22name%22:%22test%2B1@parse.com%22%7D "
453+ )
454+ case . failure( let error) :
455+ XCTFail ( error. localizedDescription)
456+ }
457+ }
458+
410459 func testClientKeyHeader( ) async throws {
411460 guard let clientKey = ParseSwift . configuration. clientKey else {
412461 throw ParseError ( code: . otherCause, message: " Parse configuration should contain key " )
0 commit comments