salat
Version:
Daily Moroccan prayers time, right in your console, at the tip of your fingers
54 lines (53 loc) • 1.94 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { render } from "ink-testing-library";
import { Text } from "ink";
import { describe, expect, it, vi } from "vitest";
import { useHijriDate } from "./useHijriDate.js";
// Mock useQuery
const mockUseQuery = vi.fn();
vi.mock("@tanstack/react-query", () => ({
useQuery: (options) => mockUseQuery(options),
}));
const TestComponent = () => {
const result = useHijriDate();
return _jsx(Text, { children: JSON.stringify(result) });
};
describe("useHijriDate", () => {
it("should return loading state initially", () => {
mockUseQuery.mockReturnValue({
data: undefined,
error: null,
isPending: true,
});
const { lastFrame } = render(_jsx(TestComponent, {}));
const result = JSON.parse(lastFrame());
expect(result.loading).toBe(true);
expect(result.hijriDate).toBeNull();
expect(result.error).toBeNull();
});
it("should return data when query succeeds", () => {
const mockDate = "18 Sha'ban 1447";
mockUseQuery.mockReturnValue({
data: mockDate,
error: null,
isPending: false,
});
const { lastFrame } = render(_jsx(TestComponent, {}));
const result = JSON.parse(lastFrame());
expect(result.loading).toBe(false);
expect(result.hijriDate).toBe(mockDate);
expect(result.error).toBeNull();
});
it("should return error when query fails", () => {
mockUseQuery.mockReturnValue({
data: undefined,
error: new Error("Failed to fetch"),
isPending: false,
});
const { lastFrame } = render(_jsx(TestComponent, {}));
const result = JSON.parse(lastFrame());
expect(result.loading).toBe(false);
expect(result.hijriDate).toBeNull();
expect(result.error).toBe("Failed to fetch");
});
});