You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RTL/src/app/shared/services/data.service.spec.ts

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();
}
});
});
});