diff --git a/src/app/components/preferences/docker/add-docker-template/add-docker-template.component.spec.ts b/src/app/components/preferences/docker/add-docker-template/add-docker-template.component.spec.ts index e69de29b..2f306680 100644 --- a/src/app/components/preferences/docker/add-docker-template/add-docker-template.component.spec.ts +++ b/src/app/components/preferences/docker/add-docker-template/add-docker-template.component.spec.ts @@ -0,0 +1,111 @@ +import { ComponentFixture, async, TestBed } from '@angular/core/testing'; +import { MatInputModule, MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule, MatSelectModule, MatFormFieldModule, MatAutocompleteModule, MatTableModule } from '@angular/material'; +import { CommonModule } from '@angular/common'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ActivatedRoute } 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 { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { DockerTemplate } from '../../../../models/templates/docker-template'; +import { AddDockerTemplateComponent } from './add-docker-template.component'; +import { DockerService } from '../../../../services/docker.service'; +import { DockerConfigurationService } from '../../../../services/docker-configuration.service'; + +export class MockedDockerService { + public addTemplate(server: Server, dockerTemplate: DockerTemplate) { + return of(dockerTemplate); + } +} + +describe('AddDockerTemplateComponent', () => { + let component: AddDockerTemplateComponent; + let fixture: ComponentFixture; + + let mockedServerService = new MockedServerService; + let mockedDockerService = new MockedDockerService; + let mockedToasterService = new MockedToasterService; + let activatedRoute = new MockedActivatedRoute().get(); + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ FormsModule, MatTableModule, MatAutocompleteModule, MatFormFieldModule, MatInputModule, ReactiveFormsModule, MatSelectModule, MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule, CommonModule, NoopAnimationsModule, RouterTestingModule.withRoutes([])], + providers: [ + { + provide: ActivatedRoute, useValue: activatedRoute + }, + { provide: ServerService, useValue: mockedServerService }, + { provide: DockerService, useValue: mockedDockerService }, + { provide: ToasterService, useValue: mockedToasterService}, + { provide: TemplateMocksService, useClass: TemplateMocksService }, + { provide: DockerConfigurationService, useClass: DockerConfigurationService } + ], + declarations: [ + AddDockerTemplateComponent + ], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AddDockerTemplateComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should call add template', () => { + spyOn(mockedDockerService, 'addTemplate').and.returnValue(of({} as DockerTemplate)); + component.virtualMachineForm.controls['filename'].setValue('sample name'); + component.containerNameForm.controls['templateName'].setValue('template name'); + component.networkAdaptersForm.controls['adapters'].setValue(1); + component.server = {id: 1} as Server; + + component.addTemplate(); + + expect(mockedDockerService.addTemplate).toHaveBeenCalled(); + }); + + it('should not call add template when file name is missing', () => { + spyOn(mockedDockerService, 'addTemplate').and.returnValue(of({} as DockerTemplate)); + component.containerNameForm.controls['templateName'].setValue('template name'); + component.networkAdaptersForm.controls['adapters'].setValue(1); + component.server = {id: 1} as Server; + + component.addTemplate(); + + expect(mockedDockerService.addTemplate).not.toHaveBeenCalled(); + }); + + it('should not call add template when template name is missing', () => { + spyOn(mockedDockerService, 'addTemplate').and.returnValue(of({} as DockerTemplate)); + component.virtualMachineForm.controls['filename'].setValue('sample name'); + component.networkAdaptersForm.controls['adapters'].setValue(1); + component.server = {id: 1} as Server; + + component.addTemplate(); + + expect(mockedDockerService.addTemplate).not.toHaveBeenCalled(); + }); + + it('should not call add template when adapters field is empty', () => { + spyOn(mockedDockerService, 'addTemplate').and.returnValue(of({} as DockerTemplate)); + component.virtualMachineForm.controls['filename'].setValue('sample name'); + component.containerNameForm.controls['templateName'].setValue('template name'); + component.server = {id: 1} as Server; + + component.addTemplate(); + + expect(mockedDockerService.addTemplate).not.toHaveBeenCalled(); + }); +}); diff --git a/src/app/components/preferences/docker/docker-template-details/docker-template-details.component.spec.ts b/src/app/components/preferences/docker/docker-template-details/docker-template-details.component.spec.ts index e69de29b..4e311df6 100644 --- a/src/app/components/preferences/docker/docker-template-details/docker-template-details.component.spec.ts +++ b/src/app/components/preferences/docker/docker-template-details/docker-template-details.component.spec.ts @@ -0,0 +1,76 @@ +import { ComponentFixture, async, TestBed } from '@angular/core/testing'; +import { MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule } from '@angular/material'; +import { CommonModule } from '@angular/common'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ActivatedRoute } 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 { MockedToasterService } from '../../../../services/toaster.service.spec'; +import { ToasterService } from '../../../../services/toaster.service'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MockedActivatedRoute } from '../../preferences.component.spec'; +import { DockerTemplate } from '../../../../models/templates/docker-template'; +import { DockerTemplateDetailsComponent } from './docker-template-details.component'; +import { DockerService } from '../../../../services/docker.service'; +import { DockerConfigurationService } from '../../../../services/docker-configuration.service'; + +export class MockedDockerService { + public getTemplate(server: Server, template_id: string) { + return of({} as DockerTemplate); + } + + public saveTemplate(server: Server, dockerTemplate: DockerTemplate) { + return of(dockerTemplate); + } +} + +describe('DockerTemplateDetailsComponent', () => { + let component: DockerTemplateDetailsComponent; + let fixture: ComponentFixture; + + let mockedServerService = new MockedServerService; + let mockedDockerService = new MockedDockerService; + let mockedToasterService = new MockedToasterService; + let activatedRoute = new MockedActivatedRoute().get(); + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [FormsModule, ReactiveFormsModule, MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule, CommonModule, NoopAnimationsModule, RouterTestingModule.withRoutes([])], + providers: [ + { + provide: ActivatedRoute, useValue: activatedRoute + }, + { provide: ServerService, useValue: mockedServerService }, + { provide: DockerService, useValue: mockedDockerService }, + { provide: ToasterService, useValue: mockedToasterService }, + { provide: DockerConfigurationService, useClass: DockerConfigurationService } + ], + declarations: [ + DockerTemplateDetailsComponent + ], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DockerTemplateDetailsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should call save template', () => { + spyOn(mockedDockerService, 'saveTemplate').and.returnValue(of({} as DockerTemplate)); + + component.onSave(); + + expect(mockedDockerService.saveTemplate).toHaveBeenCalled(); + }); +}); diff --git a/src/app/components/preferences/docker/docker-templates/docker-templates.component.spec.ts b/src/app/components/preferences/docker/docker-templates/docker-templates.component.spec.ts index e69de29b..182fe3e3 100644 --- a/src/app/components/preferences/docker/docker-templates/docker-templates.component.spec.ts +++ b/src/app/components/preferences/docker/docker-templates/docker-templates.component.spec.ts @@ -0,0 +1,55 @@ +import { ComponentFixture, async, TestBed } from '@angular/core/testing'; +import { MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule } from '@angular/material'; +import { CommonModule } from '@angular/common'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ActivatedRoute } 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 { MockedActivatedRoute } from '../../preferences.component.spec'; +import { DockerTemplate } from '../../../../models/templates/docker-template'; +import { DockerTemplatesComponent } from './docker-templates.component'; +import { DockerService } from '../../../../services/docker.service'; + +export class MockedDockerService { + public getTemplates(server: Server) { + return of([{} as DockerTemplate]); + } +} + +describe('DockerTemplatesComponent', () => { + let component: DockerTemplatesComponent; + let fixture: ComponentFixture; + + let mockedServerService = new MockedServerService; + let mockedDockerService = new MockedDockerService; + let activatedRoute = new MockedActivatedRoute().get(); + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule, CommonModule, NoopAnimationsModule, RouterTestingModule.withRoutes([])], + providers: [ + { provide: ActivatedRoute, useValue: activatedRoute }, + { provide: ServerService, useValue: mockedServerService }, + { provide: DockerService, useValue: mockedDockerService } + ], + declarations: [ + DockerTemplatesComponent + ], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DockerTemplatesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/preferences/ios-on-unix/add-iou-template/add-iou-template.component.spec.ts b/src/app/components/preferences/ios-on-unix/add-iou-template/add-iou-template.component.spec.ts index e69de29b..1da49684 100644 --- a/src/app/components/preferences/ios-on-unix/add-iou-template/add-iou-template.component.spec.ts +++ b/src/app/components/preferences/ios-on-unix/add-iou-template/add-iou-template.component.spec.ts @@ -0,0 +1,95 @@ +import { ComponentFixture, async, TestBed } from '@angular/core/testing'; +import { MatInputModule, MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule, MatSelectModule, MatFormFieldModule, MatAutocompleteModule, MatTableModule } from '@angular/material'; +import { CommonModule } from '@angular/common'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ActivatedRoute } 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 { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { IouTemplate } from '../../../../models/templates/iou-template'; +import { AddIouTemplateComponent } from './add-iou-template.component'; +import { IouService } from '../../../../services/iou.service'; +import { IouConfigurationService } from '../../../../services/iou-configuration.service'; + +export class MockedIouService { + public addTemplate(server: Server, iouTemplate: IouTemplate) { + return of(iouTemplate); + } +} + +describe('AddIouTemplateComponent', () => { + let component: AddIouTemplateComponent; + let fixture: ComponentFixture; + + let mockedServerService = new MockedServerService; + let mockedIouService = new MockedIouService; + let mockedToasterService = new MockedToasterService; + let activatedRoute = new MockedActivatedRoute().get(); + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ FormsModule, MatTableModule, MatAutocompleteModule, MatFormFieldModule, MatInputModule, ReactiveFormsModule, MatSelectModule, MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule, CommonModule, NoopAnimationsModule, RouterTestingModule.withRoutes([])], + providers: [ + { provide: ActivatedRoute, useValue: activatedRoute }, + { provide: ServerService, useValue: mockedServerService }, + { provide: IouService, useValue: mockedIouService }, + { provide: ToasterService, useValue: mockedToasterService}, + { provide: TemplateMocksService, useClass: TemplateMocksService }, + { provide: IouConfigurationService, useClass: IouConfigurationService } + ], + declarations: [ + AddIouTemplateComponent + ], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AddIouTemplateComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should call add template', () => { + spyOn(mockedIouService, 'addTemplate').and.returnValue(of({} as IouTemplate)); + component.templateNameForm.controls['templateName'].setValue('sample name'); + component.imageForm.controls['imageName'].setValue('sample name'); + component.server = {id: 1} as Server; + + component.addTemplate(); + + expect(mockedIouService.addTemplate).toHaveBeenCalled(); + }); + + it('should not call add template when template name is empty', () => { + spyOn(mockedIouService, 'addTemplate').and.returnValue(of({} as IouTemplate)); + component.imageForm.controls['imageName'].setValue('sample name'); + component.server = {id: 1} as Server; + + component.addTemplate(); + + expect(mockedIouService.addTemplate).not.toHaveBeenCalled(); + }); + + it('should not call add template when image is not entered', () => { + spyOn(mockedIouService, 'addTemplate').and.returnValue(of({} as IouTemplate)); + component.templateNameForm.controls['templateName'].setValue('sample name'); + component.server = {id: 1} as Server; + + component.addTemplate(); + + expect(mockedIouService.addTemplate).not.toHaveBeenCalled(); + }); +}); diff --git a/src/app/components/preferences/ios-on-unix/iou-template-details/iou-template-details.component.spec.ts b/src/app/components/preferences/ios-on-unix/iou-template-details/iou-template-details.component.spec.ts index e69de29b..b22f4dad 100644 --- a/src/app/components/preferences/ios-on-unix/iou-template-details/iou-template-details.component.spec.ts +++ b/src/app/components/preferences/ios-on-unix/iou-template-details/iou-template-details.component.spec.ts @@ -0,0 +1,74 @@ +import { ComponentFixture, async, TestBed } from '@angular/core/testing'; +import { MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule } from '@angular/material'; +import { CommonModule } from '@angular/common'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ActivatedRoute } 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 { MockedToasterService } from '../../../../services/toaster.service.spec'; +import { ToasterService } from '../../../../services/toaster.service'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MockedActivatedRoute } from '../../preferences.component.spec'; +import { IouTemplate } from '../../../../models/templates/iou-template'; +import { IouTemplateDetailsComponent } from './iou-template-details.component'; +import { IouService } from '../../../../services/iou.service'; +import { IouConfigurationService } from '../../../../services/iou-configuration.service'; + +export class MockedIouService { + public getTemplate(server: Server, template_id: string) { + return of({} as IouTemplate); + } + + public saveTemplate(server: Server, iouTemplate: IouTemplate) { + return of(iouTemplate); + } +} + +describe('IouTemplateDetailsComponent', () => { + let component: IouTemplateDetailsComponent; + let fixture: ComponentFixture; + + let mockedServerService = new MockedServerService; + let mockedIouService = new MockedIouService; + let mockedToasterService = new MockedToasterService; + let activatedRoute = new MockedActivatedRoute().get(); + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [FormsModule, ReactiveFormsModule, MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule, CommonModule, NoopAnimationsModule, RouterTestingModule.withRoutes([])], + providers: [ + { provide: ActivatedRoute, useValue: activatedRoute }, + { provide: ServerService, useValue: mockedServerService }, + { provide: IouService, useValue: mockedIouService }, + { provide: ToasterService, useValue: mockedToasterService }, + { provide: IouConfigurationService, useClass: IouConfigurationService } + ], + declarations: [ + IouTemplateDetailsComponent + ], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(IouTemplateDetailsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should call save template', () => { + spyOn(mockedIouService, 'saveTemplate').and.returnValue(of({} as IouTemplate)); + + component.onSave(); + + expect(mockedIouService.saveTemplate).toHaveBeenCalled(); + }); +}); diff --git a/src/app/components/preferences/ios-on-unix/iou-templates/iou-templates.component.spec.ts b/src/app/components/preferences/ios-on-unix/iou-templates/iou-templates.component.spec.ts index e69de29b..83781af8 100644 --- a/src/app/components/preferences/ios-on-unix/iou-templates/iou-templates.component.spec.ts +++ b/src/app/components/preferences/ios-on-unix/iou-templates/iou-templates.component.spec.ts @@ -0,0 +1,55 @@ +import { ComponentFixture, async, TestBed } from '@angular/core/testing'; +import { MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule } from '@angular/material'; +import { CommonModule } from '@angular/common'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterTestingModule } from '@angular/router/testing'; +import { ActivatedRoute } 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 { MockedActivatedRoute } from '../../preferences.component.spec'; +import { IouTemplate } from '../../../../models/templates/iou-template'; +import { IouTemplatesComponent } from './iou-templates.component'; +import { IouService } from '../../../../services/iou.service'; + +export class MockedIouService { + public getTemplates(server: Server) { + return of([{} as IouTemplate]); + } +} + +describe('IouTemplatesComponent', () => { + let component: IouTemplatesComponent; + let fixture: ComponentFixture; + + let mockedServerService = new MockedServerService; + let mockedIouService = new MockedIouService; + let activatedRoute = new MockedActivatedRoute().get(); + + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [MatIconModule, MatToolbarModule, MatMenuModule, MatCheckboxModule, CommonModule, NoopAnimationsModule, RouterTestingModule.withRoutes([])], + providers: [ + { provide: ActivatedRoute, useValue: activatedRoute }, + { provide: ServerService, useValue: mockedServerService }, + { provide: IouService, useValue: mockedIouService } + ], + declarations: [ + IouTemplatesComponent + ], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(IouTemplatesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +});