import Dependencies import Foundation import SharedModels import Testing import URLRouting @Suite("PurchaseOrderViewRouteTests") struct PurchaseOrderViewRouteTests { let router = SiteRoute.View.router @Test func create() throws { let id = UUID(0) var request = URLRequestData( method: "POST", path: "/purchase-orders", body: .init("id=1&workOrder=12345&materials=some&customer=Testy&truckStock=false&createdByID=\(id)&createdForID=\(id)&vendorBranchID=\(id)".utf8) ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.create(.init( id: 1, workOrder: 12345, materials: "some", customer: "Testy", truckStock: false, createdForID: id, vendorBranchID: id )))) } // @Test // func delete() throws { // let id = 1 // var request = URLRequestData( // method: "DELETE", // path: "/purchase-orders/\(id)" // ) // let route = try router.parse(&request) // #expect(route == .purchaseOrder(.delete(id: id))) // } @Test func form() throws { var request = URLRequestData( method: "GET", path: "/purchase-orders/create" ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.form)) } @Test func get() throws { let id = 1 var request = URLRequestData( method: "GET", path: "/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: "/purchase-orders" ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.index)) } @Test func page() throws { var request = URLRequestData( method: "GET", path: "/purchase-orders/next" ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.page(page: 1, limit: 25))) var request2 = URLRequestData( method: "GET", path: "/purchase-orders/next", query: ["page": ["2"], "limit": ["50"]] ) let route2 = try router.parse(&request2) #expect(route2 == .purchaseOrder(.page(page: 2, limit: 50))) } @Test func searchIndex() throws { var request = URLRequestData( method: "GET", path: "/purchase-orders/search", query: ["context": ["customer"]] ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.search(.index(context: .customer, table: nil)))) var request2 = URLRequestData( method: "GET", path: "/purchase-orders/search" ) let route2 = try router.parse(&request2) #expect(route2 == .purchaseOrder(.search(.index(context: .employee, table: nil)))) var request3 = URLRequestData( method: "GET", path: "/purchase-orders/search", query: ["context": ["vendor"], "table": ["true"]] ) let route3 = try router.parse(&request3) #expect(route3 == .purchaseOrder(.search(.index(context: .vendor, table: true)))) } @Test func searchPost() throws { let id = UUID(0) var request = URLRequestData( method: "POST", path: "/purchase-orders/search", body: .init("context=employee&createdForID=\(id)".utf8) ) let route = try router.parse(&request) #expect(route == .purchaseOrder(.search(.request(.init(context: .employee, createdForID: id))))) } }