feat: Adds script to generate database seeded values and removes old mock storage.
This commit is contained in:
@@ -32,70 +32,3 @@ extension Employee.Update: Content {}
|
||||
extension DatabaseClient.Employees: TestDependencyKey {
|
||||
public static let testValue = Self()
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
|
||||
typealias EmployeeMockStorage = MockStorage<
|
||||
Employee,
|
||||
Employee.Create,
|
||||
DatabaseClient.Employees.FetchRequest,
|
||||
Void,
|
||||
Employee.Update
|
||||
>
|
||||
|
||||
private extension EmployeeMockStorage {
|
||||
|
||||
init(_ mocks: [Employee]) {
|
||||
@Dependency(\.date.now) var now
|
||||
@Dependency(\.uuid) var uuid
|
||||
self.init(
|
||||
mocks,
|
||||
create: { employee in
|
||||
Employee(
|
||||
id: uuid(),
|
||||
active: employee.active ?? true,
|
||||
createdAt: now,
|
||||
firstName: employee.firstName,
|
||||
lastName: employee.lastName,
|
||||
updatedAt: now
|
||||
)
|
||||
},
|
||||
fetch: { request in
|
||||
switch request {
|
||||
case .all:
|
||||
return { _ in true }
|
||||
case .active:
|
||||
return { $0.active == true }
|
||||
case .inactive:
|
||||
return { $0.active == false }
|
||||
}
|
||||
},
|
||||
update: { employee, updates in
|
||||
let model = Employee(
|
||||
id: employee.id,
|
||||
active: updates.active ?? employee.active,
|
||||
createdAt: employee.createdAt,
|
||||
firstName: updates.firstName ?? employee.firstName,
|
||||
lastName: updates.lastName ?? employee.lastName,
|
||||
updatedAt: now
|
||||
)
|
||||
|
||||
employee = model
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
public extension DatabaseClient.Employees {
|
||||
static func mock(_ mocks: [Employee] = []) -> Self {
|
||||
let storage = EmployeeMockStorage(mocks)
|
||||
return .init(
|
||||
create: { try await storage.create($0) },
|
||||
delete: { try await storage.delete($0) },
|
||||
fetchAll: { try await storage.fetchAll($0) },
|
||||
get: { try await storage.get($0) },
|
||||
update: { try await storage.update($0, $1) }
|
||||
)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user