diff --git a/src/app/components/servers/server-discovery/server-discovery.component.spec.ts b/src/app/components/servers/server-discovery/server-discovery.component.spec.ts index 8ffbc81e..5379ff82 100644 --- a/src/app/components/servers/server-discovery/server-discovery.component.spec.ts +++ b/src/app/components/servers/server-discovery/server-discovery.component.spec.ts @@ -1,15 +1,26 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; +import {async, ComponentFixture, fakeAsync, TestBed, tick} from '@angular/core/testing'; import { ServerDiscoveryComponent } from './server-discovery.component'; import { MatCardModule } from "@angular/material"; +import { VersionService } from "../../../services/version.service"; +import {MockedVersionService} from "../../../services/version.service.spec"; +import {Observable} from "rxjs/Rx"; +import {Version} from "../../../models/version"; +import {Server} from "../../../models/server"; + describe('ServerDiscoveryComponent', () => { let component: ServerDiscoveryComponent; let fixture: ComponentFixture; + let mockedVersionService: MockedVersionService; beforeEach(async(() => { + mockedVersionService = new MockedVersionService(); TestBed.configureTestingModule({ imports: [ MatCardModule ], + providers: [ + { provide: VersionService, useFactory: () => mockedVersionService } + ], declarations: [ ServerDiscoveryComponent ] }) .compileComponents(); @@ -24,4 +35,53 @@ describe('ServerDiscoveryComponent', () => { it('should create', () => { expect(component).toBeTruthy(); }); + + // it('should discovery new server with no added yet', () => { + // const server = component.discovery([]); + // expect(server.ip); + // }); + + describe('isAvailable', () => { + it('should return version when server is available', () => { + const version = new Version(); + version.version = '2.1.8'; + const getVersionSpy = spyOn(mockedVersionService, 'get') + .and.returnValue(Observable.of(version)); + + component.isServerAvailable('127.0.0.1', 3080).subscribe((ver) => { + expect(ver.version).toEqual('2.1.8'); + }); + + const server = new Server(); + server.ip = '127.0.0.1'; + server.port = 3080; + expect(getVersionSpy).toHaveBeenCalledWith(server); + }); + + it('should throw error once server is not available', () => { + const version = new Version(); + version.version = '2.1.8'; + const getVersionSpy = spyOn(mockedVersionService, 'get') + .and.returnValue(Observable.throwError(new Error("server is unavailable"))); + let hasExecuted = false; + + component.isServerAvailable('127.0.0.1', 3080).subscribe((ver) => {}, (err) => { + hasExecuted = true; + expect(err.toString()).toEqual('Error: server is unavailable'); + }); + + const server = new Server(); + server.ip = '127.0.0.1'; + server.port = 3080; + expect(getVersionSpy).toHaveBeenCalledWith(server); + expect(hasExecuted).toBeTruthy(); + }); + }); + + describe("discovery", () => { + it('should discovery single server', () => { + // component.discovery([]). + }); + }); + }); diff --git a/src/app/components/servers/server-discovery/server-discovery.component.ts b/src/app/components/servers/server-discovery/server-discovery.component.ts index 16b23936..3e434b97 100644 --- a/src/app/components/servers/server-discovery/server-discovery.component.ts +++ b/src/app/components/servers/server-discovery/server-discovery.component.ts @@ -1,4 +1,8 @@ import { Component, OnInit } from '@angular/core'; +import { Server } from "../../../models/server"; +import { VersionService } from "../../../services/version.service"; +import {Version} from "../../../models/version"; +import {Observable} from "rxjs/Rx"; @Component({ selector: 'app-server-discovery', @@ -6,10 +10,29 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./server-discovery.component.scss'] }) export class ServerDiscoveryComponent implements OnInit { + private defaultServers = [{ + ip: '127.0.0.1', + port: 3080 + } + ]; - constructor() { } + constructor( + private versionService: VersionService + ) {} ngOnInit() { + } + discovery(servers: Server[]): Observable { + // this.defaultServers.forEach(()); + return Observable.of(new Server()); + } + + isServerAvailable(ip: string, port: number): Observable { + const server = new Server(); + server.ip = ip; + server.port = port; + return this.versionService.get(server); + } } diff --git a/src/app/services/version.service.spec.ts b/src/app/services/version.service.spec.ts index 50799f7c..f70727bc 100644 --- a/src/app/services/version.service.spec.ts +++ b/src/app/services/version.service.spec.ts @@ -4,11 +4,18 @@ import { HttpClient } from '@angular/common/http'; import { HttpTestingController, HttpClientTestingModule } from '@angular/common/http/testing'; import { HttpServer } from './http-server.service'; import { Server } from '../models/server'; -import { Node } from '../cartography/models/node'; -import { Port } from '../models/port'; import { getTestServer } from './testing'; import { VersionService } from './version.service'; import { AppTestingModule } from "../testing/app-testing/app-testing.module"; +import {Observable} from "rxjs/Rx"; + +export class MockedVersionService { + public response: Observable; + + public get(server: Server) { + return this.response; + } +} describe('VersionService', () => {