84 lines
1.8 KiB
Swift
84 lines
1.8 KiB
Swift
import Dependencies
|
|
import Foundation
|
|
import SharedModels
|
|
import Testing
|
|
import URLRouting
|
|
|
|
@Suite("VendorApiRouteTests")
|
|
struct VendorApiRouteTests {
|
|
let router = SiteRoute.Api.router
|
|
|
|
@Test
|
|
func create() throws {
|
|
let json = """
|
|
{
|
|
\"name\": \"Test\"
|
|
}
|
|
"""
|
|
var request = URLRequestData(
|
|
method: "POST",
|
|
path: "/api/v1/vendors",
|
|
body: .init(json.utf8)
|
|
)
|
|
let route = try router.parse(&request)
|
|
#expect(route == .vendor(.create(.init(name: "Test"))))
|
|
}
|
|
|
|
@Test
|
|
func delete() throws {
|
|
let id = UUID(0)
|
|
var request = URLRequestData(
|
|
method: "DELETE",
|
|
path: "/api/v1/vendors/\(id)"
|
|
)
|
|
let route = try router.parse(&request)
|
|
#expect(route == .vendor(.delete(id: id)))
|
|
}
|
|
|
|
@Test
|
|
func get() throws {
|
|
let id = UUID(0)
|
|
var request = URLRequestData(
|
|
method: "GET",
|
|
path: "/api/v1/vendors/\(id)"
|
|
)
|
|
let route = try router.parse(&request)
|
|
#expect(route == .vendor(.get(id: id)))
|
|
}
|
|
|
|
@Test
|
|
func index() throws {
|
|
var request = URLRequestData(
|
|
method: "GET",
|
|
path: "/api/v1/vendors"
|
|
)
|
|
let route = try router.parse(&request)
|
|
#expect(route == .vendor(.index()))
|
|
|
|
var request2 = URLRequestData(
|
|
method: "GET",
|
|
path: "/api/v1/vendors",
|
|
query: ["branches": ["true"]]
|
|
)
|
|
let route2 = try router.parse(&request2)
|
|
#expect(route2 == .vendor(.index(withBranches: true)))
|
|
}
|
|
|
|
@Test
|
|
func update() throws {
|
|
let id = UUID(0)
|
|
let json = """
|
|
{
|
|
\"name\": \"Test\"
|
|
}
|
|
"""
|
|
var request = URLRequestData(
|
|
method: "PUT",
|
|
path: "/api/v1/vendors/\(id)",
|
|
body: .init(json.utf8)
|
|
)
|
|
let route = try router.parse(&request)
|
|
#expect(route == .vendor(.update(id: id, updates: .init(name: "Test"))))
|
|
}
|
|
}
|