import { test, expect } from "@playwright/test"; test.describe("Stock Database", () => { test("should add and list stocks", async ({ page }) => { const uniqueTicker = `TEST${Date.now()}`; const createRes = await page.request.post("/api/stocks", { data: new URLSearchParams({ ticker: uniqueTicker }).toString(), headers: { "Content-Type": "application/x-www-form-urlencoded" }, }); expect(createRes.ok()).toBeTruthy(); const listRes = await page.request.get("/api/stocks"); const stocks = await listRes.json(); expect(stocks).toContainEqual(expect.objectContaining({ ticker: uniqueTicker })); // Cleanup: delete the test ticker await page.request.post("/api/stocks", { data: new URLSearchParams({ ticker: uniqueTicker, _method: "DELETE" }).toString(), headers: { "Content-Type": "application/x-www-form-urlencoded" }, }); }); test("should delete stock from database", async ({ page }) => { const uniqueTicker = `DEL${Date.now()}`; await page.request.post("/api/stocks", { data: new URLSearchParams({ ticker: uniqueTicker }).toString(), headers: { "Content-Type": "application/x-www-form-urlencoded" }, }); let listRes = await page.request.get("/api/stocks"); let stocks = await listRes.json(); expect(stocks).toContainEqual(expect.objectContaining({ ticker: uniqueTicker })); const delRes = await page.request.post("/api/stocks", { data: new URLSearchParams({ ticker: uniqueTicker, _method: "DELETE" }).toString(), headers: { "Content-Type": "application/x-www-form-urlencoded" }, }); expect(delRes.ok()).toBeTruthy(); listRes = await page.request.get("/api/stocks"); stocks = await listRes.json(); expect(stocks).not.toContainEqual(expect.objectContaining({ ticker: uniqueTicker })); }); });