mirror of
https://github.com/Ride-The-Lightning/RTL
synced 2024-11-09 13:10:44 +00:00
bea5980c6f
Release 0.12.0
48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
import { TitleCasePipe } from '@angular/common';
|
|
import { Store } from '@ngrx/store';
|
|
import { of, throwError } from 'rxjs';
|
|
import { DataService } from './data.service';
|
|
import { LoggerService } from './logger.service';
|
|
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
import { mockResponseData } from '../test-helpers/test-data';
|
|
import { RTLState } from '../../store/rtl.state';
|
|
|
|
describe('DataService', () => {
|
|
let httpClientSpy: { get: jasmine.Spy };
|
|
let dataService: DataService;
|
|
let store: Store<RTLState>;
|
|
let logger: LoggerService;
|
|
let snackbar: MatSnackBar;
|
|
let titleCasePipe: TitleCasePipe;
|
|
|
|
beforeEach(() => {
|
|
httpClientSpy = jasmine.createSpyObj('HttpClient', ['get', 'post']);
|
|
dataService = new DataService(httpClientSpy as any, store, logger, snackbar, titleCasePipe);
|
|
});
|
|
|
|
it('should return expected rates (HttpClient called once)', (done: DoneFn) => {
|
|
httpClientSpy.get.and.returnValue(of(mockResponseData.fiatRates));
|
|
dataService.getFiatRates().
|
|
subscribe({
|
|
next: (rates) => {
|
|
expect(rates).toEqual(mockResponseData.fiatRates);
|
|
done();
|
|
},
|
|
error: done.fail
|
|
});
|
|
expect(httpClientSpy.get.calls.count()).toBe(1);
|
|
});
|
|
|
|
it('should return an error when the server returns a 401', (done: DoneFn) => {
|
|
httpClientSpy.get.and.returnValue(throwError(() => mockResponseData.error401));
|
|
dataService.getFiatRates().subscribe({
|
|
next: (rates) => done.fail('expected an error, not rates'),
|
|
error: (error) => {
|
|
expect(error.status).toEqual('401');
|
|
expect(error.statusText).toContain('Not Found');
|
|
done();
|
|
}
|
|
});
|
|
});
|
|
});
|