import Dependencies import Foundation import SharedModels import Testing import URLRouting @Suite("EmployeeApiRouteTests") struct EmployeeApiRouteTests { let router = SiteRoute.Api.router @Test func employeeCreate() throws { let json = """ { \"firstName\": \"Blob\", \"lastName\": \"Esquire\", \"active\": true } """ var request = URLRequestData( method: "POST", path: "/api/v1/employees", body: .init(json.utf8) ) let route = try router.parse(&request) #expect( route == .employee(.create(.init(firstName: "Blob", lastName: "Esquire", active: true))) ) } @Test func employeeDelete() throws { let id = UUID(0) var request = URLRequestData( method: "DELETE", path: "/api/v1/employees/\(id)" ) let route = try router.parse(&request) #expect( route == .employee(.delete(id: id)) ) } @Test func employeeGet() throws { let id = UUID(0) var request = URLRequestData( method: "GET", path: "/api/v1/employees/\(id)" ) let route = try router.parse(&request) #expect( route == .employee(.get(id: id)) ) } @Test func employeeIndex() throws { var request = URLRequestData( method: "GET", path: "/api/v1/employees" ) let route = try router.parse(&request) #expect( route == .employee(.index) // route == .employee(\.index) ) } @Test func employeeUpdate() throws { let id = UUID(0) let json = """ { \"firstName\": \"Blob\", \"lastName\": \"Esquire\", \"active\": true } """ var request = URLRequestData( method: "PUT", path: "/api/v1/employees/\(id)", body: .init(json.utf8) ) let route = try router.parse(&request) #expect( route == .employee(.update( id: id, updates: .init(firstName: "Blob", lastName: "Esquire", active: true) )) ) } }