feat: Adds api route tests. Tested user interface works as expected, still needs some work on vendors form.

This commit is contained in:
2025-01-20 16:44:12 -05:00
parent affd9b5d81
commit 410bbae1c8
23 changed files with 537 additions and 121 deletions

View File

@@ -2,9 +2,7 @@ import CasePathsCore
import Foundation
@preconcurrency import URLRouting
// TODO: Switch shared to be on API routes not view routes??
public enum ApiRoute: Sendable {
public enum ApiRoute: Sendable, Equatable {
case employee(EmployeeApiRoute)
case purchaseOrder(PurchaseOrderApiRoute)
@@ -37,7 +35,7 @@ public enum ApiRoute: Sendable {
}
}
public enum EmployeeApiRoute: Sendable {
public enum EmployeeApiRoute: Sendable, Equatable {
case create(Employee.Create)
case delete(id: Employee.ID)
case get(id: Employee.ID)
@@ -72,7 +70,7 @@ public enum ApiRoute: Sendable {
}
}
public enum PurchaseOrderApiRoute: Sendable {
public enum PurchaseOrderApiRoute: Sendable, Equatable {
case create(PurchaseOrder.Create)
case delete(id: PurchaseOrder.ID)
case get(id: PurchaseOrder.ID)
@@ -111,7 +109,7 @@ public enum ApiRoute: Sendable {
}
// TODO: Add login / logout.
public enum UserApiRoute: Sendable {
public enum UserApiRoute: Sendable, Equatable {
case create(User.Create)
case delete(id: User.ID)
case get(id: User.ID)
@@ -146,7 +144,7 @@ public enum ApiRoute: Sendable {
}
}
public enum VendorApiRoute: Sendable {
public enum VendorApiRoute: Sendable, Equatable {
case index(withBranches: Bool? = nil)
case create(Vendor.Create)
case delete(id: Vendor.ID)
@@ -173,8 +171,10 @@ public enum ApiRoute: Sendable {
Path { rootPath }
Method.get
Query {
Field("branches", default: nil) {
Optionally { Bool.parser() }
Optionally {
Field("branches", default: nil) {
Bool.parser()
}
}
}
}
@@ -186,7 +186,7 @@ public enum ApiRoute: Sendable {
}
}
public enum VendorBranchApiRoute: Sendable {
public enum VendorBranchApiRoute: Sendable, Equatable {
case create(VendorBranch.Create)
case delete(id: VendorBranch.ID)
case get(id: VendorBranch.ID)
@@ -212,7 +212,7 @@ public enum ApiRoute: Sendable {
Path { "vendors"; "branches" }
Method.get
Query {
Field("vendorID", default: nil) { Optionally { VendorBranch.ID.parser() } }
Optionally { Field("vendorID", default: nil) { VendorBranch.ID.parser() } }
}
}
Route(.case(Self.update(id:updates:))) {