@octopusdeploy/design-system-components
Version:
The design systems component library.
55 lines (54 loc) • 2.57 kB
JavaScript
;
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");
});
});