@@ -157,15 +157,23 @@ class ParseQueryTests: XCTestCase { // swiftlint:disable:this type_body_length
157157 func testIncludeKeys( ) {
158158 let query = GameScore . query ( )
159159 XCTAssertNil ( query. include)
160- var query2 = GameScore . query ( ) . include ( " yolo " )
160+ var query2 = GameScore . query ( ) . include ( [ " yolo " ] )
161161 XCTAssertEqual ( query2. include? . count, 1 )
162162 XCTAssertEqual ( query2. include? . first, " yolo " )
163- query2 = query2. include ( " yolo " , " wow " )
164- XCTAssertEqual ( query2. include? . count, 2 )
165- XCTAssertEqual ( query2. include, [ " yolo " , " wow " ] )
166- query2 = query2. include ( [ " yolo " ] )
163+ query2 = query2. include ( [ " hello " , " wow " ] )
164+ XCTAssertEqual ( query2. include? . count, 3 )
165+ XCTAssertEqual ( query2. include, Set ( [ " yolo " , " hello " , " wow " ] ) )
166+ }
167+
168+ func testIncludeKeysVariadic( ) {
169+ let query = GameScore . query ( )
170+ XCTAssertNil ( query. include)
171+ var query2 = GameScore . query ( ) . include ( " yolo " )
167172 XCTAssertEqual ( query2. include? . count, 1 )
168- XCTAssertEqual ( query2. include, [ " yolo " ] )
173+ XCTAssertEqual ( query2. include? . first, " yolo " )
174+ query2 = query2. include ( " hello " , " wow " )
175+ XCTAssertEqual ( query2. include? . count, 3 )
176+ XCTAssertEqual ( query2. include, Set ( [ " yolo " , " hello " , " wow " ] ) )
169177 }
170178
171179 func testIncludeAllKeys( ) {
@@ -179,8 +187,33 @@ class ParseQueryTests: XCTestCase { // swiftlint:disable:this type_body_length
179187 func testExcludeKeys( ) throws {
180188 let query = GameScore . query ( )
181189 XCTAssertNil ( query. excludeKeys)
182- var query2 = GameScore . query ( ) . exclude ( " yolo " )
190+ var query2 = GameScore . query ( ) . exclude ( [ " yolo " ] )
183191 XCTAssertEqual ( query2. excludeKeys, [ " yolo " ] )
192+ let encoded = try ParseCoding . jsonEncoder ( ) . encode ( query2)
193+ let decodedDictionary = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded)
194+ guard let decodedKeys = decodedDictionary [ " excludeKeys " ] ,
195+ let decodedValues = decodedKeys. value as? [ String ] else {
196+ XCTFail ( " Should have casted " )
197+ return
198+ }
199+ XCTAssertEqual ( decodedValues, [ " yolo " ] )
200+
201+ query2 = query2. exclude ( [ " hello " , " wow " ] )
202+ XCTAssertEqual ( query2. excludeKeys, [ " yolo " , " hello " , " wow " ] )
203+ let encoded2 = try ParseCoding . jsonEncoder ( ) . encode ( query2)
204+ let decodedDictionary2 = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded2)
205+ guard let decodedKeys2 = decodedDictionary2 [ " excludeKeys " ] ,
206+ let decodedValues2 = decodedKeys2. value as? [ String ] else {
207+ XCTFail ( " Should have casted " )
208+ return
209+ }
210+ XCTAssertEqual ( Set ( decodedValues2) , Set ( [ " yolo " , " hello " , " wow " ] ) )
211+ }
212+
213+ func testExcludeKeysVariadic( ) throws {
214+ let query = GameScore . query ( )
215+ XCTAssertNil ( query. excludeKeys)
216+ var query2 = GameScore . query ( ) . exclude ( " yolo " )
184217 XCTAssertEqual ( query2. excludeKeys, [ " yolo " ] )
185218 let encoded = try ParseCoding . jsonEncoder ( ) . encode ( query2)
186219 let decodedDictionary = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded)
@@ -191,23 +224,51 @@ class ParseQueryTests: XCTestCase { // swiftlint:disable:this type_body_length
191224 }
192225 XCTAssertEqual ( decodedValues, [ " yolo " ] )
193226
194- query2 = GameScore . query ( ) . exclude ( [ " yolo " , " wow " ] )
195- XCTAssertEqual ( query2. excludeKeys, [ " yolo " , " wow " ] )
196- XCTAssertEqual ( query2. excludeKeys, [ " yolo " , " wow " ] )
227+ query2 = query2. exclude ( " hello " , " wow " )
228+ XCTAssertEqual ( query2. excludeKeys, [ " yolo " , " hello " , " wow " ] )
197229 let encoded2 = try ParseCoding . jsonEncoder ( ) . encode ( query2)
198230 let decodedDictionary2 = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded2)
199231 guard let decodedKeys2 = decodedDictionary2 [ " excludeKeys " ] ,
200232 let decodedValues2 = decodedKeys2. value as? [ String ] else {
201233 XCTFail ( " Should have casted " )
202234 return
203235 }
204- XCTAssertEqual ( decodedValues2, [ " yolo " , " wow " ] )
236+ XCTAssertEqual ( Set ( decodedValues2) , Set ( [ " yolo " , " hello " , " wow " ] ) )
205237 }
206238
207239 func testSelectKeys( ) throws {
208240 let query = GameScore . query ( )
209241 XCTAssertNil ( query. keys)
210242
243+ var query2 = GameScore . query ( ) . select ( [ " yolo " ] )
244+ XCTAssertEqual ( query2. keys? . count, 1 )
245+ XCTAssertEqual ( query2. keys? . first, " yolo " )
246+ let encoded = try ParseCoding . jsonEncoder ( ) . encode ( query2)
247+ let decodedDictionary = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded)
248+ guard let decodedKeys = decodedDictionary [ " keys " ] ,
249+ let decodedValues = decodedKeys. value as? [ String ] else {
250+ XCTFail ( " Should have casted " )
251+ return
252+ }
253+ XCTAssertEqual ( decodedValues, [ " yolo " ] )
254+
255+ query2 = query2. select ( [ " hello " , " wow " ] )
256+ XCTAssertEqual ( query2. keys? . count, 3 )
257+ XCTAssertEqual ( query2. keys, [ " yolo " , " hello " , " wow " ] )
258+ let encoded2 = try ParseCoding . jsonEncoder ( ) . encode ( query2)
259+ let decodedDictionary2 = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded2)
260+ guard let decodedKeys2 = decodedDictionary2 [ " keys " ] ,
261+ let decodedValues2 = decodedKeys2. value as? [ String ] else {
262+ XCTFail ( " Should have casted " )
263+ return
264+ }
265+ XCTAssertEqual ( Set ( decodedValues2) , Set ( [ " yolo " , " hello " , " wow " ] ) )
266+ }
267+
268+ func testSelectKeysVariadic( ) throws {
269+ let query = GameScore . query ( )
270+ XCTAssertNil ( query. keys)
271+
211272 var query2 = GameScore . query ( ) . select ( " yolo " )
212273 XCTAssertEqual ( query2. keys? . count, 1 )
213274 XCTAssertEqual ( query2. keys? . first, " yolo " )
@@ -220,17 +281,17 @@ class ParseQueryTests: XCTestCase { // swiftlint:disable:this type_body_length
220281 }
221282 XCTAssertEqual ( decodedValues, [ " yolo " ] )
222283
223- query2 = query2. select ( [ " yolo " , " wow " ] )
224- XCTAssertEqual ( query2. keys? . count, 2 )
225- XCTAssertEqual ( query2. keys, [ " yolo " , " wow " ] )
284+ query2 = query2. select ( " hello " , " wow " )
285+ XCTAssertEqual ( query2. keys? . count, 3 )
286+ XCTAssertEqual ( query2. keys, [ " yolo " , " hello " , " wow " ] )
226287 let encoded2 = try ParseCoding . jsonEncoder ( ) . encode ( query2)
227288 let decodedDictionary2 = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded2)
228289 guard let decodedKeys2 = decodedDictionary2 [ " keys " ] ,
229290 let decodedValues2 = decodedKeys2. value as? [ String ] else {
230291 XCTFail ( " Should have casted " )
231292 return
232293 }
233- XCTAssertEqual ( decodedValues2, [ " yolo " , " wow " ] )
294+ XCTAssertEqual ( Set ( decodedValues2) , Set ( [ " yolo " , " hello " , " wow " ] ) )
234295 }
235296
236297 func testAddingConstraints( ) {
0 commit comments