func doTestReturnCacheDataAndFetchCacheMiss()

in ApolloTests/FetchQueryTestsComplex.swift [121:149]


    func doTestReturnCacheDataAndFetchCacheMiss(with initialRecords: RecordSet) throws {
        let query = TwoHeroesQuery()

        withCache(initialRecords: initialRecords) { cache in
            let store = ApolloStore(cache: cache)

            let client = ApolloClient(networkTransport: mockNetworkTransport, store: store)

            let serverResultExpectation = self.expectation(description: "Query result from server")

            client.fetch(query: query, cachePolicy: .returnCacheDataAndFetch) { (result, error) in
                let isLukeResultFromCache = result?.data?.luke?.name.hasSuffix("Cache") ?? false
                let isR2ResultFromCache = result?.data?.r2?.name.hasSuffix("Cache") ?? false

                if isLukeResultFromCache || isR2ResultFromCache {
                    XCTFail("Unexpectedly got cached result for a cache miss test")
                    return
                }

                if result?.data?.luke?.name == "Luke Skywalker Server" && result?.data?.r2?.name == "R2-D2 Server" {
                    serverResultExpectation.fulfill()
                } else {
                    XCTFail("Unexpected or nil result: \(String(describing: result))")
                }
            }

            self.waitForExpectations(timeout: 5, handler: nil)
        }
    }