Skip to content

Commit b2605ec

Browse files
authored
(test) Suppress store override warnings and upgrade testing-library (#1487)
1 parent b05c126 commit b2605ec

File tree

8 files changed

+44
-15
lines changed

8 files changed

+44
-15
lines changed

packages/apps/esm-implementer-tools-app/jest.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ module.exports = {
1111
'^lodash-es$': 'lodash',
1212
'^lodash-es/(.*)$': 'lodash/$1',
1313
'\\.(s?css)$': 'identity-obj-proxy',
14+
'@openmrs/esm-framework/src/internal': '@openmrs/esm-framework/mock',
1415
'@openmrs/esm-framework': '@openmrs/esm-framework/mock',
1516
dexie: require.resolve('dexie'),
1617
},

packages/framework/esm-config/src/setup-tests.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
/* eslint-disable no-undef */
2+
import { vi } from 'vitest';
3+
24
global.window.System = {
3-
import: jest.fn().mockRejectedValue(new Error('config.json not available in import map')),
4-
resolve: jest.fn().mockImplementation(() => {
5+
import: vi.fn().mockRejectedValue(new Error('config.json not available in import map')),
6+
resolve: vi.fn().mockImplementation(() => {
57
throw new Error('config.json not available in import map');
68
}),
7-
register: jest.fn(),
9+
register: vi.fn(),
810
};
911

1012
global.window.openmrsBase = '/openmrs';

packages/framework/esm-framework/docs/functions/createGlobalStore.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
> **createGlobalStore**\<`T`\>(`name`, `initialState`): `StoreApi`\<`T`\>
66
7-
Defined in: [packages/framework/esm-state/src/state.ts:30](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L30)
7+
Defined in: [packages/framework/esm-state/src/state.ts:43](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L43)
88

99
Creates a Zustand store.
1010

packages/framework/esm-framework/docs/functions/getGlobalStore.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
> **getGlobalStore**\<`T`\>(`name`, `fallbackState?`): `StoreApi`\<`T`\>
66
7-
Defined in: [packages/framework/esm-state/src/state.ts:92](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L92)
7+
Defined in: [packages/framework/esm-state/src/state.ts:109](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L109)
88

99
Returns the existing store named `name`,
1010
or creates a new store named `name` if none exists.

packages/framework/esm-framework/docs/functions/subscribeTo.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
> **subscribeTo**\<`T`, `U`\>(`store`, `handle`): () => `void`
88
9-
Defined in: [packages/framework/esm-state/src/state.ts:109](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L109)
9+
Defined in: [packages/framework/esm-state/src/state.ts:126](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L126)
1010

1111
### Type Parameters
1212

@@ -40,7 +40,7 @@ Defined in: [packages/framework/esm-state/src/state.ts:109](https://github.com/o
4040

4141
> **subscribeTo**\<`T`, `U`\>(`store`, `select`, `handle`): () => `void`
4242
43-
Defined in: [packages/framework/esm-state/src/state.ts:110](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L110)
43+
Defined in: [packages/framework/esm-state/src/state.ts:127](https://github.com/openmrs/openmrs-esm-core/blob/main/packages/framework/esm-state/src/state.ts#L127)
4444

4545
### Type Parameters
4646

packages/framework/esm-framework/setup-tests.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1-
import { afterEach } from 'vitest';
2-
import type {} from '@openmrs/esm-globals';
31
import '@testing-library/jest-dom/vitest';
42
import { cleanup } from '@testing-library/react';
3+
import { afterEach } from 'vitest';
4+
import type {} from '@openmrs/esm-globals';
5+
6+
declare global {
7+
interface Window {
8+
IS_REACT_ACT_ENVIRONMENT?: boolean;
9+
}
10+
}
511

612
// Configure React's act() environment for Vitest
713
// See: https://github.com/testing-library/react-testing-library/issues/1061
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1-
window.openmrsBase = '/openmrs';
2-
window.spaBase = '/spa';
3-
window.getOpenmrsSpaBase = () => '/openmrs/spa/';
1+
/* eslint-env node */
2+
import { vi } from 'vitest';
3+
4+
global.window.openmrsBase = '/openmrs';
5+
global.window.spaBase = '/spa';
6+
global.window.getOpenmrsSpaBase = () => '/openmrs/spa/';

packages/framework/esm-state/src/state.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,23 @@ interface StoreEntity {
1111

1212
const availableStores: Record<string, StoreEntity> = {};
1313

14+
// Check if we're in a test environment (Vitest or Jest)
15+
const isTestEnvironment = () => {
16+
try {
17+
return (
18+
process.env.NODE_ENV === 'test' ||
19+
(typeof process !== 'undefined' && (process.env.VITEST === 'true' || process.env.JEST_WORKER_ID !== undefined)) ||
20+
(typeof globalThis !== 'undefined' && ('__vitest_worker__' in globalThis || '__jest__' in globalThis))
21+
);
22+
} catch {
23+
return false;
24+
}
25+
};
26+
1427
// spaEnv isn't available immediately. Wait a bit before making stores available
1528
// on window in development mode.
1629
setTimeout(() => {
17-
if (window && window.spaEnv === 'development') {
30+
if (typeof window !== 'undefined' && window.spaEnv === 'development') {
1831
window['stores'] = availableStores;
1932
}
2033
}, 1000);
@@ -32,7 +45,9 @@ export function createGlobalStore<T>(name: string, initialState: T): StoreApi<T>
3245

3346
if (available) {
3447
if (available.active) {
35-
console.error(`Attempted to override the existing store ${name}. Make sure that stores are only created once.`);
48+
if (!isTestEnvironment()) {
49+
console.error(`Attempted to override the existing store ${name}. Make sure that stores are only created once.`);
50+
}
3651
} else {
3752
available.value.setState(initialState, true);
3853
}
@@ -64,7 +79,9 @@ export function registerGlobalStore<T>(name: string, store: StoreApi<T>): StoreA
6479

6580
if (available) {
6681
if (available.active) {
67-
console.error(`Attempted to override the existing store ${name}. Make sure that stores are only created once.`);
82+
if (!isTestEnvironment()) {
83+
console.error(`Attempted to override the existing store ${name}. Make sure that stores are only created once.`);
84+
}
6885
} else {
6986
available.value = store;
7087
}

0 commit comments

Comments
 (0)