@forge/react
11.18.0-next.011.18.0-next.1
out/router/hooks/__test__/useLocation.test.js+
out/router/hooks/__test__/useLocation.test.jsNew file+59
Index: package/out/router/hooks/__test__/useLocation.test.js
===================================================================
--- package/out/router/hooks/__test__/useLocation.test.js
+++ package/out/router/hooks/__test__/useLocation.test.js
@@ -0,0 +1,59 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const tslib_1 = require("tslib");
+const jsx_runtime_1 = require("react/jsx-runtime");
+const react_1 = require("react");
+const testUtils_1 = require("../../../__test__/testUtils");
+const reconcilerTestRenderer_1 = tslib_1.__importDefault(require("../../../__test__/reconcilerTestRenderer"));
+const Router_1 = require("../../components/Router");
+const useNavigate_1 = require("../useNavigate");
+const useLocation_1 = require("../useLocation");
+const components_1 = require("../../../components");
+const test_utils_1 = require("../../utils/test-utils");
+const mockCreateHistory = jest.fn(async () => (0, test_utils_1.createMockHistory)());
+jest.mock('@forge/bridge', () => ({
+ view: {
+ createHistory: () => mockCreateHistory()
+ }
+}));
+describe('useLocation', () => {
+ let bridgeCalls;
+ beforeAll(() => {
+ bridgeCalls = (0, testUtils_1.setupBridge)();
+ });
+ beforeEach(() => {
+ bridgeCalls.length = 0;
+ mockCreateHistory.mockClear();
+ mockCreateHistory.mockImplementation(async () => (0, test_utils_1.createMockHistory)());
+ });
+ afterEach(() => jest.clearAllMocks());
+ it('returns the current location', async () => {
+ const locationListener = jest.fn();
+ const LocationTest = () => {
+ const location = (0, useLocation_1.useLocation)();
+ (0, react_1.useEffect)(() => locationListener(location), [location]);
+ return (0, jsx_runtime_1.jsx)(components_1.Text, { children: "Location Test" });
+ };
+ await reconcilerTestRenderer_1.default.create((0, jsx_runtime_1.jsx)(Router_1.Router, { children: (0, jsx_runtime_1.jsx)(LocationTest, {}) }));
+ expect(locationListener).toHaveBeenCalledWith(expect.objectContaining({
+ pathname: '/',
+ search: '',
+ hash: ''
+ }));
+ });
+ it('updates when navigation occurs', async () => {
+ const locationListener = jest.fn();
+ const LocationTest = () => {
+ const location = (0, useLocation_1.useLocation)();
+ const navigate = (0, useNavigate_1.useNavigate)();
+ (0, react_1.useEffect)(() => locationListener(location), [location]);
+ (0, react_1.useEffect)(() => {
+ navigate('/about');
+ }, [navigate]);
+ return (0, jsx_runtime_1.jsx)(components_1.Text, { children: "Location Test" });
+ };
+ await reconcilerTestRenderer_1.default.create((0, jsx_runtime_1.jsx)(Router_1.Router, { children: (0, jsx_runtime_1.jsx)(LocationTest, {}) }));
+ expect(locationListener).toHaveBeenCalledWith(expect.objectContaining({ pathname: '/' }));
+ expect(locationListener).toHaveBeenCalledWith(expect.objectContaining({ pathname: '/about' }));
+ });
+});