Compare commits

...
Author SHA1 Message Date
derrick 82ed809f32 update:remove unused check
Runner Test / test (push) Failing after 15s
2026-09-27 22:05:51 +09:00
derrick 0e1e64b6ca add:assignment 3 tests
Runner Test / test (push) Failing after 14s
2026-09-27 22:04:59 +09:00
derrick 8235ceb61f Merge pull request 'Feature Internal Order Notes' (#12) from feat/dg-2-internal-order-notes into master
Runner Test / test (push) Failing after 14s
Reviewed-on: #12
2026-09-25 03:47:36 +00:00
2 changed files with 91 additions and 1 deletions
-1
View File
@@ -28,7 +28,6 @@ bun run dev:web
Common checks: Common checks:
```bash ```bash
bun run check
bun run test bun run test
bun run build:web bun run build:web
``` ```
@@ -0,0 +1,91 @@
import { afterEach, beforeEach, describe, expect, test } from "bun:test";
import type { AppWithContext } from "../app";
import { buildApp } from "../app";
import { createUser } from "../users/user-repository";
let app: AppWithContext;
let employeeCookie = "";
function firstHeader(value: string | string[] | undefined) {
return Array.isArray(value) ? value[0] : value ?? "";
}
async function login(username: string) {
const response = await app.inject({ method: "POST", url: "/api/login", payload: { username } });
return firstHeader(response.headers["set-cookie"]);
}
beforeEach(async () => {
app = await buildApp(":memory:");
await createUser(app.dbContext, {
username: "dev-employee",
name: "Dev Employee",
email: "dev.employee@example.com",
role: "employee"
});
employeeCookie = await login("dev-employee");
});
afterEach(async () => {
await app.close();
});
describe("assignment 3 quantity validation", () => {
test("allows quantity changes for pending orders", async () => {
const response = await app.inject({
method: "POST",
url: "/api/orders/order_1/items/item_1/quantity",
headers: { cookie: employeeCookie },
payload: { quantity: 5 }
});
expect(response.statusCode).toBe(200);
expect(response.json().items.find((item: { id: string }) => item.id === "item_1")?.quantity).toBe(5);
});
test("rejects quantity changes for processing orders", async () => {
const response = await app.inject({
method: "POST",
url: "/api/orders/order_2/items/item_3/quantity",
headers: { cookie: employeeCookie },
payload: { quantity: 2 }
});
expect(response.statusCode).toBe(400);
});
test("rejects quantity changes for shipped orders", async () => {
const response = await app.inject({
method: "POST",
url: "/api/orders/order_3/items/item_4/quantity",
headers: { cookie: employeeCookie },
payload: { quantity: 1 }
});
expect(response.statusCode).toBe(400);
});
test("rejects quantity outside the allowed range", async () => {
const response = await app.inject({
method: "POST",
url: "/api/orders/order_1/items/item_1/quantity",
headers: { cookie: employeeCookie },
payload: { quantity: 0 }
});
expect(response.statusCode).toBe(400);
});
test("rejects quantity above effective inventory", async () => {
const response = await app.inject({
method: "POST",
url: "/api/orders/order_1/items/item_1/quantity",
headers: { cookie: employeeCookie },
payload: { quantity: 9 }
});
expect(response.statusCode).toBe(400);
});
});