Written some test cases for the AppBuilder builder in the test target.
This commit is contained in:
parent
5656639e5d
commit
e866d1da71
@ -1,10 +1,3 @@
|
|||||||
//
|
|
||||||
// Test.swift
|
|
||||||
// DocCRepo
|
|
||||||
//
|
|
||||||
// Created by Javier Cicchelli on 08/03/2025.
|
|
||||||
//
|
|
||||||
|
|
||||||
import Hummingbird
|
import Hummingbird
|
||||||
import HummingbirdTesting
|
import HummingbirdTesting
|
||||||
import Testing
|
import Testing
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
import AppLibrary
|
|
||||||
import Hummingbird
|
|
||||||
import HummingbirdTesting
|
|
||||||
import Testing
|
|
||||||
|
|
||||||
struct AppTests {
|
|
||||||
|
|
||||||
// MARK: Properties
|
|
||||||
|
|
||||||
private let arguments = TestArguments()
|
|
||||||
private let builder = AppBuilder(name: "DocCRepo")
|
|
||||||
|
|
||||||
// MARK: Route tests
|
|
||||||
|
|
||||||
@Test(arguments: ["/"])
|
|
||||||
func routes(_ uri: String) async throws {
|
|
||||||
let app = try await builder(arguments)
|
|
||||||
|
|
||||||
try await app.test(.router) { client in
|
|
||||||
try await client.execute(uri: uri, method: .get) { response in
|
|
||||||
#expect(response.status == .ok)
|
|
||||||
#expect(response.body == .empty)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// MARK: ByteBuffer+Constants
|
|
||||||
|
|
||||||
private extension ByteBuffer {
|
|
||||||
static let empty = ByteBuffer(string: "")
|
|
||||||
}
|
|
86
Test/Sources/Cases/Public/Builders/AppBuilderTests.swift
Normal file
86
Test/Sources/Cases/Public/Builders/AppBuilderTests.swift
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
import AppLibrary
|
||||||
|
import Hummingbird
|
||||||
|
import HummingbirdTesting
|
||||||
|
import Testing
|
||||||
|
|
||||||
|
@Suite("AppBuilder", .tags(.builder))
|
||||||
|
struct AppBuilderTests {
|
||||||
|
|
||||||
|
// MARK: Properties
|
||||||
|
|
||||||
|
private let appBuilder = AppBuilder(
|
||||||
|
appName: "DoxyTest",
|
||||||
|
archivesFolder: "Resources/Archives/Test"
|
||||||
|
)
|
||||||
|
private let arguments = TestArguments()
|
||||||
|
|
||||||
|
// MARK: Route tests
|
||||||
|
|
||||||
|
@Test(arguments: zip([String].uris, [HTTPResponse.Status].statuses))
|
||||||
|
func routes(
|
||||||
|
uri: String,
|
||||||
|
expects status: HTTPResponse.Status
|
||||||
|
) async throws {
|
||||||
|
let app = try await appBuilder(arguments)
|
||||||
|
|
||||||
|
try await app.test(.router) { client in
|
||||||
|
try await client.execute(
|
||||||
|
uri: uri,
|
||||||
|
method: .get
|
||||||
|
) { response in
|
||||||
|
#expect(response.status == status)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Collection+HTTPResponseStatus
|
||||||
|
|
||||||
|
private extension Collection where Element == HTTPResponse.Status {
|
||||||
|
|
||||||
|
// MARK: Computed
|
||||||
|
|
||||||
|
static var statuses: [Element] {[
|
||||||
|
.notFound,
|
||||||
|
.notFound,
|
||||||
|
.notFound,
|
||||||
|
.notFound,
|
||||||
|
.seeOther,
|
||||||
|
.seeOther,
|
||||||
|
.notImplemented,
|
||||||
|
.seeOther,
|
||||||
|
.seeOther,
|
||||||
|
.seeOther,
|
||||||
|
.seeOther,
|
||||||
|
.notImplemented,
|
||||||
|
.seeOther,
|
||||||
|
.seeOther,
|
||||||
|
]}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Collection+String
|
||||||
|
|
||||||
|
private extension Collection where Element == String {
|
||||||
|
|
||||||
|
// MARK: Computed
|
||||||
|
|
||||||
|
static var uris: [Element] {[
|
||||||
|
"/",
|
||||||
|
"/index.html",
|
||||||
|
"/xxx",
|
||||||
|
"/archives",
|
||||||
|
"/archives/SomeArchive",
|
||||||
|
"/archives/SomeArchive/",
|
||||||
|
"/archives/SomeArchive/index.html",
|
||||||
|
"/archives/SomeArchive/documentation",
|
||||||
|
"/archives/SomeArchive/tutorials",
|
||||||
|
"/archives/SlothCreator",
|
||||||
|
"/archives/SlothCreator/",
|
||||||
|
"/archives/SlothCreator/index.html",
|
||||||
|
"/archives/SlothCreator/documentation",
|
||||||
|
"/archives/SlothCreator/tutorials",
|
||||||
|
]}
|
||||||
|
|
||||||
|
}
|
@ -4,6 +4,7 @@ extension Tag {
|
|||||||
|
|
||||||
// MARK: Constants
|
// MARK: Constants
|
||||||
|
|
||||||
|
@Tag static var builder: Tag
|
||||||
@Tag static var enumeration: Tag
|
@Tag static var enumeration: Tag
|
||||||
@Tag static var middleware: Tag
|
@Tag static var middleware: Tag
|
||||||
@Tag static var provider: Tag
|
@Tag static var provider: Tag
|
||||||
|
Loading…
x
Reference in New Issue
Block a user