69 lines
2.1 KiB
JavaScript
69 lines
2.1 KiB
JavaScript
const mongoose = require("mongoose");
|
|
const request = require("supertest");
|
|
const { app } = require("../app");
|
|
const Menu = require("../src/models/menuModel");
|
|
const connectDB = require("../src/config/database");
|
|
|
|
describe("Pengujian Integrasi - API Menu", () => {
|
|
beforeAll(async () => {
|
|
await connectDB();
|
|
await Menu.deleteMany({}); // Pastikan database dalam keadaan kosong sebelum pengujian
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
await Menu.deleteMany({}); // Hapus semua data sebelum setiap pengujian
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await mongoose.connection.close(); // Tutup koneksi database setelah semua pengujian selesai
|
|
});
|
|
|
|
it("harus berhasil membuat item menu baru melalui API", async () => {
|
|
const newItem = {
|
|
name: "Pizza",
|
|
description: "Pizza keju yang lezat",
|
|
price: 12.99,
|
|
category: "main",
|
|
isAvailable: true,
|
|
};
|
|
|
|
const res = await request(app).post("/createMenu").send(newItem);
|
|
|
|
expect(res.status).toBe(201);
|
|
expect(res.body.name).toBe(newItem.name);
|
|
expect(res.body.price).toBe(newItem.price);
|
|
});
|
|
|
|
it("harus mengambil semua item menu melalui API", async () => {
|
|
await Menu.create([
|
|
{ name: "Burger", price: 9.99, category: "main", isAvailable: true },
|
|
{ name: "Salad", price: 5.99, category: "appetizer", isAvailable: true },
|
|
]);
|
|
|
|
const res = await request(app).get("/menu");
|
|
|
|
expect(res.status).toBe(200);
|
|
expect(res.body.length).toBe(2);
|
|
});
|
|
|
|
it("harus mengambil item menu berdasarkan kategori melalui API", async () => {
|
|
await Menu.create([
|
|
{ name: "Steak", price: 19.99, category: "main", isAvailable: true },
|
|
{ name: "Soda", price: 2.99, category: "beverage", isAvailable: true },
|
|
]);
|
|
|
|
const res = await request(app).get("/menu/main");
|
|
|
|
expect(res.status).toBe(200);
|
|
expect(res.body.length).toBe(1);
|
|
expect(res.body[0].name).toBe("Steak");
|
|
});
|
|
|
|
it("harus mengembalikan 404 jika kategori tidak ditemukan", async () => {
|
|
const res = await request(app).get("/menu/dessert");
|
|
|
|
expect(res.status).toBe(404);
|
|
expect(res.body.error).toBe("Menu with category 'dessert' not found");
|
|
});
|
|
});
|