import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'
import { TestBed } from '@angular/core/testing';
-import { EIJob } from '../../interfaces/ei.types';
+import { EIJob, ProducerStatus, OperationalState, ProducerRegistrationInfo } from '../../interfaces/ei.types';
import { EIService } from './ei.service';
describe('EIService', () => {
expect(service).toBeTruthy();
});
- describe('#getEIProducers', () => {
+ describe('#getProducerIds', () => {
let expectedEIProducerIds: String[];
beforeEach(() => {
});
});
- describe('#EIJobs', () => {
+ describe('#getJobsForProducer', () => {
let expectedEIJobs: EIJob[];
beforeEach(() => {
httpTestingController.verify();
});
});
+
+ describe('#getProducer', () => {
+ let expectedProducer: ProducerRegistrationInfo;
+
+ beforeEach(() => {
+ service = TestBed.get(EIService);
+ httpTestingController = TestBed.get(HttpTestingController);
+ expectedProducer = {
+ supported_ei_types: [ 'type1', 'type2' ]
+ } as ProducerRegistrationInfo;
+ });
+
+ it('should return producer', () => {
+ service.getProducer('producer1').subscribe(
+ producer => expect(producer).toEqual(expectedProducer, 'should return expected producer'),
+ fail
+ );
+
+ const req = httpTestingController.expectOne(basePath + '/' + service.eiProducersPath + '/producer1');
+ expect(req.request.method).toEqual('GET');
+
+ req.flush(expectedProducer); //Return expected producer
+
+ httpTestingController.verify();
+ });
+ });
+
+ describe('#getProducerStatus', () => {
+ let expectedProducerStatus: ProducerStatus;
+
+ beforeEach(() => {
+ service = TestBed.get(EIService);
+ httpTestingController = TestBed.get(HttpTestingController);
+ expectedProducerStatus = {
+ opState: OperationalState.ENABLED
+ } as ProducerStatus;
+ });
+
+ it('should return producer status', () => {
+ service.getProducerStatus('producer1').subscribe(
+ producerStatus => expect(producerStatus).toEqual(expectedProducerStatus, 'should return expected producer'),
+ fail
+ );
+
+ const req = httpTestingController.expectOne(basePath + '/' + service.eiProducersPath + '/producer1/' + service.eiProducerStatusPath);
+ expect(req.request.method).toEqual('GET');
+
+ req.flush(expectedProducerStatus); //Return expected status
+
+ httpTestingController.verify();
+ });
+ });
});
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
-import { Observable, of } from 'rxjs';
-import { EIJob, EIProducer } from '../../interfaces/ei.types';
+import { Observable } from 'rxjs';
+import { EIJob, EIProducer, ProducerStatus, ProducerRegistrationInfo } from '../../interfaces/ei.types';
/**
* Services for calling the EI endpoints.
export class EIService {
private basePath = '/ei-producer/v1';
- eiJobsPath = 'eijobs';
- eiProducersPath = 'eiproducers';
+ readonly eiJobsPath = 'eijobs';
+ readonly eiProducersPath = 'eiproducers';
+ readonly eiProducerStatusPath = 'status';
private buildPath(...args: any[]) {
let result = this.basePath;
return this.httpClient.get<EIJob[]>(url);
}
+ getProducer(producerId: String): Observable<ProducerRegistrationInfo> {
+ const url = this.buildPath(this.eiProducersPath, producerId);
+ return this.httpClient.get<ProducerRegistrationInfo>(url);
+ }
+
+ getProducerStatus(producerId: String): Observable<ProducerStatus> {
+ const url = this.buildPath(this.eiProducersPath, producerId, this.eiProducerStatusPath);
+ return this.httpClient.get<ProducerStatus>(url);
+ }
+
getEIProducers(): Observable<EIProducer[]> {
const url = this.buildPath(this.eiProducersPath);
return this.httpClient.get<EIProducer[]>(url);