Files
vapor-po/Tests/ApiRouteTests/EmployeeApiRouteTests.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)
))
)
}
}