func testRefetchWatchedQuery()

in ApolloTests/WatchQueryTests.swift [7:61]


  func testRefetchWatchedQuery() throws {
    let query = HeroNameQuery()

    let initialRecords: RecordSet = [
      "QUERY_ROOT": ["hero": Reference(key: "hero")],
      "hero": [
        "name": "R2-D2",
        "__typename": "Droid",
      ]
    ]

    withCache(initialRecords: initialRecords) { (cache) in
      let networkTransport = MockNetworkTransport(body: [
        "data": [
          "hero": [
            "name": "Artoo",
            "__typename": "Droid"
          ]
        ]
        ])
      let store = ApolloStore(cache: cache)
      let client = ApolloClient(networkTransport: networkTransport, store: store)

      var verifyResult: OperationResultHandler<HeroNameQuery>

      verifyResult = { (result, error) in
        XCTAssertNil(error)
        XCTAssertNil(result?.errors)

        XCTAssertEqual(result?.data?.hero?.name, "R2-D2")
      }

      var expectation = self.expectation(description: "Fetching query")

      let watcher = client.watch(query: query) { (result, error) in
        verifyResult(result, error)
        expectation.fulfill()
      }

      waitForExpectations(timeout: 5, handler: nil)

      verifyResult = { (result, error) in
        XCTAssertNil(error)
        XCTAssertNil(result?.errors)

        XCTAssertEqual(result?.data?.hero?.name, "Artoo")
      }

      expectation = self.expectation(description: "Refetching query")

      watcher.refetch()
      
      waitForExpectations(timeout: 5, handler: nil)
    }
  }