UNPKG

one

Version:

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

164 lines (162 loc) 6.55 kB
"use strict"; var import_vitest = require("vitest"); var import_stackStateUtils = require("../stackStateUtils.native.js"); function makeState(routeNames, index) { var routes = routeNames.map(function (name) { return { key: `${name}-key`, name, params: void 0 }; }); return { key: "stack", index, routeNames, routes, type: "stack", stale: false, preloadedRoutes: [] }; } function makeDescriptors(routeNames, presentations) { var out = {}; var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0; try { for (var _iterator = routeNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var name = _step.value; out[`${name}-key`] = { options: { presentation: presentations[name] } }; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return != null) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } return out; } (0, import_vitest.describe)("isOverlayPresentation", function () { (0, import_vitest.it)("returns true for known overlay presentations", function () { for (var _i = 0, _iter = ["modal", "transparentModal", "fullScreenModal", "formSheet", "pageSheet", "containedModal", "containedTransparentModal"]; _i < _iter.length; _i++) { var p = _iter[_i]; (0, import_vitest.expect)((0, import_stackStateUtils.isOverlayPresentation)({ presentation: p })).toBe(true); } }); (0, import_vitest.it)("returns false for card and undefined", function () { (0, import_vitest.expect)((0, import_stackStateUtils.isOverlayPresentation)({ presentation: "card" })).toBe(false); (0, import_vitest.expect)((0, import_stackStateUtils.isOverlayPresentation)({})).toBe(false); (0, import_vitest.expect)((0, import_stackStateUtils.isOverlayPresentation)(void 0)).toBe(false); (0, import_vitest.expect)((0, import_stackStateUtils.isOverlayPresentation)(null)).toBe(false); }); }); (0, import_vitest.describe)("isTransparentOverlay", function () { (0, import_vitest.it)("flags transparent variants only", function () { (0, import_vitest.expect)((0, import_stackStateUtils.isTransparentOverlay)({ presentation: "transparentModal" })).toBe(true); (0, import_vitest.expect)((0, import_stackStateUtils.isTransparentOverlay)({ presentation: "containedTransparentModal" })).toBe(true); (0, import_vitest.expect)((0, import_stackStateUtils.isTransparentOverlay)({ presentation: "modal" })).toBe(false); (0, import_vitest.expect)((0, import_stackStateUtils.isTransparentOverlay)({ presentation: "formSheet" })).toBe(false); }); }); (0, import_vitest.describe)("convertStackStateToNonOverlayState", function () { (0, import_vitest.it)("removes overlay routes and keeps card routes", function () { var state = makeState(["home", "detail", "filter"], 2); var descriptors = makeDescriptors(["home", "detail", "filter"], { home: "card", detail: "card", filter: "formSheet" }); var out = (0, import_stackStateUtils.convertStackStateToNonOverlayState)(state, descriptors); (0, import_vitest.expect)(out.routes.map(function (r) { return r.name; })).toEqual(["home", "detail"]); }); (0, import_vitest.it)("falls back to last remaining route when active route was an overlay", function () { var state = makeState(["home", "detail", "filter"], 2); var descriptors = makeDescriptors(["home", "detail", "filter"], { home: "card", detail: "card", filter: "formSheet" }); var out = (0, import_stackStateUtils.convertStackStateToNonOverlayState)(state, descriptors); (0, import_vitest.expect)(out.index).toBe(1); (0, import_vitest.expect)(out.routes[out.index].name).toBe("detail"); }); (0, import_vitest.it)("preserves active index when active route is not an overlay", function () { var state = makeState(["home", "detail", "filter"], 1); var descriptors = makeDescriptors(["home", "detail", "filter"], { home: "card", detail: "card", filter: "formSheet" }); var out = (0, import_stackStateUtils.convertStackStateToNonOverlayState)(state, descriptors); (0, import_vitest.expect)(out.routes[out.index].name).toBe("detail"); }); (0, import_vitest.it)("does not strip mid-stack overlays (regression: only the trailing overlay suffix is removed)", function () { var state = makeState(["home", "sheet", "detail"], 2); var descriptors = makeDescriptors(["home", "sheet", "detail"], { home: "card", sheet: "formSheet", detail: "card" }); var out = (0, import_stackStateUtils.convertStackStateToNonOverlayState)(state, descriptors); (0, import_vitest.expect)(out.routes.map(function (r) { return r.name; })).toEqual(["home", "sheet", "detail"]); (0, import_vitest.expect)(out.index).toBe(2); }); (0, import_vitest.it)("handles all-overlay state without crashing", function () { var state = makeState(["only-sheet"], 0); var descriptors = makeDescriptors(["only-sheet"], { "only-sheet": "formSheet" }); var out = (0, import_stackStateUtils.convertStackStateToNonOverlayState)(state, descriptors); (0, import_vitest.expect)(out.routes).toHaveLength(0); (0, import_vitest.expect)(out.index).toBe(0); }); }); (0, import_vitest.describe)("findLastNonOverlayIndex", function () { (0, import_vitest.it)("returns the highest index that is not an overlay", function () { var state = makeState(["home", "detail", "filter", "pop"], 3); var descriptors = makeDescriptors(["home", "detail", "filter", "pop"], { home: "card", detail: "card", filter: "formSheet", pop: "transparentModal" }); (0, import_vitest.expect)((0, import_stackStateUtils.findLastNonOverlayIndex)(state, descriptors)).toBe(1); }); (0, import_vitest.it)("returns -1 when every route is an overlay", function () { var state = makeState(["sheet"], 0); var descriptors = makeDescriptors(["sheet"], { sheet: "formSheet" }); (0, import_vitest.expect)((0, import_stackStateUtils.findLastNonOverlayIndex)(state, descriptors)).toBe(-1); }); }); //# sourceMappingURL=stackStateUtils.test.native.js.map