gns3-web-ui/src/app/components/preferences/qemu/add-qemu-vm-template/add-qemu-vm-template.component.spec.ts
2019-03-08 06:49:59 -08:00

149 lines
6.1 KiB
TypeScript

import { ComponentFixture, async, TestBed } from '@angular/core/testing';
import { MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule, MatSelectModule, MatAutocompleteModule, MatFormFieldModule, MatInputModule, MatStepperModule } from '@angular/material';
import { CommonModule } from '@angular/common';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { RouterTestingModule } from '@angular/router/testing';
import { ActivatedRoute, Router } from '@angular/router';
import { of } from 'rxjs';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { MockedServerService } from '../../../../services/server.service.spec';
import { ServerService } from '../../../../services/server.service';
import { Server } from '../../../../models/server';
import { ToasterService } from '../../../../services/toaster.service';
import { TemplateMocksService } from '../../../../services/template-mocks.service';
import { MockedToasterService } from '../../../../services/toaster.service.spec';
import { MockedActivatedRoute } from '../../preferences.component.spec';
import { QemuTemplate } from '../../../../models/templates/qemu-template';
import { AddQemuVmTemplateComponent } from './add-qemu-vm-template.component';
import { QemuService } from '../../../../services/qemu.service';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { QemuConfigurationService } from '../../../../services/qemu-configuration.service';
export class MockedQemuService {
public addTemplate(server: Server, qemuTemplate: QemuTemplate) {
return of(qemuTemplate);
}
public getBinaries(server: Server) {
return of([]);
}
public getImages(server: Server) {
return of([]);
}
}
//Tests disabled due to instability
xdescribe('AddQemuVmTemplateComponent', () => {
let component: AddQemuVmTemplateComponent;
let fixture: ComponentFixture<AddQemuVmTemplateComponent>;
let mockedServerService = new MockedServerService;
let mockedQemuService = new MockedQemuService;
let mockedToasterService = new MockedToasterService;
let activatedRoute = new MockedActivatedRoute().get();
let router = {
navigate: jasmine.createSpy('navigate')
};
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
MatStepperModule,
FormsModule,
ReactiveFormsModule,
MatSelectModule,
MatAutocompleteModule,
MatIconModule,
MatFormFieldModule,
MatInputModule,
MatToolbarModule,
MatMenuModule,
MatCheckboxModule,
CommonModule,
NoopAnimationsModule,
RouterTestingModule.withRoutes([{path: 'server/1/preferences/qemu/templates', component: AddQemuVmTemplateComponent}])
],
providers: [
{ provide: ActivatedRoute, useValue: activatedRoute },
{ provide: Router, useValue: router },
{ provide: ServerService, useValue: mockedServerService },
{ provide: QemuService, useValue: mockedQemuService },
{ provide: ToasterService, useValue: mockedToasterService },
{ provide: TemplateMocksService, useClass: TemplateMocksService },
{ provide: QemuConfigurationService, useClass: QemuConfigurationService }
],
declarations: [
AddQemuVmTemplateComponent
],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AddQemuVmTemplateComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should call add template', () => {
spyOn(mockedQemuService, 'addTemplate').and.returnValue(of({} as QemuTemplate));
component.nameForm.controls['templateName'].setValue('template name');
component.memoryForm.controls['binary'].setValue('binary');
component.memoryForm.controls['ramMemory'].setValue(0);
component.diskForm.controls['fileName'].setValue('file name');
component.chosenImage = 'path';
component.selectedBinary = {
path: 'path',
version: 'version'
};
component.newImageSelected = true;
component.server = {id: 1} as Server;
component.addTemplate();
expect(mockedQemuService.addTemplate).toHaveBeenCalled();
});
it('should not call add template when template name is empty', () => {
spyOn(mockedQemuService, 'addTemplate').and.returnValue(of({} as QemuTemplate));
component.nameForm.controls['templateName'].setValue('');
component.memoryForm.controls['binary'].setValue('binary');
component.memoryForm.controls['ramMemory'].setValue(0);
component.diskForm.controls['fileName'].setValue('file name');
component.chosenImage = 'path';
component.selectedBinary = {
path: 'path',
version: 'version'
};
component.newImageSelected = true;
component.server = {id: 1} as Server;
component.addTemplate();
expect(mockedQemuService.addTemplate).not.toHaveBeenCalled();
});
it('should not call add template when ram is not set', () => {
spyOn(mockedQemuService, 'addTemplate').and.returnValue(of({} as QemuTemplate));
component.nameForm.controls['templateName'].setValue('template name');
component.memoryForm.controls['binary'].setValue('binary');
component.diskForm.controls['fileName'].setValue('file name');
component.chosenImage = 'path';
component.selectedBinary = {
path: 'path',
version: 'version'
};
component.newImageSelected = true;
component.server = {id: 1} as Server;
component.addTemplate();
expect(mockedQemuService.addTemplate).not.toHaveBeenCalled();
});
});