create unified test case

This commit is contained in:
417-72KI 2022-04-17 01:54:54 +09:00
parent 6763b00b72
commit d96555352e
1 changed files with 133 additions and 0 deletions

View File

@ -0,0 +1,133 @@
import XCTest
import MultipartFormDataParser
#if canImport(UIKit)
import UIKit
#elseif canImport(Cocoa)
import Cocoa
#endif
final class MultipartFormDataParserTests: XCTestCase {
override class func setUp() {
stubForUpload()
}
override class func tearDown() {
clearStubs()
}
func testRequest() throws {
let genbaNeko = try XCTUnwrap(genbaNeko)
let denwaNeko = try XCTUnwrap(denwaNeko)
let message = try XCTUnwrap("Hello world!".data(using: .utf8))
let request = createRequest(genbaNeko: genbaNeko, denwaNeko: denwaNeko, message: message)
let data = try MultipartFormData.parse(from: request)
XCTAssertEqual(data.element(forName: "genbaNeko")?.data, genbaNeko)
XCTAssertEqual(data.element(forName: "denwaNeko")?.data, denwaNeko)
XCTAssertEqual(data.element(forName: "message")?.string, "Hello world!")
}
#if canImport(Alamofire)
func testAlamofire() throws {
let genbaNeko = try XCTUnwrap(genbaNeko)
let denwaNeko = try XCTUnwrap(denwaNeko)
let message = try XCTUnwrap("Hello world!".data(using: .utf8))
let result = try XCTUnwrap(uploadWithAlamoFire(genbaNeko: genbaNeko, denwaNeko: denwaNeko, message: message))
XCTAssertEqual(result.status, 200)
XCTAssertNil(result.error)
}
#if compiler(>=5.6) && canImport(_Concurrency)
@available(macCatalyst 13, iOS 13, tvOS 13, *)
func testAlamofireWithConcurrency() async throws {
let genbaNeko = try XCTUnwrap(genbaNeko)
let denwaNeko = try XCTUnwrap(denwaNeko)
let message = try XCTUnwrap("Hello world!".data(using: .utf8))
let result = try await uploadWithAlamoFireConcurrency(genbaNeko: genbaNeko, denwaNeko: denwaNeko, message: message)
XCTAssertEqual(result.status, 200)
XCTAssertNil(result.error)
}
#endif
#endif
#if canImport(APIKit)
func testAPIKit() throws {
let genbaNeko = try XCTUnwrap(genbaNeko)
let denwaNeko = try XCTUnwrap(denwaNeko)
let message = try XCTUnwrap("Hello world!".data(using: .utf8))
try runActivity(named: "request") {
let request = try requestWithAPIKit(genbaNeko: genbaNeko,
denwaNeko: denwaNeko,
message: message)
let data = try MultipartFormData.parse(from: request)
XCTAssertEqual(data.element(forName: "genbaNeko")?.data, genbaNeko)
XCTAssertEqual(data.element(forName: "denwaNeko")?.data, denwaNeko)
XCTAssertEqual(data.element(forName: "message")?.string, "Hello world!")
}
try runActivity(named: "stub") {
let result = try XCTUnwrap(uploadWithAPIKit(genbaNeko: genbaNeko, denwaNeko: denwaNeko, message: message))
XCTAssertEqual(result.status, 200)
XCTAssertNil(result.error)
}
}
#endif
#if canImport(Moya)
func testMoya() throws {
let genbaNeko = try XCTUnwrap(genbaNeko)
let denwaNeko = try XCTUnwrap(denwaNeko)
let message = try XCTUnwrap("Hello world!".data(using: .utf8))
let result = try XCTUnwrap(uploadWithMoya(genbaNeko: genbaNeko, denwaNeko: denwaNeko, message: message))
XCTAssertEqual(result.status, 200)
XCTAssertNil(result.error)
}
#endif
func testURLSessionUploadTask() throws {
let genbaNeko = try XCTUnwrap(genbaNeko)
let denwaNeko = try XCTUnwrap(denwaNeko)
let message = try XCTUnwrap("Hello world!".data(using: .utf8))
let result = try XCTUnwrap(uploadURLSessionUploadTask(genbaNeko: genbaNeko, denwaNeko: denwaNeko, message: message))
XCTAssertEqual(result.status, 200)
XCTAssertNil(result.error)
}
func testURLSessionDataTask() throws {
let genbaNeko = try XCTUnwrap(genbaNeko)
let denwaNeko = try XCTUnwrap(denwaNeko)
let message = try XCTUnwrap("Hello world!".data(using: .utf8))
let result = try XCTUnwrap(uploadURLSessionDataTask(genbaNeko: genbaNeko, denwaNeko: denwaNeko, message: message))
XCTAssertEqual(result.status, 200)
XCTAssertNil(result.error)
}
}
private extension MultipartFormDataParserTests {
var genbaNeko: Data? {
#if canImport(UIKit)
return UIImage(data: TestResource.genbaNeko)?
.jpegData(compressionQuality: 1)
#elseif canImport(Cocoa)
return NSImage(data: TestResource.genbaNeko)?
.jpegRepresentation
#else
fatalError()
#endif
}
var denwaNeko: Data? {
#if canImport(UIKit)
return UIImage(data: TestResource.denwaNeko)?
.jpegData(compressionQuality: 1)
#elseif canImport(Cocoa)
return NSImage(data: TestResource.denwaNeko)?
.jpegRepresentation
#else
fatalError()
#endif
}
}