Files
conference-room-booking-system/frontend/src/__tests__/components/RoomSelect.test.tsx

44 lines
1.4 KiB
TypeScript

/**
* @file RoomSelect.test.tsx
* Unit tests for the RoomSelect component.
* Ensures dropdown renders and onChange is called.
*/
import React from "react";
import { render, screen, fireEvent } from "@testing-library/react";
import RoomSelect from "../../components/RoomSelect";
import { RoomProvider } from "../../context/RoomContext";
describe("RoomSelect", () => {
it("renders the room select dropdown", () => {
const rooms = [
{ id: "1", name: "Test Room", capacity: 2, amenities: [], price: 100 },
];
render(
<RoomProvider value={{ rooms, fetchRooms: jest.fn() }}>
<RoomSelect
selectedRoomId={"1"}
onChange={() => {
/* mock implementation */
}}
/>
</RoomProvider>
);
expect(screen.getByLabelText(/room/i)).toBeInTheDocument();
});
it("calls onChange when a room is selected", () => {
const onChange = jest.fn();
const rooms = [
{ id: "1", name: "Test Room", capacity: 2, amenities: [], price: 100 },
];
render(
<RoomProvider value={{ rooms, fetchRooms: jest.fn() }}>
<RoomSelect selectedRoomId={"1"} onChange={onChange} />
</RoomProvider>
);
// Simulate selection change if options exist
// fireEvent.change(screen.getByLabelText(/room/i), { target: { value: "2" } });
// expect(onChange).toHaveBeenCalledWith("2");
});
});