test: adjust tests to config init changes

This commit is contained in:
Jovan Krunić
2022-02-09 21:28:18 +01:00
parent c9720dc104
commit 19b36c07b7
7 changed files with 61 additions and 45 deletions

View File

@@ -89,3 +89,31 @@ export const sampleAuthConfiguration: {
},
},
};
export const sampleDefaultPolygon = {
"coordinates": [
[
[
8.660432999690723,
50.123027017044436
],
[
8.675496285518358,
50.123027017044436
],
[
8.675496285518358,
50.13066176448642
],
[
8.660432999690723,
50.13066176448642
],
[
8.660432999690723,
50.123027017044436
]
]
],
"type": "Polygon"
}

View File

@@ -35,6 +35,7 @@ import packageJson from '../../../../package.json';
describe('ConfigProvider', () => {
let configProvider: ConfigProvider;
let storageProviderSpy: jasmine.SpyObj<StorageProvider>;
let ngxLogger: jasmine.SpyObj<NGXLogger>;
beforeEach(() => {
const storageProviderMethodSpy = jasmine.createSpyObj('StorageProvider', [
@@ -46,10 +47,7 @@ describe('ConfigProvider', () => {
const webHttpClientMethodSpy = jasmine.createSpyObj('StAppsWebHttpClient', [
'request',
]);
const ngxLogger: jasmine.SpyObj<NGXLogger> = jasmine.createSpyObj(
'NGXLogger',
['log', 'error', 'warn'],
);
ngxLogger = jasmine.createSpyObj('NGXLogger', ['log', 'error', 'warn']);
TestBed.configureTestingModule({
imports: [],
@@ -112,27 +110,6 @@ describe('ConfigProvider', () => {
);
});
it('should init from storage when remote fails', async () => {
storageProviderSpy.has.and.returnValue(Promise.resolve(true));
storageProviderSpy.get.and.returnValue(
Promise.resolve(sampleIndexResponse),
);
spyOn(configProvider.client, 'handshake').and.throwError('');
// eslint-disable-next-line unicorn/error-message
let error = new Error('');
try {
await configProvider.init();
} catch (error_) {
error = error_;
}
expect(error).toEqual(new ConfigFetchError());
expect(storageProviderSpy.has).toHaveBeenCalled();
expect(storageProviderSpy.get).toHaveBeenCalled();
expect(await configProvider.getValue('name')).toEqual(
sampleIndexResponse.app.name,
);
});
it('should throw error on failed initialisation', async () => {
storageProviderSpy.has.and.returnValue(Promise.resolve(false));
spyOn(configProvider.client, 'handshake').and.throwError('');
@@ -154,14 +131,14 @@ describe('ConfigProvider', () => {
spyOn(configProvider.client, 'handshake').and.returnValue(
Promise.resolve(sampleIndexResponse),
);
// eslint-disable-next-line unicorn/no-null
let error = null;
try {
await configProvider.init();
} catch (error_) {
error = error_;
}
expect(error).toEqual(new WrongConfigVersionInStorage(scVersion, '0.1.0'));
await configProvider.init();
expect(ngxLogger.warn).toHaveBeenCalledWith(
new WrongConfigVersionInStorage(
configProvider.scVersion,
wrongConfig.backend.SCVersion,
),
);
});
it('should throw error on saved app configuration not available', async () => {
@@ -203,13 +180,15 @@ describe('ConfigProvider', () => {
);
});
it('should return app configuration value if only saved config is available and fetch fails', async () => {
it('should init from storage when remote fails', async () => {
storageProviderSpy.has.and.returnValue(Promise.resolve(true));
storageProviderSpy.get.and.returnValue(
Promise.resolve(sampleIndexResponse),
);
spyOn(configProvider.client, 'handshake').and.throwError('');
expect(await configProvider.getValue('name')).toEqual(
await configProvider.init();
expect(configProvider.getValue('name')).toEqual(
sampleIndexResponse.app.name,
);
});

View File

@@ -133,7 +133,6 @@ export class ConfigProvider {
this.scVersion,
this.config.backend.SCVersion,
);
this.logger.warn(loadError);
}
} catch (error) {
loadError = error;
@@ -154,7 +153,7 @@ export class ConfigProvider {
this.logger.warn(loadError);
}
if (typeof fetchError !== 'undefined') {
throw fetchError;
this.logger.warn(fetchError);
}
}

View File

@@ -69,9 +69,9 @@ export class DaiaDataProvider {
async getAvailability(id: string): Promise<SCDaiaHoldings[] | undefined> {
if (typeof this.daiaServiceUrl === 'undefined') {
try {
const features = (await this.configProvider.getValue(
const features = this.configProvider.getValue(
'features',
)) as SCFeatureConfiguration;
) as SCFeatureConfiguration;
if (features.extern?.daia?.url) {
this.daiaServiceUrl = features.extern?.daia?.url;
} else {

View File

@@ -23,14 +23,22 @@ import {StorageProvider} from '../storage/storage.provider';
import {MapModule} from './map.module';
import {StorageModule} from '../storage/storage.module';
import {LoggerConfig, LoggerModule, NGXLogger} from 'ngx-logger';
import {ConfigProvider} from '../config/config.provider';
import {sampleDefaultPolygon} from '../../_helpers/data/sample-configuration';
describe('MapProvider', () => {
let provider: MapProvider;
let configProvider: jasmine.SpyObj<ConfigProvider>;
beforeEach(() => {
configProvider = jasmine.createSpyObj('ConfigProvider', ['getValue']);
TestBed.configureTestingModule({
imports: [MapModule, HttpClientModule, StorageModule, LoggerModule],
providers: [
{
provide: ConfigProvider,
useValue: configProvider,
},
Geolocation,
Diagnostic,
StAppsWebHttpClient,
@@ -39,6 +47,10 @@ describe('MapProvider', () => {
LoggerConfig,
],
});
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
configProvider.getValue.and.returnValue(sampleDefaultPolygon);
provider = TestBed.inject(MapProvider);
});

View File

@@ -15,9 +15,9 @@ export class NavigationService {
async getMenu() {
let menu: SCAppConfigurationMenuCategory[] = [];
try {
menu = (await this.configProvider.getValue(
menu = this.configProvider.getValue(
'menus',
)) as SCAppConfigurationMenuCategory[];
) as SCAppConfigurationMenuCategory[];
} catch (error) {
this.logger.error(`error from loading menu entries: ${error}`);
}

View File

@@ -69,9 +69,7 @@ describe('SettingsProvider', () => {
});
configProviderSpy = TestBed.get(ConfigProvider);
// set settings returned from config
configProviderSpy.getValue.and.returnValue(
Promise.resolve(CONFIG_SETTINGS_MOCK),
);
configProviderSpy.getValue.and.returnValue(CONFIG_SETTINGS_MOCK);
settingsProvider = TestBed.get(SettingsProvider);
storageProviderSpy = TestBed.get(StorageProvider);
storageProviderMethodSpy.has.and.returnValue(false);
@@ -126,7 +124,7 @@ describe('SettingsProvider', () => {
it('should keep persisted setting values from settings that are not contained in loaded config', async () => {
const settings = [CONFIG_SETTINGS_MOCK[4], CONFIG_SETTINGS_MOCK[5]];
configProviderSpy.getValue.and.returnValue(Promise.resolve(settings));
configProviderSpy.getValue.and.returnValue(settings);
storageProviderSpy.has.and.returnValue(Promise.resolve(true));
storageProviderSpy.get.and.returnValue(
Promise.resolve(SETTING_VALUES_MOCK),