feat: Adds api route tests. Tested user interface works as expected, still needs some work on vendors form.
This commit is contained in:
@@ -1,82 +0,0 @@
|
||||
// @testable import App
|
||||
// import VaporTesting
|
||||
// import Testing
|
||||
// import Fluent
|
||||
//
|
||||
// @Suite("App Tests with DB", .serialized)
|
||||
// struct AppTests {
|
||||
// private func withApp(_ test: (Application) async throws -> ()) async throws {
|
||||
// let app = try await Application.make(.testing)
|
||||
// do {
|
||||
// try await configure(app)
|
||||
// try await app.autoMigrate()
|
||||
// try await test(app)
|
||||
// try await app.autoRevert()
|
||||
// }
|
||||
// catch {
|
||||
// try? await app.autoRevert()
|
||||
// try await app.asyncShutdown()
|
||||
// throw error
|
||||
// }
|
||||
// try await app.asyncShutdown()
|
||||
// }
|
||||
//
|
||||
// @Test("Test Hello World Route")
|
||||
// func helloWorld() async throws {
|
||||
// try await withApp { app in
|
||||
// try await app.testing().test(.GET, "hello", afterResponse: { res async in
|
||||
// #expect(res.status == .ok)
|
||||
// #expect(res.body.string == "Hello, world!")
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Test("Getting all the Todos")
|
||||
// func getAllTodos() async throws {
|
||||
// try await withApp { app in
|
||||
// let sampleTodos = [Todo(title: "sample1"), Todo(title: "sample2")]
|
||||
// try await sampleTodos.create(on: app.db)
|
||||
//
|
||||
// try await app.testing().test(.GET, "todos", afterResponse: { res async throws in
|
||||
// #expect(res.status == .ok)
|
||||
// #expect(try res.content.decode([TodoDTO].self) == sampleTodos.map { $0.toDTO()} )
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Test("Creating a Todo")
|
||||
// func createTodo() async throws {
|
||||
// let newDTO = TodoDTO(id: nil, title: "test")
|
||||
//
|
||||
// try await withApp { app in
|
||||
// try await app.testing().test(.POST, "todos", beforeRequest: { req in
|
||||
// try req.content.encode(newDTO)
|
||||
// }, afterResponse: { res async throws in
|
||||
// #expect(res.status == .ok)
|
||||
// let models = try await Todo.query(on: app.db).all()
|
||||
// #expect(models.map({ $0.toDTO().title }) == [newDTO.title])
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Test("Deleting a Todo")
|
||||
// func deleteTodo() async throws {
|
||||
// let testTodos = [Todo(title: "test1"), Todo(title: "test2")]
|
||||
//
|
||||
// try await withApp { app in
|
||||
// try await testTodos.create(on: app.db)
|
||||
//
|
||||
// try await app.testing().test(.DELETE, "todos/\(testTodos[0].requireID())", afterResponse: { res async throws in
|
||||
// #expect(res.status == .noContent)
|
||||
// let model = try await Todo.find(testTodos[0].id, on: app.db)
|
||||
// #expect(model == nil)
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// extension TodoDTO: Equatable {
|
||||
// public static func == (lhs: Self, rhs: Self) -> Bool {
|
||||
// lhs.id == rhs.id && lhs.title == rhs.title
|
||||
// }
|
||||
// }
|
||||
@@ -1,101 +0,0 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
@Suite("EmployeeViewRouteTests")
|
||||
struct EmployeeViewRouteTests {
|
||||
let router = ViewRoute.router
|
||||
|
||||
@Test
|
||||
func employeeCreate() throws {
|
||||
var request = URLRequestData(
|
||||
method: "POST",
|
||||
path: "/employees",
|
||||
body: .init("firstName=Blob&lastName=Esquire&active=true".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: "/employees/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(
|
||||
route == .employee(.delete(id: id))
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
func employeeForm() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/employees/create"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(
|
||||
route == .employee(.form)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
func employeeGet() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/employees/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(
|
||||
route == .employee(.get(id: id))
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
func employeeIndex() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/employees"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(
|
||||
route == .employee(.index)
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
func employeeUpdate() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "PUT",
|
||||
path: "/employees/\(id)",
|
||||
body: .init("firstName=Blob&lastName=Esquire&active=true".utf8)
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(
|
||||
route == .employee(.update(
|
||||
id: id,
|
||||
updates: .init(firstName: "Blob", lastName: "Esquire", active: true)
|
||||
))
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
func employeeSelect() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/employees/select",
|
||||
query: ["context": ["purchaseOrderForm"]]
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .employee(.select(context: .purchaseOrderForm)))
|
||||
}
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
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"))))
|
||||
}
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
@Suite("PurchaseOrderViewRouteTests")
|
||||
struct PurchaseOrderViewRouteTests {
|
||||
let router = ViewRoute.router
|
||||
|
||||
@Test
|
||||
func create() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "POST",
|
||||
path: "/purchase-orders",
|
||||
body: .init("id=1&workOrder=12345&materials=some&customer=Testy&truckStock=false&createdByID=\(id)&createdForID=\(id)&vendorBranchID=\(id)".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: "/purchase-orders/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.delete(id: id)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func form() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/purchase-orders/create"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.form))
|
||||
}
|
||||
|
||||
@Test
|
||||
func get() throws {
|
||||
let id = 1
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/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: "/purchase-orders"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.index))
|
||||
}
|
||||
|
||||
@Test
|
||||
func page() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/purchase-orders/next"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.page(page: 1, limit: 25)))
|
||||
|
||||
var request2 = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/purchase-orders/next",
|
||||
query: ["page": ["2"], "limit": ["50"]]
|
||||
)
|
||||
let route2 = try router.parse(&request2)
|
||||
#expect(route2 == .purchaseOrder(.page(page: 2, limit: 50)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func searchIndex() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/purchase-orders/search",
|
||||
query: ["context": ["customer"]]
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.search(.index(context: .customer, table: nil))))
|
||||
|
||||
var request2 = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/purchase-orders/search"
|
||||
)
|
||||
let route2 = try router.parse(&request2)
|
||||
#expect(route2 == .purchaseOrder(.search(.index(context: .employee, table: nil))))
|
||||
|
||||
var request3 = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/purchase-orders/search",
|
||||
query: ["context": ["vendor"], "table": ["true"]]
|
||||
)
|
||||
let route3 = try router.parse(&request3)
|
||||
#expect(route3 == .purchaseOrder(.search(.index(context: .vendor, table: true))))
|
||||
}
|
||||
|
||||
@Test
|
||||
func searchPost() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "POST",
|
||||
path: "/purchase-orders/search",
|
||||
body: .init("context=employee&createdForID=\(id)".utf8)
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .purchaseOrder(.search(.request(.init(context: .employee, createdForID: id)))))
|
||||
}
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
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"))))
|
||||
}
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
@Suite("VendorBranchViewRouteTests")
|
||||
struct VendorBranchViewRouteTests {
|
||||
let router = ViewRoute.router
|
||||
|
||||
@Test
|
||||
func create() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "POST",
|
||||
path: "/vendors/branches",
|
||||
body: .init("name=Test&vendorID=\(id)".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: "/vendors/branches/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendorBranch(.delete(id: id)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func select() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/vendors/branches/select",
|
||||
query: ["context": ["purchaseOrderForm"]]
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendorBranch(.select(context: .purchaseOrderForm)))
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
import Dependencies
|
||||
import Foundation
|
||||
import SharedModels
|
||||
import Testing
|
||||
import URLRouting
|
||||
|
||||
@Suite("VendorViewRouteTests")
|
||||
struct VendorViewRouteTests {
|
||||
let router = ViewRoute.router
|
||||
|
||||
@Test
|
||||
func create() throws {
|
||||
var request = URLRequestData(
|
||||
method: "POST",
|
||||
path: "/vendors",
|
||||
body: .init("name=Test".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: "/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: "/vendors/\(id)"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendor(.get(id: id)))
|
||||
}
|
||||
|
||||
@Test
|
||||
func form() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/vendors/create"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendor(.form))
|
||||
}
|
||||
|
||||
@Test
|
||||
func index() throws {
|
||||
var request = URLRequestData(
|
||||
method: "GET",
|
||||
path: "/vendors"
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendor(.index))
|
||||
}
|
||||
|
||||
@Test
|
||||
func update() throws {
|
||||
let id = UUID(0)
|
||||
var request = URLRequestData(
|
||||
method: "PUT",
|
||||
path: "/vendors/\(id)",
|
||||
body: .init("name=Test".utf8)
|
||||
)
|
||||
let route = try router.parse(&request)
|
||||
#expect(route == .vendor(.update(id: id, updates: .init(name: "Test"))))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user