MOBILE-4059 testing: Improve mockSingleton types
parent
4ca9a4ad7b
commit
0545d3a8c8
|
@ -63,7 +63,7 @@ function prepareStubs(config: Partial<CoreDatabaseConfiguration> = {}): [User[],
|
||||||
});
|
});
|
||||||
const table = new CoreDatabaseTableProxy<User>(config, database, 'users');
|
const table = new CoreDatabaseTableProxy<User>(config, database, 'users');
|
||||||
|
|
||||||
mockSingleton(CoreConfig, { isReady: () => Promise.resolve() });
|
mockSingleton(CoreConfig, { ready: () => Promise.resolve() });
|
||||||
|
|
||||||
return [records, database, table];
|
return [records, database, table];
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,15 @@ describe('CoreFormatTextDirective', () => {
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
mockSingleton(CoreSites, { getSite: () => Promise.reject() });
|
mockSingleton(CoreSites, { getSite: () => Promise.reject() });
|
||||||
mockSingleton(CoreConfig, { get: (_, defaultValue) => defaultValue });
|
mockSingleton(CoreConfig, {
|
||||||
|
get(name, defaultValue) {
|
||||||
|
if (defaultValue === undefined) {
|
||||||
|
throw Error(`Default value not provided for '${name}'`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Promise.resolve(defaultValue);
|
||||||
|
},
|
||||||
|
});
|
||||||
mockSingleton(CoreFilter, { formatText: text => Promise.resolve(text) });
|
mockSingleton(CoreFilter, { formatText: text => Promise.resolve(text) });
|
||||||
mockSingleton(CoreFilterHelper, { getFiltersAndFormatText: text => Promise.resolve({ text, filters: [] }) });
|
mockSingleton(CoreFilterHelper, { getFiltersAndFormatText: text => Promise.resolve({ text, filters: [] }) });
|
||||||
|
|
||||||
|
@ -64,7 +72,7 @@ describe('CoreFormatTextDirective', () => {
|
||||||
|
|
||||||
it('should format text', async () => {
|
it('should format text', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
mockSingleton(CoreFilter, { formatText: () => 'Formatted text' });
|
mockSingleton(CoreFilter, { formatText: () => Promise.resolve('Formatted text') });
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const { nativeElement } = await renderTemplate(
|
const { nativeElement } = await renderTemplate(
|
||||||
|
@ -131,7 +139,7 @@ describe('CoreFormatTextDirective', () => {
|
||||||
mockSingleton(CoreFilepool, { getSrcByUrl: () => Promise.resolve('file://local-path') });
|
mockSingleton(CoreFilepool, { getSrcByUrl: () => Promise.resolve('file://local-path') });
|
||||||
mockSingleton(CoreSites, {
|
mockSingleton(CoreSites, {
|
||||||
getSite: () => Promise.resolve(site),
|
getSite: () => Promise.resolve(site),
|
||||||
getCurrentSite: () => Promise.resolve(site),
|
getCurrentSite: () => site,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
|
@ -40,7 +40,7 @@ describe('CoreNavigator', () => {
|
||||||
|
|
||||||
router = mockSingleton(Router, { url: '/' });
|
router = mockSingleton(Router, { url: '/' });
|
||||||
|
|
||||||
mockSingleton(CoreSites, { getCurrentSiteId: () => 42, isLoggedIn: () => true });
|
mockSingleton(CoreSites, { getCurrentSiteId: () => '42', isLoggedIn: () => true });
|
||||||
mockSingleton(CoreMainMenu, { isMainMenuTab: path => Promise.resolve(currentMainMenuHandlers.includes(path)) });
|
mockSingleton(CoreMainMenu, { isMainMenuTab: path => Promise.resolve(currentMainMenuHandlers.includes(path)) });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -183,8 +183,7 @@ export function mock<T>(
|
||||||
return instance as T;
|
return instance as T;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function mockSingleton<T>(singletonClass: CoreSingletonProxy<T>, instance: T): T;
|
export function mockSingleton<T>(singletonClass: CoreSingletonProxy<T>, instance: T | Partial<T>): T;
|
||||||
export function mockSingleton<T>(singletonClass: CoreSingletonProxy<unknown>, instance?: Record<string, unknown>): T;
|
|
||||||
export function mockSingleton<T>(
|
export function mockSingleton<T>(
|
||||||
singletonClass: CoreSingletonProxy<unknown>,
|
singletonClass: CoreSingletonProxy<unknown>,
|
||||||
methods: string[],
|
methods: string[],
|
||||||
|
|
Loading…
Reference in New Issue