UNPKG

@octopusdeploy/design-system-components

Version:
55 lines (54 loc) 2.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = require("@testing-library/react"); const vitest_1 = require("vitest"); const useCanLoadImage_1 = require("../useCanLoadImage"); (0, vitest_1.describe)("useCanLoadImage", () => { (0, vitest_1.beforeEach)(() => { vitest_1.vi.clearAllMocks(); }); (0, vitest_1.test)("returns 'loading' initially", () => { const { result } = (0, react_1.renderHook)(() => (0, useCanLoadImage_1.useCanLoadImage)("https://example.com/image.jpg")); (0, vitest_1.expect)(result.current).toBe("loading"); }); (0, vitest_1.test)("returns true when the image loads successfully", async () => { const mockImage = { onload: vitest_1.vi.fn(), onerror: vitest_1.vi.fn(), set src(_) { setTimeout(() => this.onload(), 0); // Simulate successful load }, }; vitest_1.vi.spyOn(window, "Image").mockImplementation(function Image() { // eslint-disable-next-line @typescript-eslint/consistent-type-assertions return mockImage; }); const { result } = (0, react_1.renderHook)(() => (0, useCanLoadImage_1.useCanLoadImage)("https://example.com/image.jpg")); await (0, react_1.act)(async () => { await new Promise((resolve) => setTimeout(resolve, 0)); }); (0, vitest_1.expect)(result.current).toBe(true); }); (0, vitest_1.test)("returns 'error' when the image fails to load", async () => { const mockImage = { onload: vitest_1.vi.fn(), onerror: vitest_1.vi.fn(), set src(_) { setTimeout(() => this.onerror(), 0); // Simulate load failure }, }; vitest_1.vi.spyOn(window, "Image").mockImplementation(function Image() { // eslint-disable-next-line @typescript-eslint/consistent-type-assertions return mockImage; }); const { result } = (0, react_1.renderHook)(() => (0, useCanLoadImage_1.useCanLoadImage)("https://example.com/image.jpg")); await (0, react_1.act)(async () => { await new Promise((resolve) => setTimeout(resolve, 0)); }); (0, vitest_1.expect)(result.current).toBe("error"); }); (0, vitest_1.test)("does nothing when no src is provided", () => { const { result } = (0, react_1.renderHook)(() => (0, useCanLoadImage_1.useCanLoadImage)("")); (0, vitest_1.expect)(result.current).toBe("loading"); }); });