import Dependencies import Foundation import ManualDCore import Testing @testable import DatabaseClient @Suite struct EquipmentTests { @Test func happyPath() async throws { try await withTestUserAndProject { user, project in @Dependency(\.database) var database let equipment = try await database.equipment.create( .init(projectID: project.id, heatingCFM: 1000, coolingCFM: 1000) ) let fetched = try await database.equipment.fetch(project.id) #expect(fetched == equipment) let got = try await database.equipment.get(equipment.id) #expect(got == equipment) let updated = try await database.equipment.update( equipment.id, .init(heatingCFM: 900) ) #expect(updated.heatingCFM == 900) #expect(updated.id == equipment.id) try await database.equipment.delete(equipment.id) } } @Test func notFound() async throws { try await withTestUserAndProject { _, project in @Dependency(\.database.equipment) var equipment let fetched = try await equipment.fetch(project.id) #expect(fetched == nil) await #expect(throws: NotFoundError.self) { try await equipment.delete(UUID(0)) } await #expect(throws: NotFoundError.self) { try await equipment.update(UUID(0), .init(staticPressure: 0.3)) } } } @Test( arguments: [ EquipmentModel(staticPressure: -1, heatingCFM: 1000, coolingCFM: 1000, projectID: UUID(0)), EquipmentModel(staticPressure: 0.5, heatingCFM: -1, coolingCFM: 1000, projectID: UUID(0)), EquipmentModel(staticPressure: 0.5, heatingCFM: 1000, coolingCFM: -1000, projectID: UUID(0)), EquipmentModel(staticPressure: 1.1, heatingCFM: 1000, coolingCFM: -1000, projectID: UUID(0)), ] ) func validations(model: EquipmentModel) { #expect(throws: (any Error).self) { try model.validate() } } }