isServerAvailable check

This commit is contained in:
ziajka 2018-08-02 10:13:56 +02:00
parent e8e951afa7
commit 24f5f958f0
3 changed files with 94 additions and 4 deletions

View File

@ -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 { ServerDiscoveryComponent } from './server-discovery.component';
import { MatCardModule } from "@angular/material"; 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', () => { describe('ServerDiscoveryComponent', () => {
let component: ServerDiscoveryComponent; let component: ServerDiscoveryComponent;
let fixture: ComponentFixture<ServerDiscoveryComponent>; let fixture: ComponentFixture<ServerDiscoveryComponent>;
let mockedVersionService: MockedVersionService;
beforeEach(async(() => { beforeEach(async(() => {
mockedVersionService = new MockedVersionService();
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ MatCardModule ], imports: [ MatCardModule ],
providers: [
{ provide: VersionService, useFactory: () => mockedVersionService }
],
declarations: [ ServerDiscoveryComponent ] declarations: [ ServerDiscoveryComponent ]
}) })
.compileComponents(); .compileComponents();
@ -24,4 +35,53 @@ describe('ServerDiscoveryComponent', () => {
it('should create', () => { it('should create', () => {
expect(component).toBeTruthy(); 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([]).
});
});
}); });

View File

@ -1,4 +1,8 @@
import { Component, OnInit } from '@angular/core'; 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({ @Component({
selector: 'app-server-discovery', selector: 'app-server-discovery',
@ -6,10 +10,29 @@ import { Component, OnInit } from '@angular/core';
styleUrls: ['./server-discovery.component.scss'] styleUrls: ['./server-discovery.component.scss']
}) })
export class ServerDiscoveryComponent implements OnInit { export class ServerDiscoveryComponent implements OnInit {
private defaultServers = [{
ip: '127.0.0.1',
port: 3080
}
];
constructor() { } constructor(
private versionService: VersionService
) {}
ngOnInit() { ngOnInit() {
}
} }
discovery(servers: Server[]): Observable<Server> {
// this.defaultServers.forEach(());
return Observable.of(new Server());
}
isServerAvailable(ip: string, port: number): Observable<Version> {
const server = new Server();
server.ip = ip;
server.port = port;
return this.versionService.get(server);
}
}

View File

@ -4,11 +4,18 @@ import { HttpClient } from '@angular/common/http';
import { HttpTestingController, HttpClientTestingModule } from '@angular/common/http/testing'; import { HttpTestingController, HttpClientTestingModule } from '@angular/common/http/testing';
import { HttpServer } from './http-server.service'; import { HttpServer } from './http-server.service';
import { Server } from '../models/server'; import { Server } from '../models/server';
import { Node } from '../cartography/models/node';
import { Port } from '../models/port';
import { getTestServer } from './testing'; import { getTestServer } from './testing';
import { VersionService } from './version.service'; import { VersionService } from './version.service';
import { AppTestingModule } from "../testing/app-testing/app-testing.module"; import { AppTestingModule } from "../testing/app-testing/app-testing.module";
import {Observable} from "rxjs/Rx";
export class MockedVersionService {
public response: Observable<any>;
public get(server: Server) {
return this.response;
}
}
describe('VersionService', () => { describe('VersionService', () => {