Skip to content

Commit

Permalink
test: add VatsimService test
Browse files Browse the repository at this point in the history
  • Loading branch information
garrappachc committed Apr 19, 2019
1 parent 77c7cc8 commit 1cec7c7
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
49 changes: 49 additions & 0 deletions src/app/vatsim/vatsim.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { TestBed, inject, fakeAsync, tick, flush, async } from '@angular/core/te
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { VatsimService } from './vatsim.service';
import { API_URL } from '../api-url';
import { Fir, Uir } from './models';

describe('VatsimService', () => {
let httpController: HttpTestingController;
Expand Down Expand Up @@ -71,6 +72,54 @@ describe('VatsimService', () => {
httpController.expectOne('FAKE_HOST/vatsim/data').flush({ clients: [{ callsign: 'FAKE_CALLSIGN', type: 'atc', fir: 'FAKE_FIR' }] });
httpController.expectOne('FAKE_HOST/firs?icao=FAKE_FIR').flush([{ icao: 'FAKE_FIR' }]);
}));

it('when there are only UIRs', inject([VatsimService], (service: VatsimService) => {
service.data.subscribe(data => {
expect(data).toBeTruthy();
expect(data.clients).toBeTruthy();
expect(data.clients.length).toEqual(1);

expect(data.firs).toBeDefined();
expect(data.firs.length).toEqual(3);
for (const f of data.firs) {
expect(f.hasUirAtcsOnly).toBe(true);
expect(f.atcs).toEqual(['FAKE_CALLSIGN']);
}
expect(data.uirs.length).toEqual(1);
expect(data.uirs[0].atcs).toEqual(['FAKE_CALLSIGN']);
});

httpController.expectOne('FAKE_HOST/vatsim/data').flush({ clients: [{ callsign: 'FAKE_CALLSIGN', type: 'atc', uir: 'FAKE_UIR' }] });
httpController.expectOne('FAKE_HOST/firs?icao=FAKE_UIR').flush([{ icao: 'FAKE_UIR',
firs: ['FAKE_FIR_1', 'FAKE_FIR_2', 'FAKE_FIR_3'] }]);
httpController.expectOne('FAKE_HOST/firs?icao=FAKE_FIR_1,FAKE_FIR_2,FAKE_FIR_3').flush([{ icao: 'FAKE_FIR_1' },
{ icao: 'FAKE_FIR_2' }, { icao: 'FAKE_FIR_3' }]);
}));

it('when there are FIRs and UIRs', inject([VatsimService], (service: VatsimService) => {
service.data.subscribe(data => {
expect(data).toBeTruthy();
expect(data.clients).toBeTruthy();
expect(data.clients.length).toEqual(2);

expect(data.firs).toBeDefined();
expect(data.uirs).toBeDefined();

expect(data.firs).toEqual([
{ icao: 'FAKE_FIR', hasUirAtcsOnly: false, atcs: ['FAKE_ATC_1', 'FAKE_ATC_2'] },
] as Fir[]);
expect(data.uirs).toEqual([
{ icao: 'FAKE_UIR', firs: ['FAKE_FIR'], atcs: ['FAKE_ATC_2'] },
] as Uir[]);
});

httpController.expectOne('FAKE_HOST/vatsim/data').flush({ clients: [
{ callsign: 'FAKE_ATC_1', type: 'atc', fir: 'FAKE_FIR' },
{ callsign: 'FAKE_ATC_2', type: 'atc', uir: 'FAKE_UIR' },
]});
httpController.expectOne('FAKE_HOST/firs?icao=FAKE_UIR').flush([{ icao: 'FAKE_UIR', firs: ['FAKE_FIR'] }]);
httpController.expectOne('FAKE_HOST/firs?icao=FAKE_FIR').flush([{ icao: 'FAKE_FIR' }]);
}));
});
});
});
2 changes: 1 addition & 1 deletion src/app/vatsim/vatsim.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export class VatsimService {
}
))),
map(uirsRes => uirsRes.reduce((acc, uir) => acc.concat(uir.firs), [])),
map(firsInUirs => [ ...firsToFetch, ...firsInUirs ]),
map(firsInUirs => [ ...new Set([ ...firsToFetch, ...firsInUirs ])]),
switchMap(firs => this.fetchFirs(firs)),
map(firs => firs.map(fir => {
const firAtcs = response.clients
Expand Down

0 comments on commit 1cec7c7

Please sign in to comment.