This repository has been archived on 2026-02-12. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
swift-duct-calc/Tests/DatabaseClientTests/RoomTests.swift
Michael Housh 9276f88426
All checks were successful
CI / Linux Tests (push) Successful in 6m28s
feat: Updates to use swift-validations for database.
2026-02-01 00:55:44 -05:00

189 lines
4.4 KiB
Swift

import Dependencies
import Foundation
import ManualDCore
import Testing
import Validations
@testable import DatabaseClient
@Suite
struct RoomTests {
@Test
func happyPath() async throws {
try await withTestUserAndProject { _, project in
@Dependency(\.database.rooms) var rooms
let room = try await rooms.create(
.init(projectID: project.id, name: "Test", heatingLoad: 1234, coolingTotal: 1234)
)
let fetched = try await rooms.fetch(project.id)
#expect(fetched == [room])
let got = try await rooms.get(room.id)
#expect(got == room)
let updated = try await rooms.update(
room.id,
.init(rectangularSizes: [.init(id: UUID(0), register: 1, height: 8)])
)
#expect(updated.id == room.id)
let updatedSize = try await rooms.updateRectangularSize(
room.id, .init(id: UUID(0), register: 1, height: 10)
)
#expect(updatedSize.id == room.id)
let deletedSize = try await rooms.deleteRectangularSize(room.id, UUID(0))
#expect(deletedSize.rectangularSizes == nil)
try await rooms.delete(room.id)
}
}
@Test
func notFound() async throws {
try await withDatabase {
@Dependency(\.database.rooms) var rooms
await #expect(throws: NotFoundError.self) {
try await rooms.delete(UUID(0))
}
await #expect(throws: NotFoundError.self) {
try await rooms.deleteRectangularSize(UUID(0), UUID(1))
}
await #expect(throws: NotFoundError.self) {
try await rooms.update(UUID(0), .init())
}
await #expect(throws: NotFoundError.self) {
try await rooms.updateRectangularSize(UUID(0), .init(height: 8))
}
}
}
@Test(
arguments: [
Room.Create(
projectID: UUID(0),
name: "",
heatingLoad: 12345,
coolingTotal: 12344,
coolingSensible: nil,
registerCount: 1
),
Room.Create(
projectID: UUID(0),
name: "Test",
heatingLoad: -12345,
coolingTotal: 12344,
coolingSensible: nil,
registerCount: 1
),
Room.Create(
projectID: UUID(0),
name: "Test",
heatingLoad: 12345,
coolingTotal: -12344,
coolingSensible: nil,
registerCount: 1
),
Room.Create(
projectID: UUID(0),
name: "Test",
heatingLoad: 12345,
coolingTotal: 12344,
coolingSensible: -123,
registerCount: 1
),
Room.Create(
projectID: UUID(0),
name: "Test",
heatingLoad: 12345,
coolingTotal: 12344,
coolingSensible: nil,
registerCount: -1
),
Room.Create(
projectID: UUID(0),
name: "",
heatingLoad: -12345,
coolingTotal: -12344,
coolingSensible: -1,
registerCount: -1
),
]
)
func validations(room: Room.Create) throws {
#expect(throws: (any Error).self) {
// do {
try room.toModel().validate()
// } catch {
// print("\(error)")
// throw error
// }
}
}
// @Test(
// arguments: [
// Room.Update(
// name: "",
// heatingLoad: 12345,
// coolingTotal: 12344,
// coolingSensible: nil,
// registerCount: 1
// ),
// Room.Update(
// name: "Test",
// heatingLoad: -12345,
// coolingTotal: 12344,
// coolingSensible: nil,
// registerCount: 1
// ),
// Room.Update(
// name: "Test",
// heatingLoad: 12345,
// coolingTotal: -12344,
// coolingSensible: nil,
// registerCount: 1
// ),
// Room.Update(
// name: "Test",
// heatingLoad: 12345,
// coolingTotal: 12344,
// coolingSensible: -123,
// registerCount: 1
// ),
// Room.Update(
// name: "Test",
// heatingLoad: 12345,
// coolingTotal: 12344,
// coolingSensible: nil,
// registerCount: -1
// ),
// Room.Update(
// name: "",
// heatingLoad: -12345,
// coolingTotal: -12344,
// coolingSensible: -1,
// registerCount: -1
// ),
// ]
// )
// func updateValidations(room: Room.Update) throws {
// #expect(throws: (any Error).self) {
// // do {
// try room.validate()
// // } catch {
// // print("\(error)")
// // throw error
// // }
// }
// }
}