From 649a47b8e849c132e8512923f56910bc5b01fd79 Mon Sep 17 00:00:00 2001 From: Dan Loman Date: Sun, 18 Oct 2020 20:09:16 -0500 Subject: [PATCH 1/5] Remove default values from initializers --- Sources/Apollo/ApolloClient.swift | 2 +- Sources/Apollo/InterceptorProvider.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/Apollo/ApolloClient.swift b/Sources/Apollo/ApolloClient.swift index 1ffff9f3e8..6a6353aced 100644 --- a/Sources/Apollo/ApolloClient.swift +++ b/Sources/Apollo/ApolloClient.swift @@ -49,7 +49,7 @@ public class ApolloClient { /// - Parameters: /// - networkTransport: A network transport used to send operations to a server. /// - store: A store used as a local cache. Should default to an empty store backed by an in-memory cache. - public init(networkTransport: NetworkTransport, store: ApolloStore = ApolloStore(cache: InMemoryNormalizedCache())) { + public init(networkTransport: NetworkTransport, store: ApolloStore) { self.networkTransport = networkTransport self.store = store } diff --git a/Sources/Apollo/InterceptorProvider.swift b/Sources/Apollo/InterceptorProvider.swift index 39fd3dda80..4ca739c01a 100644 --- a/Sources/Apollo/InterceptorProvider.swift +++ b/Sources/Apollo/InterceptorProvider.swift @@ -42,7 +42,7 @@ open class LegacyInterceptorProvider: InterceptorProvider { /// - store: The `ApolloStore` to use when reading from or writing to the cache. Defaults to the default initializer for ApolloStore. public init(client: URLSessionClient = URLSessionClient(), shouldInvalidateClientOnDeinit: Bool = true, - store: ApolloStore = ApolloStore()) { + store: ApolloStore) { self.client = client self.shouldInvalidateClientOnDeinit = shouldInvalidateClientOnDeinit self.store = store From c3920cb7a88dad12299b3811a615b7960f31a879 Mon Sep 17 00:00:00 2001 From: Dan Loman Date: Sun, 18 Oct 2020 21:39:48 -0500 Subject: [PATCH 2/5] Fix test compilation --- Tests/ApolloTests/RequestChainTests.swift | 5 +++-- Tests/ApolloTests/UploadTests.swift | 5 +++-- Tests/ApolloWebsocketTests/StarWarsSubscriptionTests.swift | 5 +++-- docs/source/tutorial/tutorial-mutations.md | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Tests/ApolloTests/RequestChainTests.swift b/Tests/ApolloTests/RequestChainTests.swift index ed937ef38c..61ec36c7fa 100644 --- a/Tests/ApolloTests/RequestChainTests.swift +++ b/Tests/ApolloTests/RequestChainTests.swift @@ -15,11 +15,12 @@ class RequestChainTests: XCTestCase { lazy var legacyClient: ApolloClient = { let url = TestURL.starWarsServer.url - let provider = LegacyInterceptorProvider() + let store = ApolloStore() + let provider = LegacyInterceptorProvider(store: store) let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: url) - return ApolloClient(networkTransport: transport) + return ApolloClient(networkTransport: transport, store: store) }() func testLoading() { diff --git a/Tests/ApolloTests/UploadTests.swift b/Tests/ApolloTests/UploadTests.swift index a81eec83b4..4c5162a99a 100644 --- a/Tests/ApolloTests/UploadTests.swift +++ b/Tests/ApolloTests/UploadTests.swift @@ -9,11 +9,12 @@ class UploadTests: XCTestCase { let uploadClientURL = TestURL.uploadServer.url lazy var client: ApolloClient = { - let provider = LegacyInterceptorProvider() + let store = ApolloStore() + let provider = LegacyInterceptorProvider(store: store) let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.uploadClientURL) - return ApolloClient(networkTransport: transport) + return ApolloClient(networkTransport: transport, store: store) }() override static func tearDown() { diff --git a/Tests/ApolloWebsocketTests/StarWarsSubscriptionTests.swift b/Tests/ApolloWebsocketTests/StarWarsSubscriptionTests.swift index 8c0451c44c..5c9b24d60c 100644 --- a/Tests/ApolloWebsocketTests/StarWarsSubscriptionTests.swift +++ b/Tests/ApolloWebsocketTests/StarWarsSubscriptionTests.swift @@ -416,10 +416,11 @@ class StarWarsSubscriptionTests: XCTestCase { let reviewMutation = CreateAwesomeReviewMutation() // Send the mutations via a separate transport so they can still be sent when the websocket is disconnected - let interceptorProvider = LegacyInterceptorProvider() + let store = ApolloStore() + let interceptorProvider = LegacyInterceptorProvider(store: store) let alternateTransport = RequestChainNetworkTransport(interceptorProvider: interceptorProvider, endpointURL: TestURL.starWarsServer.url) - let alternateClient = ApolloClient(networkTransport: alternateTransport) + let alternateClient = ApolloClient(networkTransport: alternateTransport, store: store) func sendReview() { let reviewSentExpectation = self.expectation(description: "review sent") diff --git a/docs/source/tutorial/tutorial-mutations.md b/docs/source/tutorial/tutorial-mutations.md index d536579d1d..0d5aa8e1f3 100644 --- a/docs/source/tutorial/tutorial-mutations.md +++ b/docs/source/tutorial/tutorial-mutations.md @@ -86,7 +86,7 @@ class Network { let url = URL(string: "https://apollo-fullstack-tutorial.herokuapp.com/")! let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: url) - return ApolloClient(networkTransport: transport) + return ApolloClient(networkTransport: transport, store: store) }() } ``` From 5e34a41ff32edddbb33c69f592f06930db3da089 Mon Sep 17 00:00:00 2001 From: Dan Loman Date: Sun, 18 Oct 2020 21:54:54 -0500 Subject: [PATCH 3/5] Fix additional test compilation issues --- .../AutomaticPersistedQueriesTests.swift | 33 ++++++++++++------- Tests/ApolloTests/InterceptorTests.swift | 25 ++++++++------ Tests/ApolloTests/RequestChainTests.swift | 20 ++++++----- 3 files changed, 49 insertions(+), 29 deletions(-) diff --git a/Tests/ApolloTests/AutomaticPersistedQueriesTests.swift b/Tests/ApolloTests/AutomaticPersistedQueriesTests.swift index bf2a3a4239..0a13ff3d8a 100644 --- a/Tests/ApolloTests/AutomaticPersistedQueriesTests.swift +++ b/Tests/ApolloTests/AutomaticPersistedQueriesTests.swift @@ -231,7 +231,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testRequestBody() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint) @@ -256,7 +257,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testRequestBodyWithVariable() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint) @@ -281,7 +283,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testRequestBodyForAPQsWithVariable() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint, autoPersistQueries: true) @@ -307,7 +310,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testMutationRequestBodyForAPQs() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint, autoPersistQueries: true) @@ -333,7 +337,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testQueryStringForAPQsUseGetMethod() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint, autoPersistQueries: true, @@ -358,7 +363,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testQueryStringForAPQsUseGetMethodWithVariable() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint, autoPersistQueries: true, @@ -385,7 +391,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testUseGETForQueriesRequest() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint, additionalHeaders: ["Authentication": "Bearer 1234"], @@ -413,7 +420,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testNotUseGETForQueriesRequest() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint) @@ -438,7 +446,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testNotUseGETForQueriesAPQsRequest() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint, autoPersistQueries: true) @@ -464,7 +473,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testUseGETForQueriesAPQsRequest() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint, autoPersistQueries: true, @@ -491,7 +501,8 @@ class AutomaticPersistedQueriesTests: XCTestCase { func testNotUseGETForQueriesAPQsGETRequest() throws { let mockClient = MockURLSessionClient() - let provider = LegacyInterceptorProvider(client: mockClient) + let store = ApolloStore() + let provider = LegacyInterceptorProvider(client: mockClient, store: store) let network = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: self.endpoint, autoPersistQueries: true, diff --git a/Tests/ApolloTests/InterceptorTests.swift b/Tests/ApolloTests/InterceptorTests.swift index 3f31f2a645..e1a2c5a6fd 100644 --- a/Tests/ApolloTests/InterceptorTests.swift +++ b/Tests/ApolloTests/InterceptorTests.swift @@ -27,8 +27,9 @@ class InterceptorTests: XCTestCase { ] } } - - let testProvider = TestProvider() + + let store = ApolloStore() + let testProvider = TestProvider(store: store) let network = RequestChainNetworkTransport(interceptorProvider: testProvider, endpointURL: TestURL.mockServer.url) @@ -92,8 +93,9 @@ class InterceptorTests: XCTestCase { ] } } - - let testProvider = TestProvider() + + let store = ApolloStore() + let testProvider = TestProvider(store: store) let network = RequestChainNetworkTransport(interceptorProvider: testProvider, endpointURL: TestURL.mockServer.url) @@ -138,8 +140,9 @@ class InterceptorTests: XCTestCase { ] } } - - let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(), + + let store = ApolloStore() + let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(store: store), endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "Reqeust sent") @@ -187,8 +190,9 @@ class InterceptorTests: XCTestCase { ] } } - - let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(), + + let store = ApolloStore() + let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(store: store), endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "Reqeust sent") @@ -243,8 +247,9 @@ class InterceptorTests: XCTestCase { ] } } - - let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(), + + let store = ApolloStore() + let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(store: store), endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "Reqeust sent") diff --git a/Tests/ApolloTests/RequestChainTests.swift b/Tests/ApolloTests/RequestChainTests.swift index 61ec36c7fa..304328ebec 100644 --- a/Tests/ApolloTests/RequestChainTests.swift +++ b/Tests/ApolloTests/RequestChainTests.swift @@ -78,8 +78,9 @@ class RequestChainTests: XCTestCase { [] } } - - let transport = RequestChainNetworkTransport(interceptorProvider: TestProvider(), + + let store = ApolloStore() + let transport = RequestChainNetworkTransport(interceptorProvider: TestProvider(store: store), endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "kickoff failed") _ = transport.send(operation: HeroNameQuery()) { result in @@ -117,8 +118,9 @@ class RequestChainTests: XCTestCase { ] } } - - let provider = TestProvider() + + let store = ApolloStore() + let provider = TestProvider(store: store) let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "Send succeeded") @@ -163,8 +165,9 @@ class RequestChainTests: XCTestCase { return self.errorInterceptor } } - - let provider = TestProvider() + + let store = ApolloStore() + let provider = TestProvider(store: store) let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: TestURL.mockServer.url, autoPersistQueries: true) @@ -234,8 +237,9 @@ class RequestChainTests: XCTestCase { return self.errorInterceptor } } - - let provider = TestProvider() + + let store = ApolloStore() + let provider = TestProvider(store: store) let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: TestURL.mockServer.url, autoPersistQueries: true) From c75258de593fde87053478777bd042acfe31aa29 Mon Sep 17 00:00:00 2001 From: Dan Loman Date: Sun, 18 Oct 2020 22:23:09 -0500 Subject: [PATCH 4/5] Try again to fix test compilation (cant run locally) --- Tests/ApolloTests/InterceptorTests.swift | 15 +++++---------- Tests/ApolloTests/RequestChainTests.swift | 12 ++++-------- .../ApolloWebsocketTests/MockWebSocketTests.swift | 2 +- .../StarWarsSubscriptionTests.swift | 2 +- 4 files changed, 11 insertions(+), 20 deletions(-) diff --git a/Tests/ApolloTests/InterceptorTests.swift b/Tests/ApolloTests/InterceptorTests.swift index e1a2c5a6fd..0d65338fde 100644 --- a/Tests/ApolloTests/InterceptorTests.swift +++ b/Tests/ApolloTests/InterceptorTests.swift @@ -28,8 +28,7 @@ class InterceptorTests: XCTestCase { } } - let store = ApolloStore() - let testProvider = TestProvider(store: store) + let testProvider = TestProvider() let network = RequestChainNetworkTransport(interceptorProvider: testProvider, endpointURL: TestURL.mockServer.url) @@ -94,8 +93,7 @@ class InterceptorTests: XCTestCase { } } - let store = ApolloStore() - let testProvider = TestProvider(store: store) + let testProvider = TestProvider() let network = RequestChainNetworkTransport(interceptorProvider: testProvider, endpointURL: TestURL.mockServer.url) @@ -141,8 +139,7 @@ class InterceptorTests: XCTestCase { } } - let store = ApolloStore() - let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(store: store), + let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(), endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "Reqeust sent") @@ -191,8 +188,7 @@ class InterceptorTests: XCTestCase { } } - let store = ApolloStore() - let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(store: store), + let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(), endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "Reqeust sent") @@ -248,8 +244,7 @@ class InterceptorTests: XCTestCase { } } - let store = ApolloStore() - let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(store: store), + let network = RequestChainNetworkTransport(interceptorProvider: TestProvider(), endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "Reqeust sent") diff --git a/Tests/ApolloTests/RequestChainTests.swift b/Tests/ApolloTests/RequestChainTests.swift index 304328ebec..af8d4fdc7a 100644 --- a/Tests/ApolloTests/RequestChainTests.swift +++ b/Tests/ApolloTests/RequestChainTests.swift @@ -79,8 +79,7 @@ class RequestChainTests: XCTestCase { } } - let store = ApolloStore() - let transport = RequestChainNetworkTransport(interceptorProvider: TestProvider(store: store), + let transport = RequestChainNetworkTransport(interceptorProvider: TestProvider(), endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "kickoff failed") _ = transport.send(operation: HeroNameQuery()) { result in @@ -119,8 +118,7 @@ class RequestChainTests: XCTestCase { } } - let store = ApolloStore() - let provider = TestProvider(store: store) + let provider = TestProvider() let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: TestURL.mockServer.url) let expectation = self.expectation(description: "Send succeeded") @@ -166,8 +164,7 @@ class RequestChainTests: XCTestCase { } } - let store = ApolloStore() - let provider = TestProvider(store: store) + let provider = TestProvider() let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: TestURL.mockServer.url, autoPersistQueries: true) @@ -238,8 +235,7 @@ class RequestChainTests: XCTestCase { } } - let store = ApolloStore() - let provider = TestProvider(store: store) + let provider = TestProvider() let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: TestURL.mockServer.url, autoPersistQueries: true) diff --git a/Tests/ApolloWebsocketTests/MockWebSocketTests.swift b/Tests/ApolloWebsocketTests/MockWebSocketTests.swift index 041164c451..c9f3c9e9af 100644 --- a/Tests/ApolloWebsocketTests/MockWebSocketTests.swift +++ b/Tests/ApolloWebsocketTests/MockWebSocketTests.swift @@ -22,7 +22,7 @@ class MockWebSocketTests: XCTestCase { WebSocketTransport.provider = MockWebSocket.self networkTransport = WebSocketTransport(request: URLRequest(url: TestURL.mockServer.url)) - client = ApolloClient(networkTransport: networkTransport!) + client = ApolloClient(networkTransport: networkTransport!, store: ApolloStore()) } override func tearDown() { diff --git a/Tests/ApolloWebsocketTests/StarWarsSubscriptionTests.swift b/Tests/ApolloWebsocketTests/StarWarsSubscriptionTests.swift index 5c9b24d60c..9f0f724adb 100644 --- a/Tests/ApolloWebsocketTests/StarWarsSubscriptionTests.swift +++ b/Tests/ApolloWebsocketTests/StarWarsSubscriptionTests.swift @@ -23,7 +23,7 @@ class StarWarsSubscriptionTests: XCTestCase { WebSocketTransport.provider = ApolloWebSocket.self webSocketTransport = WebSocketTransport(request: URLRequest(url: TestURL.starWarsWebSocket.url)) webSocketTransport.delegate = self - client = ApolloClient(networkTransport: webSocketTransport) + client = ApolloClient(networkTransport: webSocketTransport, store: ApolloStore()) self.wait(for: [self.connectionStartedExpectation!], timeout: 5) } From 674951bb23561084068c25ab1608e8d7bcc7be09 Mon Sep 17 00:00:00 2001 From: Dan Loman Date: Sun, 18 Oct 2020 22:29:09 -0500 Subject: [PATCH 5/5] Fix one TestProvider that is subclass --- Tests/ApolloTests/RequestChainTests.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/ApolloTests/RequestChainTests.swift b/Tests/ApolloTests/RequestChainTests.swift index af8d4fdc7a..ddb007461c 100644 --- a/Tests/ApolloTests/RequestChainTests.swift +++ b/Tests/ApolloTests/RequestChainTests.swift @@ -235,7 +235,7 @@ class RequestChainTests: XCTestCase { } } - let provider = TestProvider() + let provider = TestProvider(store: ApolloStore()) let transport = RequestChainNetworkTransport(interceptorProvider: provider, endpointURL: TestURL.mockServer.url, autoPersistQueries: true)