@northern.tech/testing 0.19.3 → 0.19.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,3 @@
1
- //#region src/mockData.d.ts
2
1
  export declare const undefineds: RegExp;
3
2
  export declare const menderEnvironment: {
4
3
  features: {
@@ -717,5 +716,4 @@ export declare const ssoEndpoint: {
717
716
  start_url: string;
718
717
  };
719
718
  };
720
- //#endregion
721
719
  //# sourceMappingURL=mockData.d.ts.map
package/dist/mockData.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ALL_DEVICES, ALL_SOFTWARE, defaultPermissionSets, emptyRole, emptyUiPermissions, maxSessionAge, rolesById, scopedPermissionAreas, uiPermissionsById } from "@northern.tech/utils/constants";
2
- //#region src/mockData.ts
2
+ // src/mockData.ts
3
3
  const undefineds = /undefined|\[object Object\]/;
4
4
  const menderEnvironment = {
5
5
  features: { hasMultitenancy: true },
@@ -1377,7 +1377,6 @@ const ssoEndpoint = {
1377
1377
  start_url: "https://hosted.mender.io/api/management/v1/useradm/oidc/1/start"
1378
1378
  }
1379
1379
  };
1380
- //#endregion
1381
1380
  export { TEST_SESSION_DATETIME, accessTokens, adminUserCapabilities, defaultCreationDate, defaultMacAddress, defaultPassword, manifestsList, menderEnvironment, mockApiResponses, mockDate, pendingEmailChange, permissionSets, rbacRoles, receivedPermissionSets, receivedRoles, releasesList, softwareList, spTenantLimits, ssoEndpoint, tenants, testSsoId, token, undefineds, userId, webhookEvents };
1382
1381
 
1383
1382
  //# sourceMappingURL=mockData.js.map
@@ -1,5 +1,3 @@
1
- //#region src/openapi.yaml.d.ts
2
1
  declare const content: string;
3
- //#endregion
4
2
  export { content as default };
5
3
  //# sourceMappingURL=openapi.yaml.d.ts.map
@@ -1,4 +1,2 @@
1
- //#region src/requestHandlers/deploymentHandlers.d.ts
2
1
  export declare const deploymentHandlers: import("msw/http").HttpHandler[];
3
- //#endregion
4
2
  //# sourceMappingURL=deploymentHandlers.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import { mockApiResponses } from "../mockData.js";
2
- import { n as validated } from "../validation-DgBXU2ez.js";
2
+ import { n as validated } from "../validation-BwwNVIxo.js";
3
3
  import { deploymentsApiUrl, deploymentsApiUrlV2, headerNames, limitDefault } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw/http";
5
- //#region src/requestHandlers/deploymentHandlers.ts
5
+ // src/requestHandlers/deploymentHandlers.ts
6
6
  const createdDeployment = {
7
7
  id: "created-123",
8
8
  name: "test deployment",
@@ -186,7 +186,6 @@ The deployment failed during the artifact download phase. The device was unable
186
186
  return new HttpResponse(null, { status: 404 });
187
187
  })
188
188
  ];
189
- //#endregion
190
189
  export { deploymentHandlers };
191
190
 
192
191
  //# sourceMappingURL=deploymentHandlers.js.map
@@ -1,4 +1,3 @@
1
- //#region src/requestHandlers/deviceHandlers.d.ts
2
1
  export declare const defaultDeviceId = "a1";
3
2
  export declare const inventoryDevice: {
4
3
  id: string;
@@ -27,5 +26,4 @@ export declare const deviceComponents: {
27
26
  }[];
28
27
  };
29
28
  export declare const deviceHandlers: import("msw/http").HttpHandler[];
30
- //#endregion
31
29
  //# sourceMappingURL=deviceHandlers.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import { defaultCreationDate, defaultMacAddress, mockApiResponses } from "../mockData.js";
2
- import { n as validated } from "../validation-DgBXU2ez.js";
2
+ import { n as validated } from "../validation-BwwNVIxo.js";
3
3
  import { DEVICE_FILTERING_OPTIONS, DEVICE_STATES, deviceAuthV2, deviceConfig, deviceConnect, headerNames, inventoryApiUrl, inventoryApiUrlV2, inventoryApiUrlV2alpha1, iotManagerBaseURL } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw/http";
5
- //#region src/requestHandlers/deviceHandlers.ts
5
+ // src/requestHandlers/deviceHandlers.ts
6
6
  const defaultDeviceId = "a1";
7
7
  const deviceAuthDevice = {
8
8
  id: "a1",
@@ -457,7 +457,6 @@ const deviceHandlers = [
457
457
  http.put(`${deviceConnect}/devices/:deviceId/upload`, validated(({ params: { deviceId } }) => new HttpResponse(null, { status: mockApiResponses.devices.byId[deviceId] ? 200 : 517 }))),
458
458
  http.get(`${deviceAuthV2}/license`, () => HttpResponse.text("test,report"))
459
459
  ];
460
- //#endregion
461
460
  export { defaultDeviceId, deviceComponents, deviceHandlers, inventoryDevice };
462
461
 
463
462
  //# sourceMappingURL=deviceHandlers.js.map
@@ -1,4 +1,2 @@
1
- //#region src/requestHandlers/monitorHandlers.d.ts
2
1
  export declare const monitorHandlers: import("msw/http").HttpHandler[];
3
- //#endregion
4
2
  //# sourceMappingURL=monitorHandlers.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import { mockApiResponses } from "../mockData.js";
2
- import { n as validated } from "../validation-DgBXU2ez.js";
2
+ import { n as validated } from "../validation-BwwNVIxo.js";
3
3
  import { alertChannels, headerNames, monitorApiUrlv1 } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw/http";
5
- //#region src/requestHandlers/monitorHandlers.ts
5
+ // src/requestHandlers/monitorHandlers.ts
6
6
  const monitorHandlers = [
7
7
  http.get(`${monitorApiUrlv1}/devices/:id/alerts`, () => new HttpResponse(JSON.stringify([]), { headers: { [headerNames.total]: 1 } })),
8
8
  http.get(`${monitorApiUrlv1}/devices/:id/alerts/latest`, () => HttpResponse.json([])),
@@ -16,7 +16,6 @@ const monitorHandlers = [
16
16
  return new HttpResponse(null, { status: 590 });
17
17
  }))
18
18
  ];
19
- //#endregion
20
19
  export { monitorHandlers };
21
20
 
22
21
  //# sourceMappingURL=monitorHandlers.js.map
@@ -1,4 +1,2 @@
1
- //#region src/requestHandlers/organizationHandlers.d.ts
2
1
  export declare const organizationHandlers: import("msw/http").HttpHandler[];
3
- //#endregion
4
2
  //# sourceMappingURL=organizationHandlers.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import { mockApiResponses, ssoEndpoint, tenants, webhookEvents } from "../mockData.js";
2
- import { n as validated } from "../validation-DgBXU2ez.js";
2
+ import { n as validated } from "../validation-BwwNVIxo.js";
3
3
  import { auditLogsApiUrl, headerNames, iotManagerBaseURL, ssoEndpointsApiUrlv1, ssoIdpApiUrlv1, tenantadmApiUrlv2 } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw/http";
5
- //#region src/requestHandlers/organizationHandlers.ts
5
+ // src/requestHandlers/organizationHandlers.ts
6
6
  const PLANS = {
7
7
  os: {
8
8
  id: "os",
@@ -306,7 +306,6 @@ const organizationHandlers = [
306
306
  http.delete(`${ssoIdpApiUrlv1}/:configId`, ({ params: { configId } }) => new HttpResponse(null, { status: configId ? 200 : 552 })),
307
307
  http.get(ssoEndpointsApiUrlv1, () => HttpResponse.json(ssoEndpoint))
308
308
  ];
309
- //#endregion
310
309
  export { organizationHandlers };
311
310
 
312
311
  //# sourceMappingURL=organizationHandlers.js.map
@@ -1,4 +1,2 @@
1
- //#region src/requestHandlers/releaseHandlers.d.ts
2
1
  export declare const releaseHandlers: import("msw/http").HttpHandler[];
3
- //#endregion
4
2
  //# sourceMappingURL=releaseHandlers.d.ts.map
@@ -1,9 +1,9 @@
1
1
  import { manifestsList, mockApiResponses, releasesList, softwareList } from "../mockData.js";
2
- import { n as validated } from "../validation-DgBXU2ez.js";
2
+ import { n as validated } from "../validation-BwwNVIxo.js";
3
3
  import { SORTING_OPTIONS, deploymentsApiUrl, deploymentsApiUrlV2, headerNames } from "@northern.tech/utils/constants";
4
4
  import { customSort } from "@northern.tech/utils/helpers";
5
5
  import { HttpResponse, http } from "msw/http";
6
- //#region src/requestHandlers/releaseHandlers.ts
6
+ // src/requestHandlers/releaseHandlers.ts
7
7
  const deltaJobs = {
8
8
  "delta-job-1": {
9
9
  id: "delta-job-1",
@@ -237,7 +237,6 @@ const releaseHandlers = [
237
237
  ]);
238
238
  }))
239
239
  ];
240
- //#endregion
241
240
  export { releaseHandlers };
242
241
 
243
242
  //# sourceMappingURL=releaseHandlers.js.map
@@ -1,5 +1,3 @@
1
- //#region src/requestHandlers/requestHandlers.d.ts
2
1
  declare const handlers: import("msw/http").HttpHandler[];
3
- //#endregion
4
2
  export { handlers as default };
5
3
  //# sourceMappingURL=requestHandlers.d.ts.map
@@ -5,7 +5,7 @@ import { organizationHandlers } from "./organizationHandlers.js";
5
5
  import { releaseHandlers } from "./releaseHandlers.js";
6
6
  import { userHandlers } from "./userHandlers.js";
7
7
  import { HttpResponse, http } from "msw/http";
8
- //#region src/requestHandlers/requestHandlers.ts
8
+ // src/requestHandlers/requestHandlers.ts
9
9
  const testLocation = "/test";
10
10
  const handlers = [
11
11
  ...[
@@ -21,7 +21,6 @@ const handlers = [
21
21
  ...releaseHandlers,
22
22
  ...userHandlers
23
23
  ];
24
- //#endregion
25
24
  export { handlers as default };
26
25
 
27
26
  //# sourceMappingURL=requestHandlers.js.map
@@ -1,4 +1,2 @@
1
- //#region src/requestHandlers/userHandlers.d.ts
2
1
  export declare const userHandlers: import("msw/http").HttpHandler[];
3
- //#endregion
4
2
  //# sourceMappingURL=userHandlers.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import { accessTokens, mockApiResponses, permissionSets, rbacRoles, testSsoId, token, userId } from "../mockData.js";
2
- import { n as validated } from "../validation-DgBXU2ez.js";
2
+ import { n as validated } from "../validation-BwwNVIxo.js";
3
3
  import { APPLICATION_JWT_CONTENT_TYPE, useradmApiUrl, useradmApiUrlv2 } from "@northern.tech/utils/constants";
4
4
  import { HttpResponse, http } from "msw/http";
5
- //#region src/requestHandlers/userHandlers.ts
5
+ // src/requestHandlers/userHandlers.ts
6
6
  const userHandlers = [
7
7
  http.post(`${useradmApiUrl}/auth/login`, ({ request }) => {
8
8
  const authHeader = request.headers.get("authorization");
@@ -157,7 +157,6 @@ const userHandlers = [
157
157
  return new HttpResponse(token, { headers: { "Content-Type": APPLICATION_JWT_CONTENT_TYPE } });
158
158
  })
159
159
  ];
160
- //#endregion
161
160
  export { userHandlers };
162
161
 
163
162
  //# sourceMappingURL=userHandlers.js.map
@@ -1,5 +1,3 @@
1
- //#region src/requestHandlers/validation.d.ts
2
1
  export declare const validateRequest: (request: Request) => Promise<void>;
3
2
  export declare const validated: (resolver: any) => (info: any) => Promise<any>;
4
- //#endregion
5
3
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
1
- export { t as validateRequest, n as validated } from "../validation-DgBXU2ez.js";
1
+ export { t as validateRequest, n as validated } from "../validation-BwwNVIxo.js";
@@ -1,13 +1,18 @@
1
- import React from "react";
1
+ import React, { ReactNode } from "react";
2
+ import { ConfigureStoreOptions, EnhancedStore } from "@reduxjs/toolkit";
2
3
  import "@testing-library/jest-dom/vitest";
4
+ import { RenderOptions } from "@testing-library/react";
3
5
  export * from "@testing-library/react";
4
- //#region src/setupTests.d.ts
5
6
  export declare const TEST_LOCATION = "localhost";
6
7
  export declare const beforeAll: () => Promise<() => undefined>;
7
8
  export declare const beforeEach: () => void;
8
9
  export declare const afterEach: () => Promise<void>;
9
10
  export declare const afterAll: () => Promise<void>;
10
- declare const customRender: (ui: any, options?: {}) => {
11
+ export type CustomRenderOptions = RenderOptions & {
12
+ preloadedState?: ConfigureStoreOptions['preloadedState'];
13
+ store?: EnhancedStore;
14
+ };
15
+ declare const customRender: (ui: ReactNode, options?: CustomRenderOptions) => {
11
16
  container: HTMLElement;
12
17
  baseElement: HTMLElement;
13
18
  debug: (baseElement?: import("react-dom/client").Container | (Element | Document) | Array<import("react-dom/client").Container | (Element | Document)> | undefined, maxLength?: number | undefined, options?: import("pretty-format").OptionsReceived | undefined) => void;
@@ -62,8 +67,7 @@ declare const customRender: (ui: any, options?: {}) => {
62
67
  queryAllByTestId: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined) => HTMLElement[];
63
68
  findByTestId: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement>;
64
69
  findAllByTestId: (id: import("@testing-library/dom").Matcher, options?: import("@testing-library/dom").MatcherOptions | undefined, waitForElementOptions?: import("@testing-library/dom").waitForOptions | undefined) => Promise<HTMLElement[]>;
65
- store: any;
70
+ store: import("redux").Store<any, import("redux").UnknownAction, unknown>;
66
71
  };
67
- //#endregion
68
72
  export { customRender as render };
69
73
  //# sourceMappingURL=setupTests.d.ts.map
@@ -13,7 +13,7 @@ import { expect, vi } from "vitest";
13
13
  import { MessageChannel } from "worker_threads";
14
14
  import { jsx } from "react/jsx-runtime";
15
15
  export * from "@testing-library/react";
16
- //#region src/setupTests.tsx
16
+ // src/setupTests.tsx
17
17
  expect.addSnapshotSerializer(createSerializer({ includeStyles: true }));
18
18
  const TEST_LOCATION = "localhost";
19
19
  const oldWindowLocalStorage = window.localStorage;
@@ -119,7 +119,6 @@ const customRender = (ui, options = {}) => {
119
119
  })
120
120
  };
121
121
  };
122
- //#endregion
123
122
  export { TEST_LOCATION, afterAll, afterEach, beforeAll, beforeEach, customRender as render };
124
123
 
125
124
  //# sourceMappingURL=setupTests.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupTests.js","names":["mockToken"],"sources":["../src/setupTests.tsx"],"sourcesContent":["// Copyright 2025 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport { MemoryRouter } from 'react-router';\n\nimport { createSerializer } from '@emotion/jest';\nimport { ThemeProvider } from '@mui/material/styles';\n\nimport { yes } from '@northern.tech/utils/helpers';\nimport { configureStore } from '@reduxjs/toolkit';\nimport '@testing-library/jest-dom/vitest';\nimport { cleanup, render } from '@testing-library/react';\nimport { expect, vi } from 'vitest';\nimport { MessageChannel } from 'worker_threads';\n\nimport { menderEnvironment, mockDate, token as mockToken } from './mockData';\nimport { theme } from './utils';\n\nexpect.addSnapshotSerializer(createSerializer({ includeStyles: true }));\n\nexport const TEST_LOCATION = 'localhost';\n\nconst oldWindowLocalStorage = window.localStorage;\nconst oldWindowLocation = window.location;\nconst oldWindowSessionStorage = window.sessionStorage;\n\nvi.mock('uuid', () => ({ v4: () => 'mock-uuid' }));\n\nconst storage = {};\nglobal.HTMLCanvasElement.prototype.getContext = vi.fn();\n\nexport const beforeAll = async () => {\n // Temporarily workaround for bug in @testing-library/react when use user-event with `vi.useFakeTimers()`\n\n // Enable the mocking in tests.\n delete window.location;\n window.location = {\n ...oldWindowLocation,\n hostname: TEST_LOCATION,\n origin: 'http://localhost',\n assign: vi.fn(),\n replace: vi.fn(),\n reload: vi.fn()\n };\n delete window.sessionStorage;\n window.sessionStorage = {\n ...oldWindowSessionStorage,\n getItem: vi.fn(yes),\n setItem: vi.fn(),\n removeItem: vi.fn()\n };\n delete window.localStorage;\n window.localStorage = {\n ...oldWindowLocalStorage,\n getItem: vi.fn(name => {\n if (name === 'JWT') {\n return JSON.stringify({ token: mockToken });\n }\n return storage[name];\n }),\n setItem: vi.fn(name => storage[name]),\n removeItem: vi.fn()\n };\n window.mender_environment = menderEnvironment;\n window.ENV = 'test';\n global.MessageChannel = MessageChannel;\n global.ResizeObserver = vi.fn().mockImplementation(function () {\n return {\n observe: vi.fn(),\n unobserve: vi.fn(),\n disconnect: vi.fn()\n };\n });\n window.RTCPeerConnection = () => ({\n createOffer: () => {},\n setLocalDescription: () => {},\n createDataChannel: () => {}\n });\n\n Object.defineProperty(navigator, 'appVersion', { value: 'Test', writable: true });\n const intersectionObserverMock = function () {\n return {\n observe: vi.fn(),\n disconnect: vi.fn()\n };\n };\n window.prompt = vi.fn();\n window.IntersectionObserver = vi.fn().mockImplementation(intersectionObserverMock);\n vi.spyOn(React, 'useEffect').mockImplementation(React.useLayoutEffect);\n\n //TODO: remove, once https://github.com/testing-library/react-testing-library/issues/1197 resolved\n const _jest = globalThis.jest;\n\n globalThis.jest = {\n ...globalThis.jest\n };\n\n vi.stubGlobal('jest', {\n advanceTimersByTime: vi.advanceTimersByTime.bind(vi)\n });\n return () => void (globalThis.jest = _jest);\n};\n\nexport const beforeEach = () => {\n vi.useFakeTimers({ now: mockDate });\n vi.setSystemTime(mockDate);\n};\n\nexport const afterEach = async () => {\n cleanup();\n vi.runOnlyPendingTimers();\n vi.useRealTimers();\n};\n\nexport const afterAll = async () => {\n // restore `window.location` etc. to the original `jsdom` `Location` object\n window.localStorage = oldWindowLocalStorage;\n window.location = oldWindowLocation;\n window.sessionStorage = oldWindowSessionStorage;\n React.useEffect.mockRestore();\n vi.unstubAllGlobals();\n};\n\nconst customRender = (ui, options = {}) => {\n const { preloadedState = { users: { currentSession: { token: mockToken, expiresAt: undefined } } }, ...remainder } = options;\n const store = options.store ?? configureStore({ preloadedState });\n const AllTheProviders = ({ children }) => (\n <ThemeProvider theme={theme}>\n <MemoryRouter>\n <Provider store={store}>{children}</Provider>\n </MemoryRouter>\n </ThemeProvider>\n );\n return { store, ...render(ui, { wrapper: AllTheProviders, ...remainder }) };\n};\n\nexport * from '@testing-library/react';\n// override render method\n\nexport { customRender as render };\n"],"mappings":"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"}
1
+ {"version":3,"file":"setupTests.js","names":["mockToken"],"sources":["../src/setupTests.tsx"],"sourcesContent":["// Copyright 2025 Northern.tech AS\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n//@ts-nocheck\nimport React from 'react';\nimport type { ReactNode } from 'react';\nimport { Provider } from 'react-redux';\nimport { MemoryRouter } from 'react-router';\n\nimport { createSerializer } from '@emotion/jest';\nimport { ThemeProvider } from '@mui/material/styles';\n\nimport { yes } from '@northern.tech/utils/helpers';\nimport { ConfigureStoreOptions, EnhancedStore, configureStore } from '@reduxjs/toolkit';\nimport '@testing-library/jest-dom/vitest';\nimport { RenderOptions, cleanup, render } from '@testing-library/react';\nimport { expect, vi } from 'vitest';\nimport { MessageChannel } from 'worker_threads';\n\nimport { menderEnvironment, mockDate, token as mockToken } from './mockData';\nimport { theme } from './utils';\n\nexpect.addSnapshotSerializer(createSerializer({ includeStyles: true }));\n\nexport const TEST_LOCATION = 'localhost';\n\nconst oldWindowLocalStorage = window.localStorage;\nconst oldWindowLocation = window.location;\nconst oldWindowSessionStorage = window.sessionStorage;\n\nvi.mock('uuid', () => ({ v4: () => 'mock-uuid' }));\n\nconst storage = {};\nglobal.HTMLCanvasElement.prototype.getContext = vi.fn();\n\nexport const beforeAll = async () => {\n // Temporarily workaround for bug in @testing-library/react when use user-event with `vi.useFakeTimers()`\n\n // Enable the mocking in tests.\n delete window.location;\n window.location = {\n ...oldWindowLocation,\n hostname: TEST_LOCATION,\n origin: 'http://localhost',\n assign: vi.fn(),\n replace: vi.fn(),\n reload: vi.fn()\n };\n delete window.sessionStorage;\n window.sessionStorage = {\n ...oldWindowSessionStorage,\n getItem: vi.fn(yes),\n setItem: vi.fn(),\n removeItem: vi.fn()\n };\n delete window.localStorage;\n window.localStorage = {\n ...oldWindowLocalStorage,\n getItem: vi.fn(name => {\n if (name === 'JWT') {\n return JSON.stringify({ token: mockToken });\n }\n return storage[name];\n }),\n setItem: vi.fn(name => storage[name]),\n removeItem: vi.fn()\n };\n window.mender_environment = menderEnvironment;\n window.ENV = 'test';\n global.MessageChannel = MessageChannel;\n global.ResizeObserver = vi.fn().mockImplementation(function () {\n return {\n observe: vi.fn(),\n unobserve: vi.fn(),\n disconnect: vi.fn()\n };\n });\n window.RTCPeerConnection = () => ({\n createOffer: () => {},\n setLocalDescription: () => {},\n createDataChannel: () => {}\n });\n\n Object.defineProperty(navigator, 'appVersion', { value: 'Test', writable: true });\n const intersectionObserverMock = function () {\n return {\n observe: vi.fn(),\n disconnect: vi.fn()\n };\n };\n window.prompt = vi.fn();\n window.IntersectionObserver = vi.fn().mockImplementation(intersectionObserverMock);\n vi.spyOn(React, 'useEffect').mockImplementation(React.useLayoutEffect);\n\n //TODO: remove, once https://github.com/testing-library/react-testing-library/issues/1197 resolved\n const _jest = globalThis.jest;\n\n globalThis.jest = {\n ...globalThis.jest\n };\n\n vi.stubGlobal('jest', {\n advanceTimersByTime: vi.advanceTimersByTime.bind(vi)\n });\n return () => void (globalThis.jest = _jest);\n};\n\nexport const beforeEach = () => {\n vi.useFakeTimers({ now: mockDate });\n vi.setSystemTime(mockDate);\n};\n\nexport const afterEach = async () => {\n cleanup();\n vi.runOnlyPendingTimers();\n vi.useRealTimers();\n};\n\nexport const afterAll = async () => {\n // restore `window.location` etc. to the original `jsdom` `Location` object\n window.localStorage = oldWindowLocalStorage;\n window.location = oldWindowLocation;\n window.sessionStorage = oldWindowSessionStorage;\n React.useEffect.mockRestore();\n vi.unstubAllGlobals();\n};\n\nexport type CustomRenderOptions = RenderOptions & { preloadedState?: ConfigureStoreOptions['preloadedState']; store?: EnhancedStore };\n\nconst customRender = (ui: ReactNode, options: CustomRenderOptions = {}) => {\n const { preloadedState = { users: { currentSession: { token: mockToken, expiresAt: undefined } } }, ...remainder } = options;\n const store = options.store ?? configureStore({ preloadedState });\n const AllTheProviders = ({ children }) => (\n <ThemeProvider theme={theme}>\n <MemoryRouter>\n <Provider store={store}>{children}</Provider>\n </MemoryRouter>\n </ThemeProvider>\n );\n return { store, ...render(ui, { wrapper: AllTheProviders, ...remainder }) };\n};\n\nexport * from '@testing-library/react';\n// override render method\n\nexport { customRender as render };\n"],"mappings":"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"}
@@ -1,5 +1,3 @@
1
1
  import { ThemeOptions } from "@mui/material";
2
- //#region src/theme/light.d.ts
3
2
  export declare const light: ThemeOptions;
4
- //#endregion
5
3
  //# sourceMappingURL=light.d.ts.map
@@ -2,7 +2,6 @@ const light = { palette: {
2
2
  border: { main: "#e3e3e3" },
3
3
  background: { default: "#fff" }
4
4
  } };
5
- //#endregion
6
5
  export { light };
7
6
 
8
7
  //# sourceMappingURL=light.js.map
@@ -1,5 +1,4 @@
1
1
  import { PaletteOptions } from "@mui/material";
2
- //#region src/theme/mui.d.ts
3
2
  declare module '@mui/material' {
4
3
  interface PaletteOptions extends PaletteOptions {
5
4
  border?: {
@@ -7,5 +6,4 @@ declare module '@mui/material' {
7
6
  };
8
7
  }
9
8
  }
10
- //#endregion
11
9
  //# sourceMappingURL=mui.d.ts.map
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- //#region src/utils.d.ts
2
1
  export declare const selectMaterialUiSelectOption: (element: any, optionText: any, user: any) => Promise<void>;
3
2
  export declare const theme: import("@mui/material").Theme;
4
- //#endregion
5
3
  //# sourceMappingURL=utils.d.ts.map
package/dist/utils.js CHANGED
@@ -2,7 +2,7 @@ import { light } from "./theme/light.js";
2
2
  import { createTheme } from "@mui/material/styles";
3
3
  import { act, queryByRole, waitFor, within } from "@testing-library/react";
4
4
  import { expect, vi } from "vitest";
5
- //#region src/utils.ts
5
+ // src/utils.ts
6
6
  const selectMaterialUiSelectOption = async (element, optionText, user) => {
7
7
  const selectButton = element.parentNode.querySelector("[role=combobox]");
8
8
  await act(async () => await user.click(selectButton));
@@ -14,7 +14,6 @@ const selectMaterialUiSelectOption = async (element, optionText, user) => {
14
14
  return Promise.resolve();
15
15
  };
16
16
  const theme = createTheme(light);
17
- //#endregion
18
17
  export { selectMaterialUiSelectOption, theme };
19
18
 
20
19
  //# sourceMappingURL=utils.js.map