Skip to content

Commit 8386c47

Browse files
Async
1 parent c88b423 commit 8386c47

File tree

15 files changed

+44
-35
lines changed

15 files changed

+44
-35
lines changed

Sources/Alchemy/Alchemy+Papyrus/Endpoint+Request.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,16 @@ extension Client {
4949

5050
let method = HTTPMethod(rawValue: rawRequest.method)
5151
let fullUrl = try rawRequest.fullURL()
52-
let clientResponse = try await builder.request(method, uri: fullUrl).validateSuccessful()
52+
builder = builder.withBaseUrl(fullUrl).withMethod(method)
53+
54+
if let mockedResponse = endpoint.mockedResponse {
55+
let clientRequest = builder.clientRequest
56+
let clientResponse = Client.Response(request: clientRequest, host: "mock", status: .ok, version: .http1_1, headers: [:])
57+
let res = mockedResponse(request)
58+
return (clientResponse: clientResponse, response: res)
59+
}
60+
61+
let clientResponse = try await builder.execute().validateSuccessful()
5362

5463
guard Response.self != Empty.self else {
5564
return (clientResponse, Empty.value as! Response)

Sources/Alchemy/Client/Client.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -117,36 +117,36 @@ public final class Client: Service {
117117

118118
public struct Builder: RequestBuilder {
119119
public var client: Client
120-
public var urlComponents: URLComponents { get { request.urlComponents } set { request.urlComponents = newValue} }
121-
public var method: HTTPMethod { get { request.method } set { request.method = newValue} }
122-
public var headers: HTTPHeaders { get { request.headers } set { request.headers = newValue} }
123-
public var body: ByteContent? { get { request.body } set { request.body = newValue} }
124-
private var request: Client.Request
125-
120+
public var urlComponents: URLComponents { get { clientRequest.urlComponents } set { clientRequest.urlComponents = newValue} }
121+
public var method: HTTPMethod { get { clientRequest.method } set { clientRequest.method = newValue} }
122+
public var headers: HTTPHeaders { get { clientRequest.headers } set { clientRequest.headers = newValue} }
123+
public var body: ByteContent? { get { clientRequest.body } set { clientRequest.body = newValue} }
124+
public private(set) var clientRequest: Client.Request
125+
126126
init(client: Client) {
127127
self.client = client
128-
self.request = Request()
128+
self.clientRequest = Request()
129129
}
130130

131131
public func execute() async throws -> Client.Response {
132-
try await client.execute(req: request)
132+
try await client.execute(req: clientRequest)
133133
}
134134

135135
/// Sets an `HTTPClient.Configuration` for this request only. See the
136136
/// `swift-server/async-http-client` package for configuration
137137
/// options.
138138
public func withClientConfig(_ config: HTTPClient.Configuration) -> Builder {
139-
with { $0.request.config = config }
139+
with { $0.clientRequest.config = config }
140140
}
141141

142142
/// Timeout if the request doesn't finish in the given time amount.
143143
public func withTimeout(_ timeout: TimeAmount) -> Builder {
144-
with { $0.request.timeout = timeout }
144+
with { $0.clientRequest.timeout = timeout }
145145
}
146146

147147
/// Allow the response to be streamed.
148148
public func withStream() -> Builder {
149-
with { $0.request.streamResponse = true }
149+
with { $0.clientRequest.streamResponse = true }
150150
}
151151

152152
/// Stub this builder's client, causing it to respond to all incoming

Tests/Alchemy/Auth/BasicAuthableTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import AlchemyTest
22

33
final class BasicAuthableTests: TestCase<TestApp> {
44
func testBasicAuthable() async throws {
5-
Database.fake(migrations: [AuthModel.Migrate()])
5+
try await Database.fake(migrations: [AuthModel.Migrate()])
66

77
app.use(AuthModel.basicAuthMiddleware())
88
app.get("/user") { try $0.get(AuthModel.self) }

Tests/Alchemy/Auth/TokenAuthableTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import AlchemyTest
22

33
final class TokenAuthableTests: TestCase<TestApp> {
44
func testTokenAuthable() async throws {
5-
Database.fake(migrations: [AuthModel.Migrate(), TokenModel.Migrate()])
5+
try await Database.fake(migrations: [AuthModel.Migrate(), TokenModel.Migrate()])
66

77
app.use(TokenModel.tokenAuthMiddleware())
88
app.get("/user") { req -> UUID in

Tests/Alchemy/Cache/CacheTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ final class CacheTests: TestCase<TestApp> {
2929

3030
func testDatabaseCache() async throws {
3131
for test in allTests {
32-
Database.fake(migrations: [Cache.AddCacheMigration()])
32+
try await Database.fake(migrations: [Cache.AddCacheMigration()])
3333
Cache.bind(.database)
3434
try await test()
3535
}

Tests/Alchemy/Commands/Migrate/RunMigrateTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import AlchemyTest
44

55
final class RunMigrateTests: TestCase<TestApp> {
66
func testRun() async throws {
7-
let db = Database.fake()
7+
let db = try await Database.fake()
88
db.migrations = [MigrationA()]
99
XCTAssertFalse(MigrationA.didUp)
1010
XCTAssertFalse(MigrationA.didDown)

Tests/Alchemy/Commands/Seed/SeedDatabaseTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import AlchemyTest
44

55
final class SeedDatabaseTests: TestCase<TestApp> {
66
func testSeed() async throws {
7-
let db = Database.fake(migrations: [SeedModel.Migrate()])
7+
let db = try await Database.fake(migrations: [SeedModel.Migrate()])
88
db.seeders = [Seeder1(), Seeder2()]
99
try SeedDatabase(database: nil).run()
1010
try app.lifecycle.startAndWait()
@@ -13,7 +13,7 @@ final class SeedDatabaseTests: TestCase<TestApp> {
1313
}
1414

1515
func testNamedSeed() async throws {
16-
let db = Database.fake("a", migrations: [SeedModel.Migrate()])
16+
let db = try await Database.fake("a", migrations: [SeedModel.Migrate()])
1717
db.seeders = [Seeder3(), Seeder4()]
1818

1919
try app.start("db:seed", "seeder3", "--database", "a")

Tests/Alchemy/Commands/Serve/RunServeTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import Alchemy
33
import AlchemyTest
44

55
final class RunServeTests: TestCase<TestApp> {
6-
override func setUp() {
7-
super.setUp()
8-
Database.fake()
6+
override func setUp() async throws {
7+
try await super.setUp()
8+
try await Database.fake()
99
Queue.fake()
1010
}
1111

Tests/Alchemy/Queue/QueueTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ final class QueueTests: TestCase<TestApp> {
4444
func testDatabaseQueue() async throws {
4545
do {
4646
for test in allTests {
47-
Database.fake(migrations: [Queue.AddJobsMigration()])
47+
try await Database.fake(migrations: [Queue.AddJobsMigration()])
4848
Queue.bind(.database)
4949
try await test(#filePath, #line)
5050
}

Tests/Alchemy/SQL/Database/Seeding/DatabaseSeederTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import AlchemyTest
44

55
final class DatabaseSeederTests: TestCase<TestApp> {
66
func testSeeder() async throws {
7-
Database.fake(
7+
try await Database.fake(
88
migrations: [
99
SeedModel.Migrate(),
1010
OtherSeedModel.Migrate()],
@@ -18,7 +18,7 @@ final class DatabaseSeederTests: TestCase<TestApp> {
1818
}
1919

2020
func testSeedWithNames() async throws {
21-
Database.fake(
21+
try await Database.fake(
2222
migrations: [
2323
SeedModel.Migrate(),
2424
OtherSeedModel.Migrate()])

0 commit comments

Comments
 (0)