124 lines
3.6 KiB
Swift
124 lines
3.6 KiB
Swift
import Dependencies
|
|
import Foundation
|
|
import ManualDCore
|
|
import Testing
|
|
|
|
@testable import DatabaseClient
|
|
|
|
@Suite
|
|
struct EquivalentLengthTests {
|
|
|
|
@Test
|
|
func happyPath() async throws {
|
|
try await withTestUserAndProject { user, project in
|
|
@Dependency(\.database.equivalentLengths) var equivalentLengths
|
|
|
|
let equivalentLength = try await equivalentLengths.create(
|
|
.init(
|
|
projectID: project.id,
|
|
name: "Test",
|
|
type: .supply,
|
|
straightLengths: [10],
|
|
groups: [
|
|
.init(group: 1, letter: "a", value: 20),
|
|
.init(group: 2, letter: "a", value: 30, quantity: 2),
|
|
]
|
|
)
|
|
)
|
|
|
|
let fetched = try await equivalentLengths.fetch(project.id)
|
|
#expect(fetched == [equivalentLength])
|
|
|
|
let got = try await equivalentLengths.get(equivalentLength.id)
|
|
#expect(got == equivalentLength)
|
|
|
|
var max = try await equivalentLengths.fetchMax(project.id)
|
|
#expect(max.supply == equivalentLength)
|
|
#expect(max.return == nil)
|
|
|
|
let returnLength = try await equivalentLengths.create(
|
|
.init(
|
|
projectID: project.id,
|
|
name: "Test",
|
|
type: .return,
|
|
straightLengths: [10],
|
|
groups: [
|
|
.init(group: 1, letter: "a", value: 20),
|
|
.init(group: 2, letter: "a", value: 30, quantity: 2),
|
|
]
|
|
)
|
|
)
|
|
max = try await equivalentLengths.fetchMax(project.id)
|
|
#expect(max.supply == equivalentLength)
|
|
#expect(max.return == returnLength)
|
|
|
|
let updated = try await equivalentLengths.update(
|
|
equivalentLength.id, .init(name: "Supply Test")
|
|
)
|
|
#expect(updated.name == "Supply Test")
|
|
#expect(updated.id == equivalentLength.id)
|
|
|
|
try await equivalentLengths.delete(equivalentLength.id)
|
|
|
|
}
|
|
}
|
|
|
|
@Test
|
|
func notFound() async throws {
|
|
try await withDatabase {
|
|
@Dependency(\.database.equivalentLengths) var equivalentLengths
|
|
|
|
await #expect(throws: NotFoundError.self) {
|
|
try await equivalentLengths.delete(UUID(0))
|
|
}
|
|
|
|
await #expect(throws: NotFoundError.self) {
|
|
try await equivalentLengths.update(UUID(0), .init())
|
|
}
|
|
}
|
|
}
|
|
|
|
@Test(
|
|
arguments: [
|
|
EquivalentLength.Create(
|
|
projectID: UUID(0), name: "", type: .return, straightLengths: [], groups: []
|
|
),
|
|
EquivalentLength.Create(
|
|
projectID: UUID(0), name: "Testy", type: .return, straightLengths: [-1, 1], groups: []
|
|
),
|
|
EquivalentLength.Create(
|
|
projectID: UUID(0), name: "Testy", type: .return, straightLengths: [1, -1], groups: []
|
|
),
|
|
EquivalentLength.Create(
|
|
projectID: UUID(0), name: "Testy", type: .return, straightLengths: [1, 1],
|
|
groups: [
|
|
.init(group: -1, letter: "a", value: 1.0, quantity: 1)
|
|
]
|
|
),
|
|
EquivalentLength.Create(
|
|
projectID: UUID(0), name: "Testy", type: .return, straightLengths: [1, 1],
|
|
groups: [
|
|
.init(group: 1, letter: "1", value: 1.0, quantity: 1)
|
|
]
|
|
),
|
|
EquivalentLength.Create(
|
|
projectID: UUID(0), name: "Testy", type: .return, straightLengths: [1, 1],
|
|
groups: [
|
|
.init(group: 1, letter: "a", value: -1.0, quantity: 1)
|
|
]
|
|
),
|
|
EquivalentLength.Create(
|
|
projectID: UUID(0), name: "Testy", type: .return, straightLengths: [1, 1],
|
|
groups: [
|
|
.init(group: 1, letter: "a", value: 1.0, quantity: -1)
|
|
]
|
|
),
|
|
]
|
|
)
|
|
func validations(model: EquivalentLength.Create) {
|
|
#expect(throws: (any Error).self) {
|
|
try model.toModel().validate()
|
|
}
|
|
}
|
|
}
|