test: clean up async behaviour

This commit is contained in:
Jovan Krunić
2022-02-22 11:09:22 +01:00
parent 89dc41ad35
commit 37fe25c42f
9 changed files with 188 additions and 199 deletions

View File

@@ -14,7 +14,7 @@
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {TestBed, waitForAsync} from '@angular/core/testing';
import {TestBed} from '@angular/core/testing';
import {Platform} from '@ionic/angular';
@@ -43,8 +43,7 @@ describe('AppComponent', () => {
let platformIsSpy;
let storageProvider: jasmine.SpyObj<StorageProvider>;
beforeEach(
waitForAsync(() => {
beforeEach(() => {
platformReadySpy = Promise.resolve();
platformIsSpy = Promise.resolve();
platformSpy = jasmine.createSpyObj('Platform', {
@@ -71,9 +70,7 @@ describe('AppComponent', () => {
'init',
'getAnyValue',
]);
configProvider.getAnyValue = jasmine
.createSpy()
.and.callFake(function () {
configProvider.getAnyValue = jasmine.createSpy().and.callFake(function () {
return sampleAuthConfiguration;
});
ngxLogger = jasmine.createSpyObj('NGXLogger', ['log', 'error', 'warn']);
@@ -103,8 +100,7 @@ describe('AppComponent', () => {
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
}),
);
});
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);

View File

@@ -14,7 +14,7 @@
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {CUSTOM_ELEMENTS_SCHEMA, DebugElement} from '@angular/core';
import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {ComponentFixture, TestBed} from '@angular/core/testing';
import {ActivatedRoute, RouterModule} from '@angular/router';
import {IonRefresher, IonTitle} from '@ionic/angular';
import {
@@ -71,8 +71,7 @@ describe('DataDetailComponent', () => {
'search',
]);
beforeEach(
waitForAsync(() => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
RouterModule.forRoot([], {relativeLinkResolution: 'legacy'}),
@@ -94,10 +93,9 @@ describe('DataDetailComponent', () => {
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
}),
);
});
beforeEach(async () => {
beforeEach(() => {
dataProvider = TestBed.get(DataProvider);
translateService = TestBed.get(TranslateService);
refresher = jasmine.createSpyObj('refresher', ['complete']);
@@ -105,7 +103,7 @@ describe('DataDetailComponent', () => {
Promise.resolve(sampleThing),
);
spyOn(DataDetailComponent.prototype, 'getItem').and.callThrough();
fixture = await TestBed.createComponent(DataDetailComponent);
fixture = TestBed.createComponent(DataDetailComponent);
comp = fixture.componentInstance;
detailPage = fixture.debugElement;
translateService.use('foo');

View File

@@ -1,4 +1,4 @@
import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {ComponentFixture, TestBed} from '@angular/core/testing';
import {DataListComponent} from './data-list.component';
import {TranslateModule} from '@ngx-translate/core';
@@ -10,8 +10,7 @@ describe('DataListComponent', () => {
let fixture: ComponentFixture<DataListComponent>;
let configProviderMock: jasmine.SpyObj<ConfigProvider>;
beforeEach(
waitForAsync(() => {
beforeEach(() => {
configProviderMock = jasmine.createSpyObj('ConfigProvider', {
getValue: () => {
return {lat: 123, lng: 123};
@@ -23,8 +22,7 @@ describe('DataListComponent', () => {
schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [{provide: ConfigProvider, useValue: configProviderMock}],
}).compileComponents();
}),
);
});
beforeEach(() => {
fixture = TestBed.createComponent(DataListComponent);

View File

@@ -14,7 +14,7 @@
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {ComponentFixture, TestBed} from '@angular/core/testing';
import {ActivatedRoute, RouterModule} from '@angular/router';
import {IonRefresher} from '@ionic/angular';
import {
@@ -72,8 +72,7 @@ describe('DaiaAvailabilityComponent', () => {
'search',
]);
beforeEach(
waitForAsync(() => {
beforeEach(() => {
configProviderMock = jasmine.createSpyObj('ConfigProvider', [
'init',
'getValue',
@@ -107,8 +106,7 @@ describe('DaiaAvailabilityComponent', () => {
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
}),
);
});
beforeEach(async () => {
dataProvider = TestBed.get(DaiaDataProvider);

View File

@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion,@typescript-eslint/no-explicit-any */
/*
* Copyright (C) 2018, 2019 StApps
* This program is free software: you can redistribute it and/or modify it
@@ -13,8 +12,9 @@
* 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 @typescript-eslint/no-non-null-assertion,@typescript-eslint/no-explicit-any */
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing';
import {ComponentFixture, TestBed} from '@angular/core/testing';
import {ActivatedRoute, RouterModule} from '@angular/router';
import {IonRefresher} from '@ionic/angular';
import {
@@ -69,8 +69,7 @@ describe('HebisDetailComponent', () => {
'search',
]);
beforeEach(
waitForAsync(() => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
RouterModule.forRoot([], {relativeLinkResolution: 'legacy'}),
@@ -92,10 +91,9 @@ describe('HebisDetailComponent', () => {
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
}),
);
});
beforeEach(async () => {
beforeEach(() => {
dataProvider = TestBed.get(HebisDataProvider);
translateService = TestBed.get(TranslateService);
refresher = jasmine.createSpyObj('refresher', ['complete']);
@@ -103,7 +101,7 @@ describe('HebisDetailComponent', () => {
Promise.resolve(sampleThing),
);
spyOn(HebisDetailComponent.prototype, 'getItem').and.callThrough();
fixture = await TestBed.createComponent(HebisDetailComponent);
fixture = TestBed.createComponent(HebisDetailComponent);
comp = fixture.componentInstance;
translateService.use('foo');
fixture.detectChanges();

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 @typescript-eslint/no-non-null-assertion,@typescript-eslint/ban-ts-comment */
import {
APP_BASE_HREF,
CommonModule,
@@ -36,22 +37,21 @@ import {FilterContext, SortContext} from './context-type';
import {Component} from '@angular/core';
import {By} from '@angular/platform-browser';
// prettier-ignore
@Component({
template: `
<ion-content id="foo"></ion-content>
<stapps-context contentId="foo"></stapps-context>
`,
template: `<ion-content id="foo"></ion-content
><stapps-context contentId="foo"></stapps-context>
`,
})
class ContextMenuComponentContainer {
}
class ContextMenuContainerComponent {}
describe('ContextMenuComponent', async () => {
let fixture: ComponentFixture<ContextMenuComponentContainer>;
let fixture: ComponentFixture<ContextMenuContainerComponent>;
let instance: ContextMenuComponent;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ContextMenuComponent, ContextMenuComponentContainer],
declarations: [ContextMenuComponent, ContextMenuContainerComponent],
providers: [
ChildrenOutletContexts,
Location,
@@ -70,8 +70,10 @@ describe('ContextMenuComponent', async () => {
],
}).compileComponents();
fixture = TestBed.createComponent(ContextMenuComponentContainer);
instance = fixture.debugElement.query(By.directive(ContextMenuComponent)).componentInstance;
fixture = TestBed.createComponent(ContextMenuContainerComponent);
instance = fixture.debugElement.query(
By.directive(ContextMenuComponent),
).componentInstance;
});
it('should show items in sort context', () => {

View File

@@ -27,11 +27,11 @@ describe('ContextMenuService', () => {
});
it('should update filterQuery', done => {
service.filterContextChanged$.subscribe(() => {
service.contextFilterChanged(filterContext);
});
service.filterQueryChanged$.subscribe(result => {
service.filterContextChanged$.subscribe(result => {
expect(result).toBeDefined();
expect(service.contextFilter.options[0].buckets.length).toEqual(
filterContext.options[0].buckets.length,
);
done();
});
service.updateContextFilter(facetsMock);
@@ -46,10 +46,7 @@ describe('ContextMenuService', () => {
});
it('should update sortQuery', done => {
service.sortContextChanged$.subscribe(() => {
service.contextSortChanged(sortContext);
});
service.sortQueryChanged$.subscribe(result => {
service.sortContextChanged$.subscribe(result => {
expect(result).toBeDefined();
done();
});

View File

@@ -14,7 +14,7 @@
*/
import {CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
import {ComponentFixture, TestBed} from '@angular/core/testing';
import {HttpClientTestingModule} from '@angular/common/http/testing';
import {RouterTestingModule} from '@angular/router/testing';
import {AuthModule} from '../../auth/auth.module';
@@ -30,7 +30,7 @@ describe('ProfilePage', () => {
let configProvider: ConfigProvider;
let storageProvider: jasmine.SpyObj<StorageProvider>;
beforeEach(async(() => {
beforeEach(() => {
configProvider = jasmine.createSpyObj('ConfigProvider', [
'init',
'getAnyValue',
@@ -59,7 +59,7 @@ describe('ProfilePage', () => {
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
}));
});
beforeEach(() => {
fixture = TestBed.createComponent(ProfilePageComponent);

View File

@@ -13,7 +13,7 @@
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/ban-ts-comment */
import {TestBed} from '@angular/core/testing';
import {Storage} from '@ionic/storage-angular';
import {StorageModule} from './storage.module';
@@ -52,7 +52,7 @@ describe('StorageProvider', () => {
it('should call ready method of storage on init', async () => {
// @ts-ignore
spyOn(storage, 'create').and.callFake(() => Promise.resolve(undefined));
spyOn(storage, 'create').and.callFake(() => Promise.resolve());
await storageProvider.init();
expect(storage.create).toHaveBeenCalled();
@@ -69,9 +69,9 @@ describe('StorageProvider', () => {
spyOn(storage, 'get').and.callFake(() => Promise.resolve());
try {
await storageProvider.get('some-uid');
}
} catch {
// if not caught, causes issues and tests fail
catch {}
}
expect(storage.get).toHaveBeenCalledWith('some-uid');
});
@@ -144,7 +144,9 @@ describe('StorageProvider', () => {
});
it('should delete one or more entries from the storage', async () => {
const storageRemoveSpy = spyOn(storage, 'remove').and.callFake(() => Promise.resolve());
const storageRemoveSpy = spyOn(storage, 'remove').and.callFake(() =>
Promise.resolve(),
);
await storageProvider.delete('bar');
expect(storage.remove).toHaveBeenCalledTimes(1);