amplify-swift/AmplifyPlugins/API/AWSAPICategoryPluginFunctio.../GraphQLModelBased/GraphQLConnectionScenario3T...

102 lines
3.5 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
import XCTest
@testable import AWSAPICategoryPlugin
@testable import Amplify
@testable import AmplifyTestCommon
@testable import AWSAPICategoryPluginTestCommon
extension GraphQLConnectionScenario3Tests {
func createPost(id: String = UUID().uuidString, title: String) -> Post3? {
let post = Post3(id: id, title: title)
var result: Post3?
let requestInvokedSuccessfully = expectation(description: "request completed")
Amplify.API.mutate(request: .create(post)) { event in
switch event {
case .success(let data):
switch data {
case .success(let post):
result = post
default:
XCTFail("Could not get data back")
}
requestInvokedSuccessfully.fulfill()
case .failure(let error):
XCTFail("Failed \(error)")
}
}
wait(for: [requestInvokedSuccessfully], timeout: TestCommonConstants.networkTimeout)
return result
}
func createComment(id: String = UUID().uuidString, postID: String, content: String) -> Comment3? {
let comment = Comment3(id: id, postID: postID, content: content)
var result: Comment3?
let requestInvokedSuccessfully = expectation(description: "request completed")
Amplify.API.mutate(request: .create(comment)) { event in
switch event {
case .success(let data):
switch data {
case .success(let comment):
result = comment
default:
XCTFail("Could not get data back")
}
requestInvokedSuccessfully.fulfill()
case .failure(let error):
XCTFail("Failed \(error)")
}
}
wait(for: [requestInvokedSuccessfully], timeout: TestCommonConstants.networkTimeout)
return result
}
func mutatePost(post: Post3) -> Post3? {
var result: Post3?
let requestInvokedSuccessfully = expectation(description: "request completed")
_ = Amplify.API.mutate(request: .update(post)) { event in
switch event {
case .success(let data):
switch data {
case .success(let post):
result = post
default:
XCTFail("Could not get data back")
}
requestInvokedSuccessfully.fulfill()
case .failure(let error):
XCTFail("Failed \(error)")
}
}
wait(for: [requestInvokedSuccessfully], timeout: TestCommonConstants.networkTimeout)
return result
}
func deletePost(post: Post3) -> Post3? {
var result: Post3?
let requestInvokedSuccessfully = expectation(description: "request completed")
_ = Amplify.API.mutate(request: .delete(post)) { event in
switch event {
case .success(let data):
switch data {
case .success(let post):
result = post
default:
XCTFail("Could not get data back")
}
requestInvokedSuccessfully.fulfill()
case .failure(let error):
XCTFail("Failed \(error)")
}
}
wait(for: [requestInvokedSuccessfully], timeout: TestCommonConstants.networkTimeout)
return result
}
}