40 lines
866 B
Swift
40 lines
866 B
Swift
import App
|
|
import DatabaseClient
|
|
import Dependencies
|
|
import Fluent
|
|
import FluentSQLiteDriver
|
|
import Foundation
|
|
import NIO
|
|
import Vapor
|
|
|
|
// Helper to create an in-memory database for testing.
|
|
func withDatabase(
|
|
setupDependencies: (inout DependencyValues) -> Void = { _ in },
|
|
operation: () async throws -> Void
|
|
) async throws {
|
|
let app = try await Application.make(.testing)
|
|
do {
|
|
try await configure(app)
|
|
let database = app.db
|
|
try await app.autoMigrate()
|
|
|
|
try await withDependencies {
|
|
$0.uuid = .incrementing
|
|
$0.date = .init { Date() }
|
|
$0.database = .live(database: database)
|
|
setupDependencies(&$0)
|
|
} operation: {
|
|
try await operation()
|
|
}
|
|
|
|
try await app.autoRevert()
|
|
try await app.asyncShutdown()
|
|
|
|
} catch {
|
|
try? await app.autoRevert()
|
|
try await app.asyncShutdown()
|
|
throw error
|
|
}
|
|
|
|
}
|