Fixed tests

This commit is contained in:
Djuri Baars 2022-01-17 18:04:35 +01:00
parent c31eef4eee
commit c313bd4973
18 changed files with 204 additions and 45 deletions

View file

@ -25,11 +25,4 @@ describe('AppComponent', () => {
const app = fixture.componentInstance; const app = fixture.componentInstance;
expect(app.title).toEqual('ringtools-web'); expect(app.title).toEqual('ringtools-web');
}); });
it('should render title', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement as HTMLElement;
expect(compiled.querySelector('.content span')?.textContent).toContain('ringtools-web app is running!');
});
}); });

View file

@ -1,16 +1,26 @@
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideMockStore, MockStore } from '@ngrx/store/testing';
import { initialSettingState } from 'src/app/reducers/setting.reducer';
import { OverviewComponent } from './overview.component'; import { OverviewComponent } from './overview.component';
describe('OverviewComponent', () => { describe('OverviewComponent', () => {
let component: OverviewComponent; let component: OverviewComponent;
let fixture: ComponentFixture<OverviewComponent>; let fixture: ComponentFixture<OverviewComponent>;
const initialState = { setting: initialSettingState };
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ OverviewComponent ] declarations: [ OverviewComponent ],
imports: [ HttpClientTestingModule ],
providers: [
provideMockStore({ initialState }),
]
}) })
.compileComponents(); .compileComponents();
let store: MockStore;
}); });
beforeEach(() => { beforeEach(() => {

View file

@ -1,14 +1,23 @@
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { initialSettingState } from 'src/app/reducers/setting.reducer';
import { RingOnlyComponent } from './ring-only.component'; import { RingOnlyComponent } from './ring-only.component';
describe('RingOnlyComponent', () => { describe('RingOnlyComponent', () => {
let component: RingOnlyComponent; let component: RingOnlyComponent;
let fixture: ComponentFixture<RingOnlyComponent>; let fixture: ComponentFixture<RingOnlyComponent>;
const initialState = { setting: initialSettingState };
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ RingOnlyComponent ] declarations: [ RingOnlyComponent ],
imports: [ RouterTestingModule, HttpClientTestingModule ],
providers: [
provideMockStore({ initialState }),
]
}) })
.compileComponents(); .compileComponents();
}); });

View file

@ -1,16 +1,28 @@
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { MockStore, provideMockStore } from '@ngrx/store/testing';
import { initialSettingState } from 'src/app/reducers/setting.reducer';
import { SettingsComponent } from './settings.component'; import { SettingsComponent } from './settings.component';
describe('SettingsComponent', () => { describe('SettingsComponent', () => {
let component: SettingsComponent; let component: SettingsComponent;
let fixture: ComponentFixture<SettingsComponent>; let fixture: ComponentFixture<SettingsComponent>;
let store: MockStore;
const initialState = { setting: initialSettingState };
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ SettingsComponent ] declarations: [ SettingsComponent ],
imports: [ RouterTestingModule, HttpClientTestingModule ],
providers: [
provideMockStore({ initialState }),
]
}) })
.compileComponents(); .compileComponents();
store = TestBed.inject(MockStore);
}); });
beforeEach(() => { beforeEach(() => {

View file

@ -1,14 +1,24 @@
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { initialSettingState } from 'src/app/reducers/setting.reducer';
import { VisualComponent } from './visual.component'; import { VisualComponent } from './visual.component';
describe('VisualComponent', () => { describe('VisualComponent', () => {
let component: VisualComponent; let component: VisualComponent;
let fixture: ComponentFixture<VisualComponent>; let fixture: ComponentFixture<VisualComponent>;
const initialState = {
setting: initialSettingState
};
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ VisualComponent ] declarations: [ VisualComponent ],
imports: [ HttpClientTestingModule ],
providers: [
provideMockStore({ initialState }),
]
}) })
.compileComponents(); .compileComponents();
}); });

View file

@ -1,20 +1,20 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { BaseComponent } from './base.component'; import { BaseLayoutComponent } from './base.component';
describe('BaseComponent', () => { describe('BaseComponent', () => {
let component: BaseComponent; let component: BaseLayoutComponent;
let fixture: ComponentFixture<BaseComponent>; let fixture: ComponentFixture<BaseLayoutComponent>;
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ BaseComponent ] declarations: [ BaseLayoutComponent ]
}) })
.compileComponents(); .compileComponents();
}); });
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(BaseComponent); fixture = TestBed.createComponent(BaseLayoutComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
fixture.detectChanges(); fixture.detectChanges();
}); });

View file

@ -1,14 +1,22 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { provideMockStore, MockStore } from '@ngrx/store/testing';
import { initialSettingState } from 'src/app/reducers/setting.reducer';
import { NavigationComponent } from './navigation.component'; import { NavigationComponent } from './navigation.component';
describe('NavigationComponent', () => { describe('NavigationComponent', () => {
let component: NavigationComponent; let component: NavigationComponent;
let fixture: ComponentFixture<NavigationComponent>; let fixture: ComponentFixture<NavigationComponent>;
const initialState = { setting: initialSettingState };
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ NavigationComponent ] declarations: [ NavigationComponent ],
imports: [ RouterTestingModule ],
providers: [
provideMockStore({ initialState })
]
}) })
.compileComponents(); .compileComponents();
}); });

View file

@ -1,14 +1,23 @@
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { DragulaModule, DragulaService } from 'ng2-dragula';
import { EditRingOrderComponent } from './edit-ring-order.component'; import { EditRingOrderComponent } from './edit-ring-order.component';
describe('EditRingOrderComponent', () => { describe('EditRingOrderComponent', () => {
let component: EditRingOrderComponent; let component: EditRingOrderComponent;
let fixture: ComponentFixture<EditRingOrderComponent>; let fixture: ComponentFixture<EditRingOrderComponent>;
const initialState = { loggedIn: false };
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ EditRingOrderComponent ] declarations: [ EditRingOrderComponent ],
imports: [ DragulaModule, HttpClientTestingModule ],
providers: [
provideMockStore({ initialState }),
DragulaService
]
}) })
.compileComponents(); .compileComponents();
}); });

View file

@ -1,14 +1,22 @@
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { initialSettingState } from 'src/app/reducers/setting.reducer';
import { FileExporterComponent } from './file-exporter.component'; import { FileExporterComponent } from './file-exporter.component';
describe('FileExporterComponent', () => { describe('FileExporterComponent', () => {
let component: FileExporterComponent; let component: FileExporterComponent;
let fixture: ComponentFixture<FileExporterComponent>; let fixture: ComponentFixture<FileExporterComponent>;
const initialState = { setting: initialSettingState };
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ FileExporterComponent ] declarations: [ FileExporterComponent ],
imports: [ HttpClientTestingModule ],
providers: [
provideMockStore({ initialState }),
]
}) })
.compileComponents(); .compileComponents();
}); });

View file

@ -1,14 +1,23 @@
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { initialSettingState } from 'src/app/reducers/setting.reducer';
import { VisModule } from 'src/app/vis/vis.module';
import { NodeConnectionsComponent } from './node-connections.component'; import { NodeConnectionsComponent } from './node-connections.component';
describe('NodeConnectionsComponent', () => { describe('NodeConnectionsComponent', () => {
let component: NodeConnectionsComponent; let component: NodeConnectionsComponent;
let fixture: ComponentFixture<NodeConnectionsComponent>; let fixture: ComponentFixture<NodeConnectionsComponent>;
const initialState = { setting: initialSettingState };
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ NodeConnectionsComponent ] declarations: [ NodeConnectionsComponent ],
imports: [ HttpClientTestingModule, VisModule ],
providers: [
provideMockStore({ initialState }),
]
}) })
.compileComponents(); .compileComponents();
}); });

View file

@ -1,14 +1,21 @@
import { JsonPipe } from '@angular/common';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { ParticipantTableComponent } from './participant-table.component'; import { ParticipantTableComponent } from './participant-table.component';
describe('ParticipantTableComponent', () => { describe('ParticipantTableComponent', () => {
let component: ParticipantTableComponent; let component: ParticipantTableComponent;
let fixture: ComponentFixture<ParticipantTableComponent>; let fixture: ComponentFixture<ParticipantTableComponent>;
const initialState = { loggedIn: false };
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ ParticipantTableComponent ] declarations: [ ParticipantTableComponent ],
providers: [
JsonPipe,
provideMockStore({ initialState }),
]
}) })
.compileComponents(); .compileComponents();
}); });

View file

@ -1,14 +1,21 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { initialSettingState } from 'src/app/reducers/setting.reducer';
import { ReorderParticipantsComponent } from './reorder-participants.component'; import { ReorderParticipantsComponent } from './reorder-participants.component';
describe('ReorderParticipantsComponent', () => { describe('ReorderParticipantsComponent', () => {
let component: ReorderParticipantsComponent; let component: ReorderParticipantsComponent;
let fixture: ComponentFixture<ReorderParticipantsComponent>; let fixture: ComponentFixture<ReorderParticipantsComponent>;
const initialState = {
settings: initialSettingState
}
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ ReorderParticipantsComponent ] declarations: [ ReorderParticipantsComponent ],
providers: [
provideMockStore({ initialState }),
]
}) })
.compileComponents(); .compileComponents();
}); });

View file

@ -1,13 +1,13 @@
import { reducer, initialState } from './setting.reducer'; import { reducer, initialSettingState } from './setting.reducer';
describe('Setting Reducer', () => { describe('Setting Reducer', () => {
describe('an unknown action', () => { describe('an unknown action', () => {
it('should return the previous state', () => { it('should return the previous state', () => {
const action = {} as any; const action = {} as any;
const result = reducer(initialState, action); const result = reducer(initialSettingState, action);
expect(result).toBe(initialState); expect(result).toBe(initialSettingState);
}); });
}); });
}); });

View file

@ -12,7 +12,7 @@ export interface SettingState {
ringLeader?: NodeOwner; ringLeader?: NodeOwner;
} }
export const initialState: SettingState = { export const initialSettingState: SettingState = {
ringName: 'Unconfigured', ringName: 'Unconfigured',
viewMode: 'tg', viewMode: 'tg',
showLogo: false, showLogo: false,
@ -20,7 +20,7 @@ export const initialState: SettingState = {
}; };
export const settingReducer = createReducer( export const settingReducer = createReducer(
initialState, initialSettingState,
on(SettingActions.setRingName, on(SettingActions.setRingName,
(state: SettingState, {ringName}) => { (state: SettingState, {ringName}) => {
return {...state, ringName: ringName } return {...state, ringName: ringName }

View file

@ -1,3 +1,4 @@
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { LnDataService } from './ln-data.service'; import { LnDataService } from './ln-data.service';
@ -6,7 +7,11 @@ describe('LnDataService', () => {
let service: LnDataService; let service: LnDataService;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({}); TestBed.configureTestingModule({
imports: [
HttpClientTestingModule
],
});
service = TestBed.inject(LnDataService); service = TestBed.inject(LnDataService);
}); });

View file

@ -1,12 +1,23 @@
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { provideMockStore } from '@ngrx/store/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { RingDataService } from './ring-data.service'; import { RingDataService } from './ring-data.service';
describe('RingDataService', () => { describe('RingDataService', () => {
let service: RingDataService; let service: RingDataService;
const initialState = { loggedIn: false };
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({}); TestBed.configureTestingModule({
imports: [
HttpClientTestingModule
],
providers: [
provideMockStore({ initialState }),
]
});
service = TestBed.inject(RingDataService); service = TestBed.inject(RingDataService);
}); });

View file

@ -1,8 +0,0 @@
import { VisNetworkDirective } from './vis-network.directive';
describe('VisNetworkDirective', () => {
it('should create an instance', () => {
const directive = new VisNetworkDirective();
expect(directive).toBeTruthy();
});
});

View file

@ -3,14 +3,83 @@ import { TestBed } from '@angular/core/testing';
import { VisNetworkService } from './vis-network.service'; import { VisNetworkService } from './vis-network.service';
describe('VisNetworkService', () => { describe('VisNetworkService', () => {
let service: VisNetworkService; let visNetworkService: VisNetworkService;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({}); TestBed.configureTestingModule({
service = TestBed.inject(VisNetworkService); providers: [
VisNetworkService
]
});
visNetworkService = TestBed.inject(VisNetworkService);
}); });
it('should be created', () => { it('returns undefined when network id is unknown', () => {
expect(service).toBeTruthy(); const selection = visNetworkService.getSelection('unknown');
expect(selection).toBeUndefined();
const selectedNodes = visNetworkService.getSelectedNodes('unknown');
expect(selectedNodes).toBeUndefined();
const selectedEdges = visNetworkService.getSelectedEdges('unknown');
expect(selectedEdges).toBeUndefined();
});
it('throws no error when the network does not exist', () => {
visNetworkService.destroy('unknown');
});
it('throws error when network already exists', () => {
const dummyElement = document.createElement('div');
visNetworkService.create('knownNetwork', dummyElement, { nodes: [], edges: [] });
expect(() => visNetworkService.create('knownNetwork', dummyElement, { nodes: [], edges: [] })).toThrowError();
});
it('returns false when network does not exist', () => {
expect(visNetworkService.on('unknown', 'click')).toBe(false);
expect(visNetworkService.once('unknown', 'click')).toBe(false);
visNetworkService.off('unknown', 'click');
expect(visNetworkService.isCluster('unknown', 'nodeId')).toBe(false);
});
it('throws error when network does not exist', () => {
expect(() => visNetworkService.setData('unknown', { nodes: [], edges: [] })).toThrowError();
expect(() => visNetworkService.setOptions('unknown', {})).toThrowError();
expect(() => visNetworkService.selectNodes('unknown', [])).toThrowError();
expect(() => visNetworkService.selectNodes('unknown', [], false)).toThrowError();
expect(() => visNetworkService.setSelection('unknown', { nodes: [], edges: [] })).toThrowError();
expect(() => visNetworkService.setSelection('unknown', { nodes: [], edges: [] }, {})).toThrowError();
expect(() => visNetworkService.setSelection('unknown', { nodes: [], edges: [] }, { unselectAll: false, highlightEdges: false })).toThrowError();
expect(() => visNetworkService.unselectAll('unknown')).toThrowError();
expect(() => visNetworkService.fit('unknown')).toThrowError();
expect(() => visNetworkService.getScale('unknown')).toThrowError();
expect(() => visNetworkService.fit('unknown', { animation: true })).toThrowError();
expect(() => visNetworkService.redraw('unknown')).toThrowError();
expect(() => visNetworkService.enableEditMode('unknown')).toThrowError();
expect(() => visNetworkService.addEdgeMode('unknown')).toThrowError();
expect(() => visNetworkService.addNodeMode('unknown')).toThrowError();
expect(() => visNetworkService.disableEditMode('unknown')).toThrowError();
expect(() => visNetworkService.deleteSelected('unknown')).toThrowError();
expect(() => visNetworkService.cluster('unknown')).toThrowError();
expect(() => visNetworkService.cluster('unknown', {})).toThrowError();
expect(() => visNetworkService.clusterByConnection('unknown', 42, {})).toThrowError();
expect(() => visNetworkService.clusterByConnection('unknown', 42)).toThrowError();
expect(() => visNetworkService.clusterByHubsize('unknown', 42, {})).toThrowError();
expect(() => visNetworkService.clusterByHubsize('unknown', 42)).toThrowError();
expect(() => visNetworkService.clusterOutliers('unknown', {})).toThrowError();
expect(() => visNetworkService.clusterOutliers('unknown')).toThrowError();
expect(() => visNetworkService.findNode('unknown', 42)).toThrowError();
expect(() => visNetworkService.getClusteredEdges('unknown', 42)).toThrowError();
expect(() => visNetworkService.getBaseEdge('unknown', 42)).toThrowError();
expect(() => visNetworkService.updateEdge('unknown', 42)).toThrowError();
expect(() => visNetworkService.updateEdge('unknown', 42)).toThrowError();
expect(() => visNetworkService.updateClusteredNode('unknown', 42)).toThrowError();
expect(() => visNetworkService.updateClusteredNode('unknown', 42, {})).toThrowError();
expect(() => visNetworkService.getNodesInCluster('unknown', 42)).toThrowError();
expect(() => visNetworkService.openCluster('unknown', 'nodeId')).toThrowError();
expect(() => visNetworkService.canvasToDOM('unknown', { x: 1, y: 1 })).toThrowError();
expect(() => visNetworkService.DOMtoCanvas('unknown', { x: 1, y: 1 })).toThrowError();
});
it('returns -1 when network does not exist', () => {
expect(visNetworkService.getSeed('unknown')).toBe(-1);
}); });
}); });