Skip to content

Commit 85089b2

Browse files
authored
test(api): API unit test to use only the plugin and not Amplify (#1164)
1 parent 24dbf33 commit 85089b2

File tree

6 files changed

+27
-32
lines changed

6 files changed

+27
-32
lines changed

AmplifyPlugins/API/AWSAPICategoryPluginTests/Operation/AWSRESTOperationTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class AWSRESTOperationTests: OperationTestBase {
3838
// Use this as a semaphore to ensure the task is cleaned up before proceeding to the next test
3939
let listenerWasInvoked = expectation(description: "Listener was invoked")
4040
let request = RESTRequest(apiName: "Valid", path: "/path")
41-
let operation = Amplify.API.get(request: request) { _ in listenerWasInvoked.fulfill() }
41+
let operation = apiPlugin.get(request: request) { _ in listenerWasInvoked.fulfill() }
4242

4343
XCTAssertNotNil(operation)
4444

@@ -61,7 +61,7 @@ class AWSRESTOperationTests: OperationTestBase {
6161
let receivedFailure = expectation(description: "Received failed")
6262

6363
let request = RESTRequest(apiName: "INVALID_API_NAME", path: "/path")
64-
_ = Amplify.API.get(request: request) { event in
64+
_ = apiPlugin.get(request: request) { event in
6565
switch event {
6666
case .success:
6767
receivedSuccess.fulfill()
@@ -82,7 +82,7 @@ class AWSRESTOperationTests: OperationTestBase {
8282

8383
let callbackInvoked = expectation(description: "Callback was invoked")
8484
let request = RESTRequest(apiName: "Valid", path: "/path")
85-
_ = Amplify.API.get(request: request) { event in
85+
_ = apiPlugin.get(request: request) { event in
8686
switch event {
8787
case .success(let data):
8888
XCTAssertEqual(data, sentData)

AmplifyPlugins/API/AWSAPICategoryPluginTests/Operation/GraphQLMutateCombineTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class GraphQLMutateCombineTests: OperationTestBase {
2929
let receivedFailure = expectation(description: "Received failed")
3030
receivedFailure.isInverted = true
3131

32-
let sink = Amplify.API.mutate(request: request)
32+
let sink = apiPlugin.mutate(request: request)
3333
.resultPublisher
3434
.sink(receiveCompletion: { completion in
3535
switch completion {
@@ -65,7 +65,7 @@ class GraphQLMutateCombineTests: OperationTestBase {
6565
let receivedFailure = expectation(description: "Received failed")
6666
receivedFailure.isInverted = true
6767

68-
let sink = Amplify.API.mutate(request: request)
68+
let sink = apiPlugin.mutate(request: request)
6969
.resultPublisher
7070
.sink(receiveCompletion: { completion in
7171
switch completion {
@@ -101,7 +101,7 @@ class GraphQLMutateCombineTests: OperationTestBase {
101101
receivedFinish.isInverted = true
102102
let receivedFailure = expectation(description: "Received failed")
103103

104-
let sink = Amplify.API.mutate(request: request)
104+
let sink = apiPlugin.mutate(request: request)
105105
.resultPublisher
106106
.sink(receiveCompletion: { completion in
107107
switch completion {
@@ -133,7 +133,7 @@ class GraphQLMutateCombineTests: OperationTestBase {
133133
let receivedFailure = expectation(description: "Received failed")
134134
receivedFailure.isInverted = true
135135

136-
let operation = Amplify.API.mutate(request: request)
136+
let operation = apiPlugin.mutate(request: request)
137137
let sink = operation
138138
.resultPublisher
139139
.sink(receiveCompletion: { completion in

AmplifyPlugins/API/AWSAPICategoryPluginTests/Operation/GraphQLQueryCombineTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class GraphQLQueryCombineTests: OperationTestBase {
2929
let receivedFailure = expectation(description: "Received failed")
3030
receivedFailure.isInverted = true
3131

32-
let sink = Amplify.API.query(request: request)
32+
let sink = apiPlugin.query(request: request)
3333
.resultPublisher
3434
.sink(receiveCompletion: { completion in
3535
switch completion {
@@ -65,7 +65,7 @@ class GraphQLQueryCombineTests: OperationTestBase {
6565
let receivedFailure = expectation(description: "Received failed")
6666
receivedFailure.isInverted = true
6767

68-
let sink = Amplify.API.query(request: request)
68+
let sink = apiPlugin.query(request: request)
6969
.resultPublisher
7070
.sink(receiveCompletion: { completion in
7171
switch completion {
@@ -101,7 +101,7 @@ class GraphQLQueryCombineTests: OperationTestBase {
101101
receivedFinish.isInverted = true
102102
let receivedFailure = expectation(description: "Received failed")
103103

104-
let sink = Amplify.API.query(request: request)
104+
let sink = apiPlugin.query(request: request)
105105
.resultPublisher
106106
.sink(receiveCompletion: { completion in
107107
switch completion {
@@ -133,7 +133,7 @@ class GraphQLQueryCombineTests: OperationTestBase {
133133
let receivedFailure = expectation(description: "Received failed")
134134
receivedFailure.isInverted = true
135135

136-
let operation = Amplify.API.query(request: request)
136+
let operation = apiPlugin.query(request: request)
137137
let sink = operation
138138
.resultPublisher
139139
.sink(receiveCompletion: { completion in

AmplifyPlugins/API/AWSAPICategoryPluginTests/Operation/GraphQLSubscribeTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ class GraphQLSubscribeTests: OperationTestBase {
260260
responseType: JSONValue.self
261261
)
262262

263-
let operation = Amplify.API.subscribe(
263+
let operation = apiPlugin.subscribe(
264264
request: request,
265265
valueListener: { value in
266266
switch value {

AmplifyPlugins/API/AWSAPICategoryPluginTests/Operation/OperationTestBase.swift

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,30 @@ import XCTest
1212

1313
class OperationTestBase: XCTestCase {
1414

15+
var apiPlugin: AWSAPIPlugin!
16+
1517
/// There are no throwing methods in this, but in order to let subclasses have a predictable way
1618
/// of setting up plugins, this base class uses `setUpWithError` instead of `setUp`. (XCTest
1719
/// lifecycle normally invokes `setUp` after `setUpWithError`, which means that any state config
1820
/// done inside of a subclass' `setUpWithError` could be erased by this class' call to
19-
/// `Amplify.reset` from inside `setUp`.
21+
/// `AWSAPIPlugin.reset` from inside `setUp`.
2022
override func setUpWithError() throws {
21-
Amplify.reset()
23+
if apiPlugin != nil {
24+
let waitForReset = DispatchSemaphore(value: 0)
25+
apiPlugin.reset {
26+
waitForReset.signal()
27+
}
28+
waitForReset.wait()
29+
}
30+
apiPlugin = nil
2231
}
2332

2433
func setUpPlugin(
2534
sessionFactory: URLSessionBehaviorFactory? = nil,
2635
subscriptionConnectionFactory: SubscriptionConnectionFactory? = nil,
2736
endpointType: AWSAPICategoryPluginEndpointType
2837
) throws {
29-
let apiPlugin = AWSAPIPlugin(sessionFactory: sessionFactory)
38+
apiPlugin = AWSAPIPlugin(sessionFactory: sessionFactory)
3039

3140
let configurationValues: JSONValue = [
3241
"Valid": [
@@ -45,20 +54,6 @@ class OperationTestBase: XCTestCase {
4554
)
4655

4756
apiPlugin.configure(using: dependencies)
48-
49-
do {
50-
// TODO: Refactor plugin configuration to allow dependencies to be passed in at
51-
// plugin init
52-
53-
// Note that we're configuring Amplify first, then adding the pre-configured plugin.
54-
// This is a hack to let us assign the mock dependencies to the plugin without having
55-
// it overwritten by a subsequent call to `Amplify.configure()`.
56-
try Amplify.configure(AmplifyConfiguration())
57-
try Amplify.add(plugin: apiPlugin)
58-
} catch {
59-
continueAfterFailure = false
60-
XCTFail("Error during setup: \(error)")
61-
}
6257
}
6358

6459
func setUpPluginForSingleResponse(

AmplifyPlugins/API/AWSAPICategoryPluginTests/Operation/RESTCombineTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class RESTCombineTests: OperationTestBase {
2525
let receivedFailure = expectation(description: "Received failed")
2626
receivedFailure.isInverted = true
2727

28-
let sink = Amplify.API.get(request: request)
28+
let sink = apiPlugin.get(request: request)
2929
.resultPublisher
3030
.sink(receiveCompletion: { completion in
3131
switch completion {
@@ -55,7 +55,7 @@ class RESTCombineTests: OperationTestBase {
5555
receivedFinish.isInverted = true
5656
let receivedFailure = expectation(description: "Received failed")
5757

58-
let sink = Amplify.API.get(request: request)
58+
let sink = apiPlugin.get(request: request)
5959
.resultPublisher
6060
.sink(receiveCompletion: { completion in
6161
switch completion {
@@ -83,7 +83,7 @@ class RESTCombineTests: OperationTestBase {
8383
let receivedFailure = expectation(description: "Received failed")
8484
receivedFailure.isInverted = true
8585

86-
let operation = Amplify.API.get(request: request)
86+
let operation = apiPlugin.get(request: request)
8787

8888
let sink = operation
8989
.resultPublisher

0 commit comments

Comments
 (0)