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 { 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<ServerDiscoveryComponent>;
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([]).
});
});
});

View File

@ -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<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 { 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<any>;
public get(server: Server) {
return this.response;
}
}
describe('VersionService', () => {