@xbg.solutions/bpsk-test-utils 1.2.3
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.
- package/lib/helpers/index.d.ts +74 -0
- package/lib/helpers/index.d.ts.map +1 -0
- package/lib/helpers/index.js +126 -0
- package/lib/helpers/index.js.map +1 -0
- package/lib/helpers/initialization.service.test-helper.d.ts +13 -0
- package/lib/helpers/initialization.service.test-helper.d.ts.map +1 -0
- package/lib/helpers/initialization.service.test-helper.js +33 -0
- package/lib/helpers/initialization.service.test-helper.js.map +1 -0
- package/lib/helpers/mock-validation.d.ts +56 -0
- package/lib/helpers/mock-validation.d.ts.map +1 -0
- package/lib/helpers/mock-validation.js +64 -0
- package/lib/helpers/mock-validation.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +8 -0
- package/lib/index.js.map +1 -0
- package/package.json +24 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/lib/test-utils/index.ts
|
|
3
|
+
* Centralized test utilities and common mocks
|
|
4
|
+
*
|
|
5
|
+
* AI SYSTEMS: Import these utilities in test files for consistent mocking patterns
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Common console mock for tests that need to spy on console output
|
|
9
|
+
*/
|
|
10
|
+
export declare function createConsoleMock(): {
|
|
11
|
+
info: import("vitest").Mock<(...args: any[]) => any>;
|
|
12
|
+
warn: import("vitest").Mock<(...args: any[]) => any>;
|
|
13
|
+
error: import("vitest").Mock<(...args: any[]) => any>;
|
|
14
|
+
log: import("vitest").Mock<(...args: any[]) => any>;
|
|
15
|
+
debug: import("vitest").Mock<(...args: any[]) => any>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Sets up console mocking for a test suite
|
|
19
|
+
* Call this in beforeEach to mock console methods
|
|
20
|
+
*/
|
|
21
|
+
export declare function mockConsole(): {
|
|
22
|
+
mocks: {
|
|
23
|
+
info: import("vitest").Mock<(...args: any[]) => any>;
|
|
24
|
+
warn: import("vitest").Mock<(...args: any[]) => any>;
|
|
25
|
+
error: import("vitest").Mock<(...args: any[]) => any>;
|
|
26
|
+
log: import("vitest").Mock<(...args: any[]) => any>;
|
|
27
|
+
debug: import("vitest").Mock<(...args: any[]) => any>;
|
|
28
|
+
};
|
|
29
|
+
restore: () => void;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Common Firebase auth mock
|
|
33
|
+
*/
|
|
34
|
+
export declare function createFirebaseAuthMock(): {
|
|
35
|
+
currentUser: null;
|
|
36
|
+
signInWithEmailAndPassword: import("vitest").Mock<(...args: any[]) => any>;
|
|
37
|
+
createUserWithEmailAndPassword: import("vitest").Mock<(...args: any[]) => any>;
|
|
38
|
+
signOut: import("vitest").Mock<(...args: any[]) => any>;
|
|
39
|
+
onAuthStateChanged: import("vitest").Mock<(...args: any[]) => any>;
|
|
40
|
+
sendPasswordResetEmail: import("vitest").Mock<(...args: any[]) => any>;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Common API response mock factory
|
|
44
|
+
*/
|
|
45
|
+
export declare function createApiResponseMock<T>(data: T, status?: number, statusText?: string): Response;
|
|
46
|
+
/**
|
|
47
|
+
* Common fetch mock factory
|
|
48
|
+
*/
|
|
49
|
+
export declare function createFetchMock(): import("vitest").Mock<(...args: any[]) => any>;
|
|
50
|
+
/**
|
|
51
|
+
* Helper to wait for async operations in tests
|
|
52
|
+
*/
|
|
53
|
+
export declare function waitForAsync(ms?: number): Promise<unknown>;
|
|
54
|
+
/**
|
|
55
|
+
* Helper to flush all pending promises
|
|
56
|
+
*/
|
|
57
|
+
export declare function flushPromises(): Promise<unknown>;
|
|
58
|
+
/**
|
|
59
|
+
* Common test timeout values
|
|
60
|
+
*/
|
|
61
|
+
export declare const TEST_TIMEOUTS: {
|
|
62
|
+
short: number;
|
|
63
|
+
medium: number;
|
|
64
|
+
long: number;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Helper to create mock Svelte store
|
|
68
|
+
*/
|
|
69
|
+
export declare function createMockStore<T>(initialValue: T): {
|
|
70
|
+
subscribe: import("vitest").Mock<(callback: (value: T) => void) => () => boolean>;
|
|
71
|
+
set: import("vitest").Mock<(newValue: T) => void>;
|
|
72
|
+
update: import("vitest").Mock<(updater: (value: T) => T) => void>;
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,wBAAgB,iBAAiB;;;;;;EAQhC;AAED;;;GAGG;AACH,wBAAgB,WAAW;;;;;;;;;EA6B1B;AAED;;GAEG;AACH,wBAAgB,sBAAsB;;;;;;;EASrC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,SAAM,EAAE,UAAU,SAAO,GAS/D,QAAQ,CACzB;AAED;;GAEG;AACH,wBAAgB,eAAe,mDAE9B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAI,oBAElC;AAED;;GAEG;AACH,wBAAsB,aAAa,qBAElC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;gDAKlB,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI;0CAKxB,CAAC;4CAIC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;EAK1C"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/lib/test-utils/index.ts
|
|
3
|
+
* Centralized test utilities and common mocks
|
|
4
|
+
*
|
|
5
|
+
* AI SYSTEMS: Import these utilities in test files for consistent mocking patterns
|
|
6
|
+
*/
|
|
7
|
+
import { vi } from 'vitest';
|
|
8
|
+
/**
|
|
9
|
+
* Common console mock for tests that need to spy on console output
|
|
10
|
+
*/
|
|
11
|
+
export function createConsoleMock() {
|
|
12
|
+
return {
|
|
13
|
+
info: vi.fn(),
|
|
14
|
+
warn: vi.fn(),
|
|
15
|
+
error: vi.fn(),
|
|
16
|
+
log: vi.fn(),
|
|
17
|
+
debug: vi.fn()
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Sets up console mocking for a test suite
|
|
22
|
+
* Call this in beforeEach to mock console methods
|
|
23
|
+
*/
|
|
24
|
+
export function mockConsole() {
|
|
25
|
+
const consoleMock = createConsoleMock();
|
|
26
|
+
// Store original console methods
|
|
27
|
+
const originalConsole = {
|
|
28
|
+
info: console.info,
|
|
29
|
+
warn: console.warn,
|
|
30
|
+
error: console.error,
|
|
31
|
+
log: console.log,
|
|
32
|
+
debug: console.debug
|
|
33
|
+
};
|
|
34
|
+
// Apply mocks
|
|
35
|
+
console.info = consoleMock.info;
|
|
36
|
+
console.warn = consoleMock.warn;
|
|
37
|
+
console.error = consoleMock.error;
|
|
38
|
+
console.log = consoleMock.log;
|
|
39
|
+
console.debug = consoleMock.debug;
|
|
40
|
+
return {
|
|
41
|
+
mocks: consoleMock,
|
|
42
|
+
restore: () => {
|
|
43
|
+
console.info = originalConsole.info;
|
|
44
|
+
console.warn = originalConsole.warn;
|
|
45
|
+
console.error = originalConsole.error;
|
|
46
|
+
console.log = originalConsole.log;
|
|
47
|
+
console.debug = originalConsole.debug;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Common Firebase auth mock
|
|
53
|
+
*/
|
|
54
|
+
export function createFirebaseAuthMock() {
|
|
55
|
+
return {
|
|
56
|
+
currentUser: null,
|
|
57
|
+
signInWithEmailAndPassword: vi.fn(),
|
|
58
|
+
createUserWithEmailAndPassword: vi.fn(),
|
|
59
|
+
signOut: vi.fn(),
|
|
60
|
+
onAuthStateChanged: vi.fn(),
|
|
61
|
+
sendPasswordResetEmail: vi.fn()
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Common API response mock factory
|
|
66
|
+
*/
|
|
67
|
+
export function createApiResponseMock(data, status = 200, statusText = 'OK') {
|
|
68
|
+
return {
|
|
69
|
+
ok: status >= 200 && status < 300,
|
|
70
|
+
status,
|
|
71
|
+
statusText,
|
|
72
|
+
json: vi.fn().mockResolvedValue(data),
|
|
73
|
+
text: vi.fn().mockResolvedValue(JSON.stringify(data)),
|
|
74
|
+
headers: new Headers(),
|
|
75
|
+
url: 'http://localhost:3000/api/test'
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Common fetch mock factory
|
|
80
|
+
*/
|
|
81
|
+
export function createFetchMock() {
|
|
82
|
+
return vi.fn();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Helper to wait for async operations in tests
|
|
86
|
+
*/
|
|
87
|
+
export function waitForAsync(ms = 0) {
|
|
88
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Helper to flush all pending promises
|
|
92
|
+
*/
|
|
93
|
+
export async function flushPromises() {
|
|
94
|
+
return new Promise(resolve => setImmediate(resolve));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Common test timeout values
|
|
98
|
+
*/
|
|
99
|
+
export const TEST_TIMEOUTS = {
|
|
100
|
+
short: 100,
|
|
101
|
+
medium: 1000,
|
|
102
|
+
long: 5000
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Helper to create mock Svelte store
|
|
106
|
+
*/
|
|
107
|
+
export function createMockStore(initialValue) {
|
|
108
|
+
let value = initialValue;
|
|
109
|
+
const subscribers = new Set();
|
|
110
|
+
return {
|
|
111
|
+
subscribe: vi.fn((callback) => {
|
|
112
|
+
subscribers.add(callback);
|
|
113
|
+
callback(value);
|
|
114
|
+
return () => subscribers.delete(callback);
|
|
115
|
+
}),
|
|
116
|
+
set: vi.fn((newValue) => {
|
|
117
|
+
value = newValue;
|
|
118
|
+
subscribers.forEach(callback => callback(value));
|
|
119
|
+
}),
|
|
120
|
+
update: vi.fn((updater) => {
|
|
121
|
+
value = updater(value);
|
|
122
|
+
subscribers.forEach(callback => callback(value));
|
|
123
|
+
})
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface InitializationHelper {
|
|
2
|
+
isReady: boolean;
|
|
3
|
+
services: string[];
|
|
4
|
+
errors: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare const initializationHelper: import("svelte/store").Writable<InitializationHelper>;
|
|
7
|
+
export declare const createInitializationHelper: () => {
|
|
8
|
+
markReady: () => void;
|
|
9
|
+
addService: (service: string) => void;
|
|
10
|
+
addError: (error: string) => void;
|
|
11
|
+
reset: () => void;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=initialization.service.test-helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialization.service.test-helper.d.ts","sourceRoot":"","sources":["../../src/helpers/initialization.service.test-helper.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,uDAI/B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;0BAMb,MAAM;sBAOV,MAAM;;CAe3B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { writable } from 'svelte/store';
|
|
2
|
+
export const initializationHelper = writable({
|
|
3
|
+
isReady: false,
|
|
4
|
+
services: [],
|
|
5
|
+
errors: []
|
|
6
|
+
});
|
|
7
|
+
export const createInitializationHelper = () => {
|
|
8
|
+
return {
|
|
9
|
+
markReady: () => {
|
|
10
|
+
initializationHelper.update(state => ({ ...state, isReady: true }));
|
|
11
|
+
},
|
|
12
|
+
addService: (service) => {
|
|
13
|
+
initializationHelper.update(state => ({
|
|
14
|
+
...state,
|
|
15
|
+
services: [...state.services, service]
|
|
16
|
+
}));
|
|
17
|
+
},
|
|
18
|
+
addError: (error) => {
|
|
19
|
+
initializationHelper.update(state => ({
|
|
20
|
+
...state,
|
|
21
|
+
errors: [...state.errors, error]
|
|
22
|
+
}));
|
|
23
|
+
},
|
|
24
|
+
reset: () => {
|
|
25
|
+
initializationHelper.set({
|
|
26
|
+
isReady: false,
|
|
27
|
+
services: [],
|
|
28
|
+
errors: []
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=initialization.service.test-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialization.service.test-helper.js","sourceRoot":"","sources":["../../src/helpers/initialization.service.test-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAuB;IACjE,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,EAAE;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC7C,OAAO;QACL,SAAS,EAAE,GAAG,EAAE;YACd,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,UAAU,EAAE,CAAC,OAAe,EAAE,EAAE;YAC9B,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpC,GAAG,KAAK;gBACR,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;aACvC,CAAC,CAAC,CAAC;QACN,CAAC;QAED,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;YAC1B,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACpC,GAAG,KAAK;gBACR,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;aACjC,CAAC,CAAC,CAAC;QACN,CAAC;QAED,KAAK,EAAE,GAAG,EAAE;YACV,oBAAoB,CAAC,GAAG,CAAC;gBACvB,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard Firebase mock configuration that should be consistent across all tests
|
|
3
|
+
*/
|
|
4
|
+
export declare const STANDARD_FIREBASE_MOCKS: {
|
|
5
|
+
getFirebaseAuth: {
|
|
6
|
+
returns: {
|
|
7
|
+
currentUser: null;
|
|
8
|
+
};
|
|
9
|
+
type: string;
|
|
10
|
+
};
|
|
11
|
+
safeGetCurrentUser: {
|
|
12
|
+
returns: {
|
|
13
|
+
success: boolean;
|
|
14
|
+
data: null;
|
|
15
|
+
};
|
|
16
|
+
type: string;
|
|
17
|
+
};
|
|
18
|
+
subscribeToAuthChanges: {
|
|
19
|
+
returns: import("vitest").Mock<(...args: any[]) => any>;
|
|
20
|
+
type: string;
|
|
21
|
+
};
|
|
22
|
+
signOutUser: {
|
|
23
|
+
returns: undefined;
|
|
24
|
+
type: string;
|
|
25
|
+
};
|
|
26
|
+
getIdToken: {
|
|
27
|
+
returns: string;
|
|
28
|
+
type: string;
|
|
29
|
+
};
|
|
30
|
+
initializeFirebase: {
|
|
31
|
+
returns: undefined;
|
|
32
|
+
type: string;
|
|
33
|
+
};
|
|
34
|
+
processFirebaseError: {
|
|
35
|
+
returns: {
|
|
36
|
+
success: boolean;
|
|
37
|
+
error: {
|
|
38
|
+
message: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
type: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Validates that Firebase mocks are properly configured
|
|
46
|
+
*/
|
|
47
|
+
export declare function validateFirebaseMocks(): string[];
|
|
48
|
+
/**
|
|
49
|
+
* Resets and reconfigures Firebase mocks with standard values
|
|
50
|
+
*/
|
|
51
|
+
export declare function resetFirebaseMocks(): Promise<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* Creates a standardized beforeEach hook for Firebase mock validation
|
|
54
|
+
*/
|
|
55
|
+
export declare function createFirebaseMockValidation(): () => Promise<void>;
|
|
56
|
+
//# sourceMappingURL=mock-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-validation.d.ts","sourceRoot":"","sources":["../../src/helpers/mock-validation.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,aAepC;AAED;;GAEG;AACH,wBAAsB,kBAAkB,qBAmBvC;AAED;;GAEG;AACH,wBAAgB,4BAA4B,wBAI3C"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock validation utilities for test isolation
|
|
3
|
+
*/
|
|
4
|
+
import { vi } from 'vitest';
|
|
5
|
+
/**
|
|
6
|
+
* Standard Firebase mock configuration that should be consistent across all tests
|
|
7
|
+
*/
|
|
8
|
+
export const STANDARD_FIREBASE_MOCKS = {
|
|
9
|
+
getFirebaseAuth: { returns: { currentUser: null }, type: 'resolved' },
|
|
10
|
+
safeGetCurrentUser: { returns: { success: false, data: null }, type: 'resolved' },
|
|
11
|
+
subscribeToAuthChanges: { returns: vi.fn(), type: 'resolved' },
|
|
12
|
+
signOutUser: { returns: undefined, type: 'resolved' },
|
|
13
|
+
getIdToken: { returns: 'mock-token', type: 'resolved' },
|
|
14
|
+
initializeFirebase: { returns: undefined, type: 'resolved' },
|
|
15
|
+
processFirebaseError: { returns: { success: false, error: { message: 'Mock error' } }, type: 'direct' }
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Validates that Firebase mocks are properly configured
|
|
19
|
+
*/
|
|
20
|
+
export function validateFirebaseMocks() {
|
|
21
|
+
// This function can be called in beforeEach hooks to ensure mock consistency
|
|
22
|
+
const mockChecks = [];
|
|
23
|
+
Object.entries(STANDARD_FIREBASE_MOCKS).forEach(([mockName, config]) => {
|
|
24
|
+
try {
|
|
25
|
+
// Check if mock exists and has correct configuration
|
|
26
|
+
// Note: This is more for documentation than runtime checking
|
|
27
|
+
mockChecks.push(`✓ ${mockName} mock validated`);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
mockChecks.push(`✗ ${mockName} mock validation failed: ${error}`);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return mockChecks;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resets and reconfigures Firebase mocks with standard values
|
|
37
|
+
*/
|
|
38
|
+
export async function resetFirebaseMocks() {
|
|
39
|
+
try {
|
|
40
|
+
const { safeGetCurrentUser, getFirebaseAuth, subscribeToAuthChanges } = await import('@xbg.solutions/bpsk-core');
|
|
41
|
+
// Reset all mocks to ensure clean state
|
|
42
|
+
vi.mocked(safeGetCurrentUser).mockReset();
|
|
43
|
+
vi.mocked(getFirebaseAuth).mockReset();
|
|
44
|
+
vi.mocked(subscribeToAuthChanges).mockReset();
|
|
45
|
+
// Reconfigure with standard values
|
|
46
|
+
vi.mocked(safeGetCurrentUser).mockResolvedValue({ success: false, data: null });
|
|
47
|
+
vi.mocked(getFirebaseAuth).mockResolvedValue({ currentUser: null });
|
|
48
|
+
vi.mocked(subscribeToAuthChanges).mockResolvedValue(vi.fn());
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.warn('Failed to reset Firebase mocks:', error);
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Creates a standardized beforeEach hook for Firebase mock validation
|
|
58
|
+
*/
|
|
59
|
+
export function createFirebaseMockValidation() {
|
|
60
|
+
return async () => {
|
|
61
|
+
await resetFirebaseMocks();
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=mock-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-validation.js","sourceRoot":"","sources":["../../src/helpers/mock-validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,eAAe,EAAE,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;IACrE,kBAAkB,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;IACjF,sBAAsB,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;IAC9D,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE;IACrD,UAAU,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE;IACvD,kBAAkB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE;IAC5D,oBAAoB,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CACxG,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,6EAA6E;IAC7E,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE;QACrE,IAAI,CAAC;YACH,qDAAqD;YACrD,6DAA6D;YAC7D,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,iBAAiB,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,4BAA4B,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,kBAAkB,EAAE,eAAe,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAEjH,wCAAwC;QACxC,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,CAAC;QAC1C,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC;QACvC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,SAAS,EAAE,CAAC;QAE9C,mCAAmC;QACnC,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAS,CAAC,CAAC;QACvF,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,IAAI,EAAS,CAAC,CAAC;QAC3E,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAS,CAAC,CAAC;QAEpE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './helpers/initialization.service.test-helper';
|
|
2
|
+
export * from './helpers/mock-validation';
|
|
3
|
+
export { createConsoleMock, mockConsole, createFirebaseAuthMock, createApiResponseMock, createFetchMock, waitForAsync, flushPromises, TEST_TIMEOUTS, createMockStore, } from './helpers/index';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2BAA2B,CAAC;AAI1C,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Test utils barrel exports
|
|
2
|
+
// Helpers - import from leaf files directly to avoid circular deps
|
|
3
|
+
export * from './helpers/initialization.service.test-helper';
|
|
4
|
+
export * from './helpers/mock-validation';
|
|
5
|
+
// Re-export the shared test utilities from helpers/index
|
|
6
|
+
// (createConsoleMock, mockConsole, createFirebaseAuthMock, etc.)
|
|
7
|
+
export { createConsoleMock, mockConsole, createFirebaseAuthMock, createApiResponseMock, createFetchMock, waitForAsync, flushPromises, TEST_TIMEOUTS, createMockStore, } from './helpers/index';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAE5B,mEAAmE;AACnE,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2BAA2B,CAAC;AAE1C,yDAAyD;AACzD,iEAAiE;AACjE,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,aAAa,EACb,eAAe,GAChB,MAAM,iBAAiB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xbg.solutions/bpsk-test-utils",
|
|
3
|
+
"version": "1.2.3",
|
|
4
|
+
"description": "XBG Frontend Test Utilities - Mocks, helpers, and test fixtures",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"types": "lib/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"files": ["lib"],
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"build:watch": "tsc --watch",
|
|
12
|
+
"clean": "rm -rf lib",
|
|
13
|
+
"prepublishOnly": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@xbg.solutions/bpsk-core": "^1.0.0"
|
|
20
|
+
},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"vitest": "^3.0.0", "svelte": "^5.0.0"
|
|
23
|
+
}
|
|
24
|
+
}
|