@octopusdeploy/design-system-components
Version:
The design systems component library.
48 lines (47 loc) • 3.19 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 useIsPromisePending_1 = require("../useIsPromisePending");
(0, vitest_1.describe)("useIsPromisePending", () => {
(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, useIsPromisePending_1.useIsPromisePending)(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, useIsPromisePending_1.useIsPromisePending)(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, useIsPromisePending_1.useIsPromisePending)(promise));
await reject();
(0, vitest_1.expect)(result.current).toBe(false);
});
(0, vitest_1.it)("should return false for undefined", () => {
const { result } = (0, react_1.renderHook)(() => (0, useIsPromisePending_1.useIsPromisePending)(undefined));
(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, useIsPromisePending_1.useIsPromisePending)(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 has 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, useIsPromisePending_1.useIsPromisePending)(promise), { initialProps: { promise: originalPromise } });
rerender({ promise: latestPromise });
await resolveLatestPromise();
(0, vitest_1.expect)(result.current).toBe(false);
});
});
});