feat: Adds api route tests. Tested user interface works as expected, still needs some work on vendors form.
This commit is contained in:
93
Tests/ApiRouteTests/EmployeeApiRouteTests.swift
Normal file
93
Tests/ApiRouteTests/EmployeeApiRouteTests.swift
Normal file
@@ -0,0 +1,93 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
@Suite("EmployeeApiRouteTests")
|
||||
struct EmployeeApiRouteTests {
|
||||
let router = ApiRoute.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)
|
||||
)
|
||||
}
|
||||
|
||||
@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)
|
||||
))
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
32
Tests/ApiRouteTests/LoginApiRouteTests.swift
Normal file
32
Tests/ApiRouteTests/LoginApiRouteTests.swift
Normal file
@@ -0,0 +1,32 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
// @Suite("LoginViewRouteTests")
|
||||
// struct LoginViewRouteTests {
|
||||
// let router = ViewRoute.router
|
||||
//
|
||||
// @Test
|
||||
// func get() throws {
|
||||
// var request = URLRequestData(
|
||||
// method: "GET",
|
||||
// path: "/login",
|
||||
// query: ["next": ["/users"]]
|
||||
// )
|
||||
// let route = try router.parse(&request)
|
||||
// #expect(route == .login(.index(next: "/users")))
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// func post() throws {
|
||||
// var request = URLRequestData(
|
||||
// method: "POST",
|
||||
// path: "/login",
|
||||
// body: .init("username=foo&password=super-secret&next=/users".utf8)
|
||||
// )
|
||||
// let route = try router.parse(&request)
|
||||
// #expect(route == .login(.post(.init(username: "foo", password: "super-secret", next: "/users"))))
|
||||
// }
|
||||
// }
|
||||
93
Tests/ApiRouteTests/PurchaseOrderApiRouteTests.swift
Normal file
93
Tests/ApiRouteTests/PurchaseOrderApiRouteTests.swift
Normal file
@@ -0,0 +1,93 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
@Suite("PurchaseOrderApiRouteTests")
|
||||
struct PurchaseOrderApiRouteTests {
|
||||
let router = ApiRoute.router
|
||||
|
||||
@Test
|
||||
func create() throws {
|
||||
let id = UUID(0)
|
||||
let json = """
|
||||
{
|
||||
\"id\": 1,
|
||||
\"workOrder\": 12345,
|
||||
\"materials\": \"some\",
|
||||
\"customer\": \"Testy\",
|
||||
\"truckStock\": false,
|
||||
\"createdByID\": \"\(id)\",
|
||||
"createdForID\": \"\(id)\",
|
||||
"vendorBranchID\": \"\(id)\"
|
||||
}
|
||||
"""
|
||||
var request = URLRequestData(
|
||||
method: "POST",
|
||||
path: "/api/v1/purchase-orders",
|
||||
body: .init(json.utf8)
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.create(.init(
|
||||
id: 1,
|
||||
workOrder: 12345,
|
||||
materials: "some",
|
||||
customer: "Testy",
|
||||
truckStock: false,
|
||||
createdByID: id,
|
||||
createdForID: id,
|
||||
vendorBranchID: id
|
||||
))))
|
||||
}
|
||||
|
||||
@Test
|
||||
func delete() throws {
|
||||
let id = 1
|
||||
var request = URLRequestData(
|
||||
method: "DELETE",
|
||||
path: "/api/v1/purchase-orders/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.delete(id: id)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func get() throws {
|
||||
let id = 1
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/api/v1/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: "/api/v1/purchase-orders"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.index))
|
||||
}
|
||||
|
||||
@Test
|
||||
func page() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/api/v1/purchase-orders/next"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.page(page: 1, limit: 25)))
|
||||
|
||||
var request2 = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/api/v1/purchase-orders/next",
|
||||
query: ["page": ["2"], "limit": ["50"]]
|
||||
)
|
||||
let route2 = try router.parse(&request2)
|
||||
#expect(route2 == .purchaseOrder(.page(page: 2, limit: 50)))
|
||||
}
|
||||
}
|
||||
85
Tests/ApiRouteTests/UserApiRouteTests.swift
Normal file
85
Tests/ApiRouteTests/UserApiRouteTests.swift
Normal file
@@ -0,0 +1,85 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
@Suite("UserApiRouteTests")
|
||||
struct UserApiRouteTests {
|
||||
let router = ApiRoute.router
|
||||
|
||||
@Test
|
||||
func create() throws {
|
||||
let json = """
|
||||
{
|
||||
\"username\": \"foo\",
|
||||
\"email\": \"foo@bar.com\",
|
||||
\"password\": \"super-secret\",
|
||||
\"confirmPassword\": \"super-secret\"
|
||||
}
|
||||
"""
|
||||
var request = URLRequestData(
|
||||
method: "POST",
|
||||
path: "/api/v1/users",
|
||||
body: .init(json.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: "/api/v1/users/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .user(.delete(id: id)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func get() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/api/v1/users/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .user(.get(id: id)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func index() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/api/v1/users"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .user(.index))
|
||||
}
|
||||
|
||||
@Test
|
||||
func update() throws {
|
||||
let id = UUID(0)
|
||||
let json = """
|
||||
{
|
||||
\"username\": \"bar\",
|
||||
\"email\": \"bar@foo.com\"
|
||||
}
|
||||
"""
|
||||
var request = URLRequestData(
|
||||
method: "PATCH",
|
||||
path: "/api/v1/users/\(id)",
|
||||
body: .init(json.utf8)
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .user(.update(id: id, updates: .init(username: "bar", email: "bar@foo.com"))))
|
||||
}
|
||||
}
|
||||
83
Tests/ApiRouteTests/VendorApiRouteTests.swift
Normal file
83
Tests/ApiRouteTests/VendorApiRouteTests.swift
Normal file
@@ -0,0 +1,83 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
@Suite("VendorApiRouteTests")
|
||||
struct VendorApiRouteTests {
|
||||
let router = ApiRoute.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"))))
|
||||
}
|
||||
}
|
||||
87
Tests/ApiRouteTests/VendorBranchApiRouteTests.swift
Normal file
87
Tests/ApiRouteTests/VendorBranchApiRouteTests.swift
Normal file
@@ -0,0 +1,87 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
@Suite("VendorBranchApiRouteTests")
|
||||
struct VendorBranchApiRouteTests {
|
||||
let router = ApiRoute.router
|
||||
|
||||
@Test
|
||||
func create() throws {
|
||||
let id = UUID(0)
|
||||
let json = """
|
||||
{
|
||||
\"name\": \"Test\",
|
||||
\"vendorID\": \"\(id)\"
|
||||
}
|
||||
"""
|
||||
var request = URLRequestData(
|
||||
method: "POST",
|
||||
path: "/api/v1/vendors/branches",
|
||||
body: .init(json.utf8)
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendorBranch(.create(.init(name: "Test", vendorID: id))))
|
||||
}
|
||||
|
||||
@Test
|
||||
func delete() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "DELETE",
|
||||
path: "/api/v1/vendors/branches/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendorBranch(.delete(id: id)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func get() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/api/v1/vendors/branches/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendorBranch(.get(id: id)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func index() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/api/v1/vendors/branches"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendorBranch(.index()))
|
||||
|
||||
var request2 = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/api/v1/vendors/branches",
|
||||
query: ["vendorID": ["\(id)"]]
|
||||
)
|
||||
let route2 = try router.parse(&request2)
|
||||
#expect(route2 == .vendorBranch(.index(for: id)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func update() throws {
|
||||
let id = UUID(0)
|
||||
let json = """
|
||||
{
|
||||
\"name\": \"Test\"
|
||||
}
|
||||
"""
|
||||
var request = URLRequestData(
|
||||
method: "PUT",
|
||||
path: "/api/v1/vendors/branches/\(id)",
|
||||
body: .init(json.utf8)
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendorBranch(.update(id: id, updates: .init(name: "Test"))))
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user