Add unit testing

This commit is contained in:
Victor Bodinaud
2024-01-14 20:58:48 +01:00
parent 743530ef50
commit e1b86ee6c8
2 changed files with 74 additions and 6 deletions

19
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Hermes CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Swift
uses: fwal/setup-swift@v1
- name: Build
run: swift build
- name: Run tests
run: swift test

View File

@@ -1,12 +1,61 @@
import XCTest import XCTest
@testable import Hermes @testable import Hermes
final class HermesTests: XCTestCase { struct SomeCodableStruct: Codable, Equatable {
func testExample() throws { let url: String
// XCTest Documentation var data: String? = nil
// https://developer.apple.com/documentation/xctest var json: SomeCodableJsonStruct? = nil
}
// Defining Test Cases and Test Methods struct SomeCodableJsonStruct: Codable, Equatable {
// https://developer.apple.com/documentation/xctest/defining_test_cases_and_test_methods var test: String
}
final class HermesTests: XCTestCase {
func testResourceInitialization() {
let url = URL(string: "https://httpbin.org/get")!
let resource = Resource<SomeCodableStruct>(url: url, method: .get([]), modelType: SomeCodableStruct.self)
XCTAssertEqual(resource.url, url)
XCTAssertEqual(resource.method.name, "GET")
XCTAssert(resource.modelType == SomeCodableStruct.self)
}
func testGetRequest() async throws {
let url = URL(string: "https://httpbin.org/get")!
let resource = Resource(url: url, method: .get([]), modelType: SomeCodableStruct.self)
let response = try await Hermes().load(resource)
XCTAssertNotNil(response)
XCTAssertEqual(response.url, "https://httpbin.org/get")
XCTAssertNil(response.data)
XCTAssertNil(response.json)
}
func testPostRequest() async throws {
let postDatas = ["test": "test"]
let url = URL(string: "https://httpbin.org/post")!
let resource = try Resource(url: url, method: .post(JSONEncoder().encode(postDatas)), modelType: SomeCodableStruct.self)
let response = try await Hermes().load(resource)
XCTAssertNotNil(response)
XCTAssertEqual(response.url, "https://httpbin.org/post")
XCTAssertEqual(response.data, "{\"test\":\"test\"}")
XCTAssert(response.json == SomeCodableJsonStruct(test: "test"))
}
func testDeleteRequest() async throws {
let url = URL(string: "https://httpbin.org/delete")!
let resource = Resource(url: url, method: .delete, modelType: SomeCodableStruct.self)
let response = try await Hermes().load(resource)
XCTAssertNotNil(response)
XCTAssertEqual(response.url, "https://httpbin.org/delete")
XCTAssertEqual(response.data, "")
XCTAssertNil(response.json)
} }
} }