feat: Adds basic tests for database client.
This commit is contained in:
@@ -9,7 +9,7 @@ public extension DatabaseClient.Employees {
|
||||
.init { create in
|
||||
let model = try create.toModel()
|
||||
try await model.save(on: database)
|
||||
return model.toDTO()
|
||||
return try model.toDTO()
|
||||
} delete: { id in
|
||||
guard let model = try await EmployeeModel.find(id, on: database) else {
|
||||
throw NotFoundError()
|
||||
@@ -28,17 +28,17 @@ public extension DatabaseClient.Employees {
|
||||
break
|
||||
}
|
||||
|
||||
return try await query.all().map { $0.toDTO() }
|
||||
return try await query.all().map { try $0.toDTO() }
|
||||
|
||||
} get: { id in
|
||||
try await EmployeeModel.find(id, on: database).map { $0.toDTO() }
|
||||
try await EmployeeModel.find(id, on: database).map { try $0.toDTO() }
|
||||
} update: { id, updates in
|
||||
guard let model = try await EmployeeModel.find(id, on: database) else {
|
||||
throw NotFoundError()
|
||||
}
|
||||
try model.applyUpdate(updates)
|
||||
try await model.save(on: database)
|
||||
return model.toDTO()
|
||||
return try model.toDTO()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -150,14 +150,14 @@ final class EmployeeModel: Model, @unchecked Sendable {
|
||||
self.updatedAt = updatedAt
|
||||
}
|
||||
|
||||
func toDTO() -> Employee {
|
||||
.init(
|
||||
id: id,
|
||||
func toDTO() throws -> Employee {
|
||||
try .init(
|
||||
id: requireID(),
|
||||
active: active,
|
||||
createdAt: createdAt,
|
||||
createdAt: createdAt!,
|
||||
firstName: firstName,
|
||||
lastName: lastName,
|
||||
updatedAt: updatedAt
|
||||
updatedAt: updatedAt!
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -10,32 +10,29 @@ public struct Employee: Codable, Equatable, Identifiable, Sendable {
|
||||
public var updatedAt: Date
|
||||
|
||||
public init(
|
||||
id: UUID? = nil,
|
||||
id: UUID,
|
||||
active: Bool = true,
|
||||
createdAt: Date? = nil,
|
||||
createdAt: Date,
|
||||
firstName: String,
|
||||
lastName: String,
|
||||
updatedAt: Date? = nil
|
||||
updatedAt: Date
|
||||
) {
|
||||
@Dependency(\.date) var date
|
||||
@Dependency(\.uuid) var uuid
|
||||
|
||||
self.id = id ?? uuid()
|
||||
self.id = id
|
||||
self.active = active
|
||||
self.createdAt = createdAt ?? date.now
|
||||
self.createdAt = createdAt
|
||||
self.firstName = firstName
|
||||
self.lastName = lastName
|
||||
self.updatedAt = updatedAt ?? date.now
|
||||
self.updatedAt = updatedAt
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public extension Employee {
|
||||
static var mocks: [Self] {
|
||||
[
|
||||
.init(firstName: "Michael", lastName: "Housh"),
|
||||
.init(firstName: "Blob", lastName: "Esquire"),
|
||||
.init(firstName: "Testy", lastName: "McTestface")
|
||||
]
|
||||
}
|
||||
}
|
||||
// public extension Employee {
|
||||
// static var mocks: [Self] {
|
||||
// [
|
||||
// .init(firstName: "Michael", lastName: "Housh"),
|
||||
// .init(firstName: "Blob", lastName: "Esquire"),
|
||||
// .init(firstName: "Testy", lastName: "McTestface")
|
||||
// ]
|
||||
// }
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user