UNPKG

salat

Version:

Daily Moroccan prayers time, right in your console, at the tip of your fingers

41 lines (40 loc) 1.78 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { render } from "ink-testing-library"; import { describe, expect, it, vi } from "vitest"; import CitySelect from "./CitySelect.js"; // Mock data vi.mock("../data/cities.json", () => ({ default: [ { frenchName: "Casablanca", arabicName: "الدار البيضاء" }, { frenchName: "Rabat", arabicName: "الرباط" }, { frenchName: "Tangier", arabicName: "طنجة" }, ], })); describe("CitySelect", () => { it("should render input and list", () => { const { lastFrame } = render(_jsx(CitySelect, { onSelect: () => { } })); expect(lastFrame()).toContain("SELECT YOUR CITY"); expect(lastFrame()).toContain("Casablanca"); expect(lastFrame()).toContain("Rabat"); }); it("should show no results message when no match", async () => { const { lastFrame, stdin } = render(_jsx(CitySelect, { onSelect: () => { } })); stdin.write("NonExistentCity"); await new Promise((resolve) => setTimeout(resolve, 100)); expect(lastFrame()).toContain("No cities found"); }); it("should filter cities by french name", async () => { const { lastFrame, stdin } = render(_jsx(CitySelect, { onSelect: () => { } })); stdin.write("Rab"); await new Promise((resolve) => setTimeout(resolve, 100)); expect(lastFrame()).toContain("Rabat"); expect(lastFrame()).not.toContain("Casablanca"); }); it("should select a city", () => { const onSelect = vi.fn(); const { stdin, lastFrame } = render(_jsx(CitySelect, { onSelect: onSelect })); // Select first item (Casablanca) stdin.write("\r"); expect(onSelect).toHaveBeenCalledWith("Casablanca"); }); });