feat: Refactoring route declarations.

This commit is contained in:
2025-01-26 01:16:59 -05:00
parent 0fad024350
commit 4dc928e1f4
34 changed files with 592 additions and 606 deletions

View File

@@ -14,15 +14,15 @@ public extension DependencyValues {
public struct ApiController: Sendable { public struct ApiController: Sendable {
public var json: @Sendable (Request) async throws -> (any Encodable)? public var json: @Sendable (Request) async throws -> (any Encodable)?
public func json(_ route: ApiRoute, logger: Logger) async throws -> (any Encodable)? { public func json(_ route: SiteRoute.Api, logger: Logger) async throws -> (any Encodable)? {
try await json(.init(route, logger: logger)) try await json(.init(route, logger: logger))
} }
public struct Request: Sendable { public struct Request: Sendable {
public let route: ApiRoute public let route: SiteRoute.Api
public let logger: Logger public let logger: Logger
public init(_ route: ApiRoute, logger: Logger) { public init(_ route: SiteRoute.Api, logger: Logger) {
self.route = route self.route = route
self.logger = logger self.logger = logger
} }

View File

@@ -41,7 +41,7 @@ private struct TokenResponse: Encodable {
} }
private extension ApiRoute.EmployeeRoute { private extension SiteRoute.Api.EmployeeRoute {
func handleApiRequest(logger: Logger) async throws -> (any Encodable)? { func handleApiRequest(logger: Logger) async throws -> (any Encodable)? {
@Dependency(\.database) var database @Dependency(\.database) var database
@@ -66,7 +66,7 @@ private extension ApiRoute.EmployeeRoute {
} }
} }
private extension ApiRoute.PurchaseOrderRoute { private extension SiteRoute.Api.PurchaseOrderRoute {
func handleApiRequest(logger: Logger) async throws -> (any Encodable)? { func handleApiRequest(logger: Logger) async throws -> (any Encodable)? {
@Dependency(\.database.purchaseOrders) var purchaseOrders @Dependency(\.database.purchaseOrders) var purchaseOrders
@@ -90,8 +90,7 @@ private extension ApiRoute.PurchaseOrderRoute {
} }
} }
// TODO: Add Login. private extension SiteRoute.Api.UserRoute {
private extension ApiRoute.UserRoute {
func handleApiRequest(logger: Logger) async throws -> (any Encodable)? { func handleApiRequest(logger: Logger) async throws -> (any Encodable)? {
@Dependency(\.database.users) var users @Dependency(\.database.users) var users
@@ -117,7 +116,7 @@ private extension ApiRoute.UserRoute {
} }
} }
private extension ApiRoute.VendorRoute { private extension SiteRoute.Api.VendorRoute {
func handleApiRequest(logger: Logger) async throws -> (any Encodable)? { func handleApiRequest(logger: Logger) async throws -> (any Encodable)? {
@Dependency(\.database.vendors) var vendors @Dependency(\.database.vendors) var vendors
switch self { switch self {
@@ -143,7 +142,7 @@ private extension ApiRoute.VendorRoute {
} }
} }
private extension ApiRoute.VendorBranchRoute { private extension SiteRoute.Api.VendorBranchRoute {
func handleApiRequest(logger: Logger) async throws -> (any Encodable)? { func handleApiRequest(logger: Logger) async throws -> (any Encodable)? {
@Dependency(\.database.vendorBranches) var vendorBranches @Dependency(\.database.vendorBranches) var vendorBranches
switch self { switch self {

View File

@@ -4,7 +4,7 @@ import Vapor
extension ApiController { extension ApiController {
func respond(_ route: ApiRoute, request: Vapor.Request) async throws -> any AsyncResponseEncodable { func respond(_ route: SiteRoute.Api, request: Vapor.Request) async throws -> any AsyncResponseEncodable {
guard let encodable = try await json(route, logger: request.logger) else { guard let encodable = try await json(route, logger: request.logger) else {
return HTTPStatus.ok return HTTPStatus.ok
} }

View File

@@ -5,7 +5,7 @@ import VaporElementary
import ViewController import ViewController
extension ViewController { extension ViewController {
func respond(route: ViewRoute, request: Vapor.Request) async throws -> any AsyncResponseEncodable { func respond(route: SiteRoute.View, request: Vapor.Request) async throws -> any AsyncResponseEncodable {
let html = try await view( let html = try await view(
for: route, for: route,
isHtmxRequest: request.isHtmxRequest, isHtmxRequest: request.isHtmxRequest,

View File

@@ -9,7 +9,7 @@ private let apiMiddleware: [any Middleware] = [
User.guardMiddleware() User.guardMiddleware()
] ]
extension ApiRoute { extension SiteRoute.Api {
var middleware: [any Middleware]? { var middleware: [any Middleware]? {
switch self { switch self {
case .login: return nil case .login: return nil

View File

@@ -12,7 +12,7 @@ private let viewProtectedMiddleware: [any Middleware] = [
} }
] ]
extension SharedModels.ViewRoute { extension SiteRoute.View {
var middleware: [any Middleware]? { var middleware: [any Middleware]? {
switch self { switch self {

View File

@@ -73,7 +73,7 @@ private func setupDatabase(
private func addRoutes(to app: Application) { private func addRoutes(to app: Application) {
// Redirect the index path to purchase order route. // Redirect the index path to purchase order route.
app.get { req in app.get { req in
req.redirect(to: ViewRoute.router.path(for: .purchaseOrder(.index))) req.redirect(to: SiteRoute.View.router.path(for: .purchaseOrder(.index)))
} }
app.mount( app.mount(

View File

@@ -2,7 +2,9 @@ import CasePaths
import Foundation import Foundation
@preconcurrency import URLRouting @preconcurrency import URLRouting
public enum ApiRoute: Sendable, Equatable { public extension SiteRoute {
enum Api: Sendable, Equatable {
case employee(EmployeeRoute) case employee(EmployeeRoute)
case login(User.Login) case login(User.Login)
@@ -227,3 +229,4 @@ public enum ApiRoute: Sendable, Equatable {
} }
} }
} }
}

View File

@@ -3,16 +3,16 @@ import Foundation
@preconcurrency import URLRouting @preconcurrency import URLRouting
public enum SiteRoute: Sendable { public enum SiteRoute: Sendable {
case api(ApiRoute) case api(SiteRoute.Api)
case health case health
case view(ViewRoute) case view(SiteRoute.View)
public static let router = OneOf { public static let router = OneOf {
Route(.case(Self.view)) { ViewRoute.router } Route(.case(Self.view)) { SiteRoute.View.router }
Route(.case(Self.health)) { Route(.case(Self.health)) {
Path { "health" } Path { "health" }
Method.get Method.get
} }
Route(.case(Self.api)) { ApiRoute.router } Route(.case(Self.api)) { SiteRoute.Api.router }
} }
} }

View File

@@ -2,33 +2,31 @@ import CasePathsCore
import Foundation import Foundation
@preconcurrency import URLRouting @preconcurrency import URLRouting
public enum ViewRoute: Sendable, Equatable { public extension SiteRoute {
enum View: Sendable, Equatable {
case employee(EmployeeRoute) case employee(SiteRoute.View.EmployeeRoute)
case login(LoginRoute) case login(SiteRoute.View.LoginRoute)
case purchaseOrder(PurchaseOrderRoute) case purchaseOrder(SiteRoute.View.PurchaseOrderRoute)
case user(UserRoute) case user(SiteRoute.View.UserRoute)
case vendor(VendorRoute) case vendor(SiteRoute.View.VendorRoute)
case vendorBranch(VendorBranchRoute) case vendorBranch(SiteRoute.View.VendorBranchRoute)
public static let router = OneOf { public static let router = OneOf {
Route(.case(Self.employee)) { EmployeeRoute.router } Route(.case(Self.employee)) { SiteRoute.View.EmployeeRoute.router }
Route(.case(Self.login)) { LoginRoute.router } Route(.case(Self.login)) { SiteRoute.View.LoginRoute.router }
Route(.case(Self.purchaseOrder)) { PurchaseOrderRoute.router } Route(.case(Self.purchaseOrder)) { SiteRoute.View.PurchaseOrderRoute.router }
Route(.case(Self.user)) { UserRoute.router } Route(.case(Self.user)) { SiteRoute.View.UserRoute.router }
Route(.case(Self.vendor)) { VendorRoute.router } Route(.case(Self.vendor)) { SiteRoute.View.VendorRoute.router }
Route(.case(Self.vendorBranch)) { VendorBranchRoute.router } Route(.case(Self.vendorBranch)) { SiteRoute.View.VendorBranchRoute.router }
}
} }
public extension ViewRoute { public enum EmployeeRoute: Sendable, Equatable {
enum EmployeeRoute: Sendable, Equatable {
case create(Employee.Create) case create(Employee.Create)
case form case form
case get(id: Employee.ID) case get(id: Employee.ID)
case index case index
case select(context: SelectContext) case select(context: SiteRoute.View.SelectContext)
case update(id: Employee.ID, updates: Employee.Update) case update(id: Employee.ID, updates: Employee.Update)
static let rootPath = "employees" static let rootPath = "employees"
@@ -79,11 +77,8 @@ public extension ViewRoute {
} }
} }
} }
}
public extension ViewRoute { public enum LoginRoute: Sendable, Equatable {
enum LoginRoute: Sendable, Equatable {
case index(next: String? = nil) case index(next: String? = nil)
case post(Request) case post(Request)
@@ -131,10 +126,8 @@ public extension ViewRoute {
} }
} }
} }
}
public extension ViewRoute { public enum PurchaseOrderRoute: Sendable, Equatable {
enum PurchaseOrderRoute: Sendable, Equatable {
case create(PurchaseOrder.Create) case create(PurchaseOrder.Create)
case form case form
case get(id: PurchaseOrder.ID) case get(id: PurchaseOrder.ID)
@@ -244,19 +237,13 @@ public extension ViewRoute {
} }
} }
} }
}
public extension ViewRoute { public enum SelectContext: String, Codable, Equatable, Sendable, CaseIterable {
enum SelectContext: String, Codable, Equatable, Sendable, CaseIterable {
case purchaseOrderForm case purchaseOrderForm
case purchaseOrderSearch case purchaseOrderSearch
} }
} public enum UserRoute: Sendable, Equatable {
public extension ViewRoute {
enum UserRoute: Sendable, Equatable {
case create(User.Create) case create(User.Create)
case form case form
case get(id: User.ID) case get(id: User.ID)
@@ -307,11 +294,8 @@ public extension ViewRoute {
} }
} }
} }
}
public extension ViewRoute { public enum VendorRoute: Sendable, Equatable {
enum VendorRoute: Sendable, Equatable {
case create(Vendor.Create) case create(Vendor.Create)
case form case form
case get(id: Vendor.ID) case get(id: Vendor.ID)
@@ -356,14 +340,11 @@ public extension ViewRoute {
} }
} }
} }
}
public extension ViewRoute { public enum VendorBranchRoute: Sendable, Equatable {
enum VendorBranchRoute: Sendable, Equatable {
case create(VendorBranch.Create) case create(VendorBranch.Create)
case index(for: Vendor.ID? = nil) case index(for: Vendor.ID? = nil)
case select(context: ViewRoute.SelectContext) case select(context: SiteRoute.View.SelectContext)
public static let router = OneOf { public static let router = OneOf {
Route(.case(Self.create)) { Route(.case(Self.create)) {
@@ -388,7 +369,8 @@ public extension ViewRoute {
Path { "vendors"; "branches"; "select" } Path { "vendors"; "branches"; "select" }
Method.get Method.get
Query { Query {
Field("context") { SelectContext.parser() } Field("context") { SiteRoute.View.SelectContext.parser() }
}
} }
} }
} }

View File

@@ -21,7 +21,7 @@ public struct ViewController: Sendable {
@Sendable @Sendable
public func view( public func view(
for route: ViewRoute, for route: SiteRoute.View,
isHtmxRequest: Bool, isHtmxRequest: Bool,
logger: Logger, logger: Logger,
authenticate: @escaping AuthenticateHandler authenticate: @escaping AuthenticateHandler
@@ -30,13 +30,13 @@ public struct ViewController: Sendable {
} }
public struct Request: Sendable { public struct Request: Sendable {
public let route: ViewRoute public let route: SiteRoute.View
public let isHtmxRequest: Bool public let isHtmxRequest: Bool
public let authenticate: AuthenticateHandler public let authenticate: AuthenticateHandler
public let logger: Logger public let logger: Logger
public init( public init(
_ route: ViewRoute, _ route: SiteRoute.View,
isHtmxRequest: Bool, isHtmxRequest: Bool,
authenticate: @escaping AuthenticateHandler, authenticate: @escaping AuthenticateHandler,
logger: Logger logger: Logger

View File

@@ -6,7 +6,7 @@ import SharedModels
import Vapor import Vapor
import ViewController import ViewController
public extension SharedModels.ViewRoute { public extension SiteRoute.View {
@Sendable @Sendable
func view( func view(
@@ -52,7 +52,7 @@ public extension SharedModels.ViewRoute {
} }
} }
extension SharedModels.ViewRoute.EmployeeRoute { extension SiteRoute.View.EmployeeRoute {
private func mainPage<C: HTML>( private func mainPage<C: HTML>(
_ html: C _ html: C
@@ -98,7 +98,7 @@ extension SharedModels.ViewRoute.EmployeeRoute {
} }
extension SharedModels.ViewRoute.PurchaseOrderRoute { extension SiteRoute.View.PurchaseOrderRoute {
private func mainPage<C: HTML>( private func mainPage<C: HTML>(
_ html: C _ html: C
) async throws -> AnySendableHTML where C: Sendable { ) async throws -> AnySendableHTML where C: Sendable {
@@ -148,7 +148,7 @@ extension SharedModels.ViewRoute.PurchaseOrderRoute {
} }
extension SharedModels.ViewRoute.PurchaseOrderRoute.Search { extension SiteRoute.View.PurchaseOrderRoute.Search {
func mainPage(search: PurchaseOrderSearch = .init()) -> AnySendableHTML { func mainPage(search: PurchaseOrderSearch = .init()) -> AnySendableHTML {
MainPage(displayNav: true, route: .purchaseOrders) { MainPage(displayNav: true, route: .purchaseOrders) {
@@ -180,7 +180,7 @@ extension SharedModels.ViewRoute.PurchaseOrderRoute.Search {
} }
} }
extension SharedModels.ViewRoute.UserRoute { extension SiteRoute.View.UserRoute {
private func mainPage<C: HTML>(_ html: C) async throws -> AnySendableHTML where C: Sendable { private func mainPage<C: HTML>(_ html: C) async throws -> AnySendableHTML where C: Sendable {
@Dependency(\.database) var database @Dependency(\.database) var database
@@ -220,7 +220,7 @@ extension SharedModels.ViewRoute.UserRoute {
} }
extension SharedModels.ViewRoute.VendorRoute { extension SiteRoute.View.VendorRoute {
private func mainPage<C: HTML>(_ html: C) async throws -> AnySendableHTML where C: Sendable { private func mainPage<C: HTML>(_ html: C) async throws -> AnySendableHTML where C: Sendable {
@Dependency(\.database) var database @Dependency(\.database) var database
let vendors = try await database.vendors.fetchAll(.withBranches) let vendors = try await database.vendors.fetchAll(.withBranches)
@@ -267,7 +267,7 @@ extension SharedModels.ViewRoute.VendorRoute {
} }
} }
extension SharedModels.ViewRoute.VendorBranchRoute { extension SiteRoute.View.VendorBranchRoute {
@Sendable @Sendable
func view(isHtmxRequest: Bool) async throws -> AnySendableHTML { func view(isHtmxRequest: Bool) async throws -> AnySendableHTML {
@@ -292,7 +292,7 @@ extension SharedModels.ViewRoute.VendorBranchRoute {
} }
} }
extension SharedModels.ViewRoute.PurchaseOrderRoute.Search.Request { extension SiteRoute.View.PurchaseOrderRoute.Search.Request {
@Sendable @Sendable
func toDatabaseQuery() throws -> PurchaseOrder.SearchContext { func toDatabaseQuery() throws -> PurchaseOrder.SearchContext {
@@ -316,7 +316,7 @@ extension SharedModels.ViewRoute.PurchaseOrderRoute.Search.Request {
} }
} }
extension SharedModels.ViewRoute.SelectContext { extension SiteRoute.View.SelectContext {
@Sendable @Sendable
func toHTML(employees: [Employee]) -> EmployeeSelect { func toHTML(employees: [Employee]) -> EmployeeSelect {

View File

@@ -74,7 +74,7 @@ struct EmployeeForm: HTML {
return "Update" return "Update"
} }
private var targetURL: SharedModels.ViewRoute { private var targetURL: SiteRoute.View {
guard let employee else { return .employee(.index) } guard let employee else { return .employee(.index) }
return .employee(.get(id: employee.id)) return .employee(.get(id: employee.id))
} }

View File

@@ -4,23 +4,23 @@ import SharedModels
extension HTMLAttribute.hx { extension HTMLAttribute.hx {
@Sendable @Sendable
static func get(route: SharedModels.ViewRoute) -> HTMLAttribute { static func get(route: SiteRoute.View) -> HTMLAttribute {
get(SharedModels.ViewRoute.router.path(for: route)) get(SiteRoute.View.router.path(for: route))
} }
@Sendable @Sendable
static func post(route: SharedModels.ViewRoute) -> HTMLAttribute { static func post(route: SiteRoute.View) -> HTMLAttribute {
post(SharedModels.ViewRoute.router.path(for: route)) post(SiteRoute.View.router.path(for: route))
} }
@Sendable @Sendable
static func put(route: SharedModels.ViewRoute) -> HTMLAttribute { static func put(route: SiteRoute.View) -> HTMLAttribute {
put(SharedModels.ViewRoute.router.path(for: route)) put(SiteRoute.View.router.path(for: route))
} }
@Sendable @Sendable
static func delete(route: SharedModels.ApiRoute) -> HTMLAttribute { static func delete(route: SiteRoute.Api) -> HTMLAttribute {
delete(SharedModels.ApiRoute.router.path(for: route)) delete(SiteRoute.Api.router.path(for: route))
} }
} }
@@ -65,8 +65,8 @@ indirect enum HXOnValue: Sendable {
} }
@Sendable @Sendable
static func setWindowLocation(to route: ViewRoute) -> Self { static func setWindowLocation(to route: SiteRoute.View) -> Self {
setWindowLocation(ViewRoute.router.path(for: route)) setWindowLocation(SiteRoute.View.router.path(for: route))
} }
@Sendable @Sendable

View File

@@ -53,7 +53,7 @@ struct LoggedIn: HTML, Sendable {
let next: String? let next: String?
var content: some HTML { var content: some HTML {
div( div(
.hx.get(nextRoute ?? ViewRoute.router.path(for: .purchaseOrder(.index))), .hx.get(nextRoute ?? SiteRoute.View.router.path(for: .purchaseOrder(.index))),
.hx.pushURL(true), .hx.pushURL(true),
.hx.target(.body), .hx.target(.body),
.hx.trigger(.event(.revealed)), .hx.trigger(.event(.revealed)),
@@ -66,7 +66,9 @@ struct LoggedIn: HTML, Sendable {
// HACK: to get search route to work after login. // HACK: to get search route to work after login.
var nextRoute: String? { var nextRoute: String? {
if let next, next.contains("search") { if let next, next.contains("search") {
return ViewRoute.router.path(for: .purchaseOrder(.search(.index(context: .employee, table: true)))) return SiteRoute.View.router.path(
for: .purchaseOrder(.search(.index(context: .employee, table: true)))
)
} }
return next return next
} }

View File

@@ -5,7 +5,7 @@ import Vapor
struct PurchaseOrderSearch: HTML, Sendable { struct PurchaseOrderSearch: HTML, Sendable {
typealias Context = SharedModels.ViewRoute.PurchaseOrderRoute.Search.Context typealias Context = SiteRoute.View.PurchaseOrderRoute.Search.Context
let context: Context let context: Context

View File

@@ -5,7 +5,7 @@ import SharedModels
import Vapor import Vapor
struct PurchaseOrderTable: HTML, Sendable { struct PurchaseOrderTable: HTML, Sendable {
typealias SearchContext = SharedModels.ViewRoute.PurchaseOrderRoute.Search.Context typealias SearchContext = SiteRoute.View.PurchaseOrderRoute.Search.Context
let page: Page<PurchaseOrder> let page: Page<PurchaseOrder>
let context: Context let context: Context

View File

@@ -101,7 +101,7 @@ struct UserForm: HTML, Sendable {
} }
} }
var targetURL: ViewRoute { var targetURL: SiteRoute.View {
switch self { switch self {
case .create: case .create:
return .user(.index) return .user(.index)

View File

@@ -22,10 +22,10 @@ enum Button {
} }
@Sendable @Sendable
static func close(id: IDKey, resetURL route: ViewRoute? = nil) -> some HTML<HTMLTag.button> { static func close(id: IDKey, resetURL route: SiteRoute.View? = nil) -> some HTML<HTMLTag.button> {
close( close(
id: id.description, id: id.description,
resetURL: route != nil ? ViewRoute.router.path(for: route!) : nil resetURL: route != nil ? SiteRoute.View.router.path(for: route!) : nil
) )
} }

View File

@@ -62,7 +62,7 @@ extension Float where B == DefaultCloseButton {
init( init(
id: String = "float", id: String = "float",
shouldDisplay: Bool, shouldDisplay: Bool,
resetURL route: ViewRoute? = nil, resetURL route: SiteRoute.View? = nil,
@HTMLBuilder body: () -> C @HTMLBuilder body: () -> C
) { ) {
self.init( self.init(
@@ -71,7 +71,7 @@ extension Float where B == DefaultCloseButton {
body: body, body: body,
closeButton: { DefaultCloseButton( closeButton: { DefaultCloseButton(
id: id, id: id,
resetURL: route != nil ? ViewRoute.router.path(for: route!) : nil resetURL: route != nil ? SiteRoute.View.router.path(for: route!) : nil
) } ) }
) )
} }

View File

@@ -6,7 +6,7 @@ import Vapor
struct EmployeeSelect: HTML, Sendable { struct EmployeeSelect: HTML, Sendable {
let employees: [Employee]? let employees: [Employee]?
let context: ViewRoute.SelectContext let context: SiteRoute.View.SelectContext
var content: some HTML { var content: some HTML {
if let employees { if let employees {
@@ -42,7 +42,7 @@ struct EmployeeSelect: HTML, Sendable {
struct VendorBranchSelect: HTML, Sendable { struct VendorBranchSelect: HTML, Sendable {
let branches: [VendorBranch.Detail]? let branches: [VendorBranch.Detail]?
let context: ViewRoute.SelectContext let context: SiteRoute.View.SelectContext
var content: some HTML { var content: some HTML {
if let branches { if let branches {
@@ -79,7 +79,7 @@ struct VendorBranchSelect: HTML, Sendable {
// case purchaseOrderForm // case purchaseOrderForm
// case purchaseOrderSearch // case purchaseOrderSearch
extension ViewRoute.SelectContext { extension SiteRoute.View.SelectContext {
var classString: String { var classString: String {
switch self { switch self {
case .purchaseOrderForm: return "col-3" case .purchaseOrderForm: return "col-3"

View File

@@ -85,7 +85,7 @@ struct VendorForm: HTML, Sendable {
return "Update" return "Update"
} }
var targetURL: SharedModels.ViewRoute { var targetURL: SiteRoute.View {
guard let vendor else { return .vendor(.index) } guard let vendor else { return .vendor(.index) }
return .vendor(.get(id: vendor.id)) return .vendor(.get(id: vendor.id))
} }

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("EmployeeApiRouteTests") @Suite("EmployeeApiRouteTests")
struct EmployeeApiRouteTests { struct EmployeeApiRouteTests {
let router = ApiRoute.router let router = SiteRoute.Api.router
@Test @Test
func employeeCreate() throws { func employeeCreate() throws {

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("PurchaseOrderApiRouteTests") @Suite("PurchaseOrderApiRouteTests")
struct PurchaseOrderApiRouteTests { struct PurchaseOrderApiRouteTests {
let router = ApiRoute.router let router = SiteRoute.Api.router
@Test @Test
func create() throws { func create() throws {

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("UserApiRouteTests") @Suite("UserApiRouteTests")
struct UserApiRouteTests { struct UserApiRouteTests {
let router = ApiRoute.router let router = SiteRoute.Api.router
@Test @Test
func create() throws { func create() throws {

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("VendorApiRouteTests") @Suite("VendorApiRouteTests")
struct VendorApiRouteTests { struct VendorApiRouteTests {
let router = ApiRoute.router let router = SiteRoute.Api.router
@Test @Test
func create() throws { func create() throws {

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("VendorBranchApiRouteTests") @Suite("VendorBranchApiRouteTests")
struct VendorBranchApiRouteTests { struct VendorBranchApiRouteTests {
let router = ApiRoute.router let router = SiteRoute.Api.router
@Test @Test
func create() throws { func create() throws {

View File

@@ -90,7 +90,7 @@ struct ViewControllerTests {
htmlString = try await viewController.render(.purchaseOrder(.page(page: 1, limit: 25))) htmlString = try await viewController.render(.purchaseOrder(.page(page: 1, limit: 25)))
assertSnapshot(of: htmlString, as: .html) assertSnapshot(of: htmlString, as: .html)
for context in ViewRoute.PurchaseOrderRoute.Search.Context.allCases { for context in SiteRoute.View.PurchaseOrderRoute.Search.Context.allCases {
htmlString = try await viewController.render(.purchaseOrder(.search(.index( htmlString = try await viewController.render(.purchaseOrder(.search(.index(
context: context, context: context,
table: true table: true
@@ -189,7 +189,7 @@ struct ViewControllerTests {
extension ViewController { extension ViewController {
func render(_ route: ViewRoute) async throws -> String { func render(_ route: SiteRoute.View) async throws -> String {
let html = try await view( let html = try await view(
for: route, for: route,
isHtmxRequest: true, isHtmxRequest: true,

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("EmployeeViewRouteTests") @Suite("EmployeeViewRouteTests")
struct EmployeeViewRouteTests { struct EmployeeViewRouteTests {
let router = ViewRoute.router let router = SiteRoute.View.router
@Test @Test
func employeeCreate() throws { func employeeCreate() throws {

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("LoginViewRouteTests") @Suite("LoginViewRouteTests")
struct LoginViewRouteTests { struct LoginViewRouteTests {
let router = ViewRoute.router let router = SiteRoute.View.router
@Test @Test
func get() throws { func get() throws {

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("PurchaseOrderViewRouteTests") @Suite("PurchaseOrderViewRouteTests")
struct PurchaseOrderViewRouteTests { struct PurchaseOrderViewRouteTests {
let router = ViewRoute.router let router = SiteRoute.View.router
@Test @Test
func create() throws { func create() throws {

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("UserViewRouteTests") @Suite("UserViewRouteTests")
struct UserViewRouteTests { struct UserViewRouteTests {
let router = ViewRoute.router let router = SiteRoute.View.router
@Test @Test
func create() throws { func create() throws {

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("VendorBranchViewRouteTests") @Suite("VendorBranchViewRouteTests")
struct VendorBranchViewRouteTests { struct VendorBranchViewRouteTests {
let router = ViewRoute.router let router = SiteRoute.View.router
@Test @Test
func create() throws { func create() throws {

View File

@@ -6,7 +6,7 @@ import URLRouting
@Suite("VendorViewRouteTests") @Suite("VendorViewRouteTests")
struct VendorViewRouteTests { struct VendorViewRouteTests {
let router = ViewRoute.router let router = SiteRoute.View.router
@Test @Test
func create() throws { func create() throws {