@@ -372,4 +372,83 @@ class LCUserTestCase: BaseTestCase {
372372 }
373373 }
374374 }
375+
376+ func testFetch( ) {
377+ let objectWithInvalidID = LCObject ( objectId: uuid)
378+ XCTAssertFalse ( objectWithInvalidID. fetch ( ) )
379+ do {
380+ try objectWithInvalidID. fetchAndThrows ( )
381+ XCTFail ( )
382+ } catch {
383+ XCTAssertEqual ( ( error as NSError ) . code, kLCErrorObjectNotFound)
384+ }
385+ do {
386+ try objectWithInvalidID. fetch ( with: nil )
387+ XCTFail ( )
388+ } catch {
389+ XCTAssertEqual ( ( error as NSError ) . code, kLCErrorObjectNotFound)
390+ }
391+ do {
392+ try LCObject . fetchAll ( [ objectWithInvalidID] , error: ( ) )
393+ XCTFail ( )
394+ } catch {
395+ XCTAssertNotNil ( error)
396+ }
397+
398+ let validObject = LCObject ( )
399+ let childObject = LCObject ( )
400+ let key = " childObject "
401+ validObject [ key] = childObject
402+ XCTAssertTrue ( validObject. save ( ) )
403+
404+ guard let objectId = validObject. objectId else {
405+ XCTFail ( )
406+ return
407+ }
408+
409+ expecting { exp in
410+ let object = LCObject ( objectId: objectId)
411+ object. fetchInBackground { obj, error in
412+ XCTAssertTrue ( Thread . isMainThread)
413+ XCTAssertTrue ( obj === object)
414+ XCTAssertNil ( error)
415+ let child = object [ key] as? LCObject
416+ XCTAssertEqual ( child? . objectId, childObject. objectId)
417+ XCTAssertNil ( child? . createdAt)
418+ XCTAssertNil ( child? . updatedAt)
419+ exp. fulfill ( )
420+ }
421+ }
422+
423+ expecting { exp in
424+ let object = LCObject ( objectId: objectId)
425+ let option = LCObjectFetchOption ( )
426+ option. selectKeys = [ key]
427+ option. includeKeys = [ key]
428+ object. fetchInBackground ( with: option) { obj, error in
429+ XCTAssertTrue ( Thread . isMainThread)
430+ XCTAssertTrue ( obj === object)
431+ XCTAssertNil ( error)
432+ let child = object [ key] as? LCObject
433+ XCTAssertEqual ( child? . objectId, childObject. objectId)
434+ XCTAssertNotNil ( child? . createdAt)
435+ XCTAssertNotNil ( child? . updatedAt)
436+ exp. fulfill ( )
437+ }
438+ }
439+
440+ expecting { exp in
441+ let object = LCObject ( objectId: objectId)
442+ LCObject . fetchAll ( inBackground: [ object] ) { objects, error in
443+ XCTAssertTrue ( Thread . isMainThread)
444+ XCTAssertEqual ( objects? . count, 1 )
445+ let child = ( objects? . first as? LCObject ) ? [ key] as? LCObject
446+ XCTAssertEqual ( child? . objectId, childObject. objectId)
447+ XCTAssertNil ( child? . createdAt)
448+ XCTAssertNil ( child? . updatedAt)
449+ XCTAssertNil ( error)
450+ exp. fulfill ( )
451+ }
452+ }
453+ }
375454}
0 commit comments