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/ApiRouteTests/ProjectRouteTests.swift
Michael Housh 5440024038
All checks were successful
CI / Linux Tests (push) Successful in 9m34s
feat: Renames EffectiveLength to EquivalentLength
2026-01-29 11:25:20 -05:00

105 lines
2.3 KiB
Swift

import Dependencies
import Foundation
import ManualDCore
import Testing
import URLRouting
@Suite("ProjectRouteTests")
struct ProjectRouteTests {
let router = SiteRoute.Api.router
@Test
func create() throws {
let json = """
{
\"name\": \"Test\",
\"streetAddress\": \"1234 Seasme Street\",
\"city\": \"Nowhere\",
\"state\": \"OH\",
\"zipCode\": \"55555\"
}
"""
var request = URLRequestData(
method: "POST",
path: "/api/v1/projects",
body: .init(json.utf8)
)
let route = try router.parse(&request)
#expect(
route
== .project(
.create(
.init(
name: "Test",
streetAddress: "1234 Seasme Street",
city: "Nowhere",
state: "OH",
zipCode: "55555"
)
)
)
)
}
@Test
func delete() throws {
let id = UUID(0)
var request = URLRequestData(
method: "DELETE",
path: "/api/v1/projects/\(id)"
)
let route = try router.parse(&request)
#expect(route == .project(.delete(id: id)))
}
@Test
func get() throws {
let id = UUID(0)
var request = URLRequestData(
method: "GET",
path: "/api/v1/projects/\(id)"
)
let route = try router.parse(&request)
#expect(route == .project(.get(id: id)))
}
@Test
func index() throws {
var request = URLRequestData(
method: "GET",
path: "/api/v1/projects"
)
let route = try router.parse(&request)
#expect(route == .project(.index))
}
@Test
func formData() throws {
let p = Body {
FormData {
Optionally {
Field("id", default: nil) { EquivalentLength.ID.parser() }
}
Field("name", .string)
Field("type") { EquivalentLength.EffectiveLengthType.parser() }
Many {
Field("straightLengths") {
Int.parser()
}
}
}
.map(.memberwise(SiteRoute.View.ProjectRoute.EquivalentLengthRoute.StepTwo.init))
}
var request = URLRequestData(
body: .init(
"name=Test&type=supply&straightLengths=20&straightLengths=10"
.utf8
)
)
let value = try p.parse(&request)
print(value)
#expect(value.straightLengths == [20, 10])
}
}