UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

81 lines (80 loc) 2.31 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { describe, expect, it, vi } from "vitest"; import React from "react"; import TestRenderer, { act } from "react-test-renderer"; import { Redirect } from "./Redirect.native.js"; vi.mock("../useFocusEffect", function () { return { useFocusEffect: function (effect, deps) { return React.useEffect(effect, deps); } }; }); var replaceCalls = []; var resolvePending; vi.mock("../hooks", function () { return { useRouter: function () { return { replace: function (href) { replaceCalls.push(href); return new Promise(function (resolve) { resolvePending = resolve; }); } }; } }; }); async function flush() { await act(async function () { await Promise.resolve(); await Promise.resolve(); }); } describe("Redirect", function () { it("fires replace once across the mount/unmount churn of an auth-state settle", async function () { var _loop = function (i2) { var r = void 0; act(function () { r = TestRenderer.create(/* @__PURE__ */_jsx(Redirect, { href: "/home" })); }); act(function () { r.unmount(); }); }; replaceCalls.length = 0; for (var i = 0; i < 8; i++) _loop(i); expect(replaceCalls).toEqual(["/home"]); resolvePending === null || resolvePending === void 0 ? void 0 : resolvePending(); await flush(); act(function () { TestRenderer.create(/* @__PURE__ */_jsx(Redirect, { href: "/home" })); }); expect(replaceCalls).toEqual(["/home", "/home"]); resolvePending === null || resolvePending === void 0 ? void 0 : resolvePending(); await flush(); }); it("does not re-fire within a single mounted instance", async function () { replaceCalls.length = 0; var r; act(function () { r = TestRenderer.create(/* @__PURE__ */_jsx(Redirect, { href: "/login" })); }); act(function () { r.update(/* @__PURE__ */_jsx(Redirect, { href: "/login" })); }); expect(replaceCalls).toEqual(["/login"]); resolvePending === null || resolvePending === void 0 ? void 0 : resolvePending(); await flush(); }); }); //# sourceMappingURL=Redirect.test.native.js.map