@@ -157,15 +157,23 @@ class ParseQueryTests: XCTestCase { // swiftlint:disable:this type_body_length
157
157
func testIncludeKeys( ) {
158
158
let query = GameScore . query ( )
159
159
XCTAssertNil ( query. include)
160
- var query2 = GameScore . query ( ) . include ( " yolo " )
160
+ var query2 = GameScore . query ( ) . include ( [ " yolo " ] )
161
161
XCTAssertEqual ( query2. include? . count, 1 )
162
162
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 " )
167
172
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 " ] ) )
169
177
}
170
178
171
179
func testIncludeAllKeys( ) {
@@ -179,8 +187,33 @@ class ParseQueryTests: XCTestCase { // swiftlint:disable:this type_body_length
179
187
func testExcludeKeys( ) throws {
180
188
let query = GameScore . query ( )
181
189
XCTAssertNil ( query. excludeKeys)
182
- var query2 = GameScore . query ( ) . exclude ( " yolo " )
190
+ var query2 = GameScore . query ( ) . exclude ( [ " yolo " ] )
183
191
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 " )
184
217
XCTAssertEqual ( query2. excludeKeys, [ " yolo " ] )
185
218
let encoded = try ParseCoding . jsonEncoder ( ) . encode ( query2)
186
219
let decodedDictionary = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded)
@@ -191,23 +224,51 @@ class ParseQueryTests: XCTestCase { // swiftlint:disable:this type_body_length
191
224
}
192
225
XCTAssertEqual ( decodedValues, [ " yolo " ] )
193
226
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 " ] )
197
229
let encoded2 = try ParseCoding . jsonEncoder ( ) . encode ( query2)
198
230
let decodedDictionary2 = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded2)
199
231
guard let decodedKeys2 = decodedDictionary2 [ " excludeKeys " ] ,
200
232
let decodedValues2 = decodedKeys2. value as? [ String ] else {
201
233
XCTFail ( " Should have casted " )
202
234
return
203
235
}
204
- XCTAssertEqual ( decodedValues2, [ " yolo " , " wow " ] )
236
+ XCTAssertEqual ( Set ( decodedValues2) , Set ( [ " yolo " , " hello " , " wow " ] ) )
205
237
}
206
238
207
239
func testSelectKeys( ) throws {
208
240
let query = GameScore . query ( )
209
241
XCTAssertNil ( query. keys)
210
242
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
+
211
272
var query2 = GameScore . query ( ) . select ( " yolo " )
212
273
XCTAssertEqual ( query2. keys? . count, 1 )
213
274
XCTAssertEqual ( query2. keys? . first, " yolo " )
@@ -220,17 +281,17 @@ class ParseQueryTests: XCTestCase { // swiftlint:disable:this type_body_length
220
281
}
221
282
XCTAssertEqual ( decodedValues, [ " yolo " ] )
222
283
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 " ] )
226
287
let encoded2 = try ParseCoding . jsonEncoder ( ) . encode ( query2)
227
288
let decodedDictionary2 = try JSONDecoder ( ) . decode ( [ String : AnyCodable ] . self, from: encoded2)
228
289
guard let decodedKeys2 = decodedDictionary2 [ " keys " ] ,
229
290
let decodedValues2 = decodedKeys2. value as? [ String ] else {
230
291
XCTFail ( " Should have casted " )
231
292
return
232
293
}
233
- XCTAssertEqual ( decodedValues2, [ " yolo " , " wow " ] )
294
+ XCTAssertEqual ( Set ( decodedValues2) , Set ( [ " yolo " , " hello " , " wow " ] ) )
234
295
}
235
296
236
297
func testAddingConstraints( ) {
0 commit comments