@octopusdeploy/design-system-components
Version:
The design systems component library.
52 lines (51 loc) • 3.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const testing_library_1 = require("@octopusdeploy/testing-library");
const react_1 = require("@testing-library/react");
const vitest_1 = require("vitest");
const useIsBusy_1 = require("../useIsBusy");
(0, vitest_1.describe)("useIsBusy", () => {
(0, vitest_1.it)("should return true for a pending promise", () => {
const { promise } = (0, testing_library_1.createControlledPromise)();
const { result } = (0, react_1.renderHook)(() => (0, useIsBusy_1.useIsBusy)(promise));
(0, vitest_1.expect)(result.current).toBe(true);
});
(0, vitest_1.it)("should return false for a resolved promise", async () => {
const { promise, resolve } = (0, testing_library_1.createControlledPromise)();
const { result } = (0, react_1.renderHook)(() => (0, useIsBusy_1.useIsBusy)(promise));
await resolve();
(0, vitest_1.expect)(result.current).toBe(false);
});
(0, vitest_1.it)("should return false for a rejected promise", async () => {
const { promise, reject } = (0, testing_library_1.createControlledPromise)();
const { result } = (0, react_1.renderHook)(() => (0, useIsBusy_1.useIsBusy)(promise));
await reject();
(0, vitest_1.expect)(result.current).toBe(false);
});
(0, vitest_1.it)("should return true for a true boolean", () => {
const { result } = (0, react_1.renderHook)(() => (0, useIsBusy_1.useIsBusy)(true));
(0, vitest_1.expect)(result.current).toBe(true);
});
(0, vitest_1.it)("should return false for a false boolean", () => {
const { result } = (0, react_1.renderHook)(() => (0, useIsBusy_1.useIsBusy)(false));
(0, vitest_1.expect)(result.current).toBe(false);
});
(0, vitest_1.describe)("when the promise value changes", () => {
(0, vitest_1.it)("should return true if the latest promise is pending while the original promise has resolved", async () => {
const { promise: originalPromise, resolve: resolveOriginalPromise } = (0, testing_library_1.createControlledPromise)();
const { promise: latestPromise } = (0, testing_library_1.createControlledPromise)();
const { result, rerender } = (0, react_1.renderHook)(({ promise }) => (0, useIsBusy_1.useIsBusy)(promise), { initialProps: { promise: originalPromise } });
rerender({ promise: latestPromise });
await resolveOriginalPromise();
(0, vitest_1.expect)(result.current).toBe(true);
});
(0, vitest_1.it)("should return false if the latest promise is resolved while the original promise is pending", async () => {
const { promise: originalPromise } = (0, testing_library_1.createControlledPromise)();
const { promise: latestPromise, resolve: resolveLatestPromise } = (0, testing_library_1.createControlledPromise)();
const { result, rerender } = (0, react_1.renderHook)(({ promise }) => (0, useIsBusy_1.useIsBusy)(promise), { initialProps: { promise: originalPromise } });
rerender({ promise: latestPromise });
await resolveLatestPromise();
(0, vitest_1.expect)(result.current).toBe(false);
});
});
});