import Dependencies import Foundation import SharedModels import Testing import URLRouting @Suite("PurchaseOrderApiRouteTests") struct PurchaseOrderApiRouteTests { let router = SiteRoute.Api.router @Test func create() throws { let id = UUID(0) let json = """ { \"id\": 1, \"workOrder\": 12345, \"materials\": \"some\", \"customer\": \"Testy\", \"truckStock\": false, \"createdByID\": \"\(id)\", "createdForID\": \"\(id)\", "vendorBranchID\": \"\(id)\" } """ var request = URLRequestData( method: "POST", path: "/api/v1/purchase-orders", body: .init(json.utf8) ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.create(.init( id: 1, workOrder: 12345, materials: "some", customer: "Testy", truckStock: false, createdByID: id, createdForID: id, vendorBranchID: id )))) } @Test func delete() throws { let id = 1 var request = URLRequestData( method: "DELETE", path: "/api/v1/purchase-orders/\(id)" ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.delete(id: id))) } @Test func get() throws { let id = 1 var request = URLRequestData( method: "GET", path: "/api/v1/purchase-orders/\(id)" ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.get(id: id))) } @Test func index() throws { var request = URLRequestData( method: "GET", path: "/api/v1/purchase-orders" ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.index)) } @Test func page() throws { var request = URLRequestData( method: "GET", path: "/api/v1/purchase-orders/next" ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.page(page: 1, limit: 25))) var request2 = URLRequestData( method: "GET", path: "/api/v1/purchase-orders/next", query: ["page": ["2"], "limit": ["50"]] ) let route2 = try router.parse(&request2) #expect(route2 == .purchaseOrder(.page(page: 2, limit: 50))) } }