95 lines
1.9 KiB
Swift
95 lines
1.9 KiB
Swift
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)
|
|
))
|
|
)
|
|
}
|
|
|
|
}
|