test: inject instead of deprecated TestBed get

Additionally refactor tests and ts-ignore annotations.
This commit is contained in:
Jovan Krunić
2022-02-22 13:29:04 +01:00
parent 37fe25c42f
commit 098b1d733e
12 changed files with 50 additions and 58 deletions

View File

@@ -12,6 +12,7 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
/* eslint-disable unicorn/no-useless-undefined, @typescript-eslint/no-non-null-assertion */
import {TestBed} from '@angular/core/testing';
import {
SCSetting,
@@ -35,15 +36,13 @@ describe('SettingsProvider', () => {
let scheduleSyncServiceSpy: jasmine.SpyObj<ScheduleSyncService>;
beforeEach(async () => {
const storageProviderMethodSpy = jasmine.createSpyObj('StorageProvider', [
storageProviderSpy = jasmine.createSpyObj('StorageProvider', [
'init',
'get',
'has',
'put',
]);
const configProviderMethodSpy = jasmine.createSpyObj('ConfigProvider', [
'getValue',
]);
configProviderSpy = jasmine.createSpyObj('ConfigProvider', ['getValue']);
scheduleSyncServiceSpy = jasmine.createSpyObj('ScheduleSyncService', [
'getDifferences',
'postDifferencesNotification',
@@ -55,11 +54,11 @@ describe('SettingsProvider', () => {
SettingsProvider,
{
provide: StorageProvider,
useValue: storageProviderMethodSpy,
useValue: storageProviderSpy,
},
{
provide: ConfigProvider,
useValue: configProviderMethodSpy,
useValue: configProviderSpy,
},
{
provide: ScheduleSyncService,
@@ -67,12 +66,10 @@ describe('SettingsProvider', () => {
},
],
});
configProviderSpy = TestBed.get(ConfigProvider);
// set settings returned from config
configProviderSpy.getValue.and.returnValue(CONFIG_SETTINGS_MOCK);
settingsProvider = TestBed.get(SettingsProvider);
storageProviderSpy = TestBed.get(StorageProvider);
storageProviderMethodSpy.has.and.returnValue(false);
settingsProvider = TestBed.inject(SettingsProvider);
storageProviderSpy.has.and.returnValue(Promise.resolve(false));
});
it('should provide and get setting', async () => {
@@ -83,7 +80,7 @@ describe('SettingsProvider', () => {
CONFIG_SETTINGS_MOCK[0].categories[0],
CONFIG_SETTINGS_MOCK[0].name,
);
await expect(setting.value).toBeDefined();
expect(setting.value).toBeDefined();
});
it('should provide and get settings value', async () => {
@@ -94,7 +91,7 @@ describe('SettingsProvider', () => {
CONFIG_SETTINGS_MOCK[0].categories[0],
CONFIG_SETTINGS_MOCK[0].name,
);
await expect(value).toEqual(CONFIG_SETTINGS_MOCK[0].defaultValue);
expect(value).toEqual(CONFIG_SETTINGS_MOCK[0].defaultValue);
});
it('should get persisted setting value', async () => {
@@ -108,7 +105,7 @@ describe('SettingsProvider', () => {
CONFIG_SETTINGS_MOCK[3].categories[0],
CONFIG_SETTINGS_MOCK[3].name,
);
await expect(value).toEqual(SETTING_VALUES_MOCK.profile.group as string);
expect(value).toEqual(SETTING_VALUES_MOCK.profile.group as string);
});
it('should set default setting value if no persisted value exist', async () => {
@@ -119,7 +116,7 @@ describe('SettingsProvider', () => {
CONFIG_SETTINGS_MOCK[3].categories[0],
CONFIG_SETTINGS_MOCK[3].name,
);
await expect(value).toEqual(CONFIG_SETTINGS_MOCK[3].defaultValue);
expect(value).toEqual(CONFIG_SETTINGS_MOCK[3].defaultValue);
});
it('should keep persisted setting values from settings that are not contained in loaded config', async () => {
@@ -130,7 +127,7 @@ describe('SettingsProvider', () => {
Promise.resolve(SETTING_VALUES_MOCK),
);
await settingsProvider.init();
await expect(storageProviderSpy.put).toHaveBeenCalledWith(
expect(storageProviderSpy.put).toHaveBeenCalledWith(
STORAGE_KEY_SETTING_VALUES,
SETTING_VALUES_MOCK,
);
@@ -149,7 +146,7 @@ describe('SettingsProvider', () => {
CONFIG_SETTINGS_MOCK[1].categories[0],
CONFIG_SETTINGS_MOCK[1].name,
);
await expect(value).toEqual('updated');
expect(value).toEqual('updated');
});
it('should return copy of settingsCache', async () => {
@@ -161,7 +158,7 @@ describe('SettingsProvider', () => {
const settings = await settingsProvider.getCache();
settings[category].settings[name].value = 'testValue';
// cached setting value should still be defaultValue
await expect(await settingsProvider.getValue(category, name)).toEqual(
expect(await settingsProvider.getValue(category, name)).toEqual(
CONFIG_SETTINGS_MOCK[0].defaultValue,
);
});
@@ -175,12 +172,12 @@ describe('SettingsProvider', () => {
CONFIG_SETTINGS_MOCK[0].name,
'',
);
await expect(storageProviderSpy.put).toHaveBeenCalled();
expect(storageProviderSpy.put).toHaveBeenCalled();
});
it('should clear settings', async () => {
await settingsProvider.reset();
await expect(storageProviderSpy.put).toHaveBeenCalledWith(
expect(storageProviderSpy.put).toHaveBeenCalledWith(
STORAGE_KEY_SETTING_VALUES,
{},
);
@@ -198,7 +195,7 @@ describe('SettingsProvider', () => {
CONFIG_SETTINGS_MOCK[0].categories[0],
CONFIG_SETTINGS_MOCK[0].name,
);
await expect(value).toEqual(CONFIG_SETTINGS_MOCK[0].defaultValue);
expect(value).toEqual(CONFIG_SETTINGS_MOCK[0].defaultValue);
});
it('should validate wrong values for inputType text', async () => {
@@ -243,7 +240,7 @@ describe('SettingsProvider', () => {
* TODO
*/
async function testValue(setting: SCSetting, value: unknown) {
let error: Error;
let error: Error | undefined = undefined;
await settingsProvider.provideSetting(JSON.parse(JSON.stringify(setting)));
try {
await settingsProvider.setSettingValue(
@@ -254,12 +251,9 @@ describe('SettingsProvider', () => {
} catch (error_) {
error = error_;
}
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
await expect(error).toBeDefined();
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
await expect(error.message).toMatch(/is not valid/);
expect(error).toBeDefined();
expect(error!.message).toMatch(/is not valid/);
}
const CONFIG_SETTINGS_MOCK: SCSetting[] = [