MOBILE-4065 tests: Fix translate mock
parent
1a8c4fde04
commit
8f518d1b79
|
@ -12,10 +12,10 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
import { AbstractType, Component, CUSTOM_ELEMENTS_SCHEMA, Type, ViewChild } from '@angular/core';
|
import { AbstractType, Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Type, ViewChild } from '@angular/core';
|
||||||
import { BrowserModule } from '@angular/platform-browser';
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
import { Observable, Subject } from 'rxjs';
|
import { Observable, of, Subject } from 'rxjs';
|
||||||
import { sep } from 'path';
|
import { sep } from 'path';
|
||||||
|
|
||||||
import { CORE_SITE_SCHEMAS } from '@services/sites';
|
import { CORE_SITE_SCHEMAS } from '@services/sites';
|
||||||
|
@ -33,7 +33,7 @@ import { TranslateService, TranslateStore } from '@ngx-translate/core';
|
||||||
import { CoreIonLoadingElement } from '@classes/ion-loading';
|
import { CoreIonLoadingElement } from '@classes/ion-loading';
|
||||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
||||||
import { DefaultUrlSerializer, UrlSerializer } from '@angular/router';
|
import { DefaultUrlSerializer, UrlSerializer } from '@angular/router';
|
||||||
import { CoreUtils } from '@services/utils/utils';
|
import { CoreUtils, CoreUtilsProvider } from '@services/utils/utils';
|
||||||
|
|
||||||
abstract class WrapperComponent<U> {
|
abstract class WrapperComponent<U> {
|
||||||
|
|
||||||
|
@ -45,8 +45,14 @@ type ServiceInjectionToken = AbstractType<unknown> | Type<unknown> | string;
|
||||||
|
|
||||||
let testBedInitialized = false;
|
let testBedInitialized = false;
|
||||||
const textUtils = new CoreTextUtilsProvider();
|
const textUtils = new CoreTextUtilsProvider();
|
||||||
const DEFAULT_SERVICE_SINGLETON_MOCKS: [CoreSingletonProxy, Record<string, unknown>][] = [
|
const DEFAULT_SERVICE_SINGLETON_MOCKS: [CoreSingletonProxy, unknown][] = [
|
||||||
[Translate, mock({ instant: key => key })],
|
[Translate, mock({
|
||||||
|
instant: key => key,
|
||||||
|
get: key => of(key),
|
||||||
|
onTranslationChange: new EventEmitter(),
|
||||||
|
onLangChange: new EventEmitter(),
|
||||||
|
onDefaultLangChange: new EventEmitter(),
|
||||||
|
})],
|
||||||
[CoreDB, mock({ getDB: () => mock() })],
|
[CoreDB, mock({ getDB: () => mock() })],
|
||||||
[CoreNavigator, mock({ navigateToSitePath: () => Promise.resolve(true) })],
|
[CoreNavigator, mock({ navigateToSitePath: () => Promise.resolve(true) })],
|
||||||
[ApplicationInit, mock({
|
[ApplicationInit, mock({
|
||||||
|
@ -66,7 +72,7 @@ const DEFAULT_SERVICE_SINGLETON_MOCKS: [CoreSingletonProxy, Record<string, unkno
|
||||||
[CoreDomUtils, mock({
|
[CoreDomUtils, mock({
|
||||||
showModalLoading: () => Promise.resolve(mock<CoreIonLoadingElement>({ dismiss: jest.fn() })),
|
showModalLoading: () => Promise.resolve(mock<CoreIonLoadingElement>({ dismiss: jest.fn() })),
|
||||||
})],
|
})],
|
||||||
[CoreUtils, mock({
|
[CoreUtils, mock(new CoreUtilsProvider(), {
|
||||||
nextTick: () => Promise.resolve(),
|
nextTick: () => Promise.resolve(),
|
||||||
})],
|
})],
|
||||||
];
|
];
|
||||||
|
@ -273,8 +279,17 @@ export function mockSingleton<T>(
|
||||||
const methods = Array.isArray(methodsOrProperties) ? methodsOrProperties : [];
|
const methods = Array.isArray(methodsOrProperties) ? methodsOrProperties : [];
|
||||||
const instance = getServiceInstance(singleton.injectionToken) as T;
|
const instance = getServiceInstance(singleton.injectionToken) as T;
|
||||||
const mockInstance = mock(instance, methods);
|
const mockInstance = mock(instance, methods);
|
||||||
|
const mockInstancePrototype = Object.getPrototypeOf(mockInstance);
|
||||||
|
|
||||||
Object.assign(mockInstance as Record<string, unknown>, properties);
|
for (const [name, value] of Object.entries(properties)) {
|
||||||
|
const descriptor = Object.getOwnPropertyDescriptor(mockInstancePrototype, name);
|
||||||
|
|
||||||
|
if (descriptor && !descriptor.writable) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mockInstance[name] = value;
|
||||||
|
}
|
||||||
|
|
||||||
singleton.setInstance(mockInstance);
|
singleton.setInstance(mockInstance);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue