import Dependencies import Foundation import SharedModels import Testing import URLRouting @Suite("UserViewRouteTests") struct UserViewRouteTests { let router = ViewRoute.router @Test func create() throws { var request = URLRequestData( method: "POST", path: "/users", body: .init("username=foo&email=foo@bar.com&password=super-secret&confirmPassword=super-secret".utf8) ) let route = try router.parse(&request) #expect( route == .user(.create(.init( username: "foo", email: "foo@bar.com", password: "super-secret", confirmPassword: "super-secret" )))) } // @Test // func delete() throws { // let id = UUID(0) // var request = URLRequestData( // method: "DELETE", // path: "/users/\(id)" // ) // let route = try router.parse(&request) // #expect(route == .user(.delete(id: id))) // } @Test func form() throws { var request = URLRequestData( method: "GET", path: "/users/create" ) let route = try router.parse(&request) #expect(route == .user(.form)) } @Test func get() throws { let id = UUID(0) var request = URLRequestData( method: "GET", path: "/users/\(id)" ) let route = try router.parse(&request) #expect(route == .user(.get(id: id))) } @Test func index() throws { var request = URLRequestData( method: "GET", path: "/users" ) let route = try router.parse(&request) #expect(route == .user(.index)) } @Test func update() throws { let id = UUID(0) var request = URLRequestData( method: "PATCH", path: "/users/\(id)", body: .init("username=bar&email=bar@foo.com".utf8) ) let route = try router.parse(&request) #expect(route == .user(.update(id: id, updates: .init(username: "bar", email: "bar@foo.com")))) } }