Untitled
unknown
plain_text
3 years ago
2.6 kB
10
Indexable
describe('MyService', () => {
let service: MyService;
let httpTestingController: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [MyService],
});
service = TestBed.inject(MyService);
httpTestingController = TestBed.inject(HttpTestingController);
});
afterEach(() => {
httpTestingController.verify();
});
describe('getLocationFromAddress$', () => {
it('should return an observable', () => {
const observable = service.getLocationFromAddress$('postcode');
expect(observable).toBeInstanceOf(Observable);
});
it('should emit a value of type AALocation', done => {
const expectedLocation = { latitude: 51.5074, longitude: -0.1278 };
service.getLocationFromAddress$('postcode').subscribe({
next: location => {
expect(location).toEqual(expectedLocation);
done();
},
error: done.fail,
});
const req = httpTestingController.expectOne(
'https://maps.googleapis.com/maps/api/geocode/json?address=postcode&componentRestrictions%5Bcountry%5D=UK'
);
req.flush({
results: [
{
formatted_address: 'London, UK',
geometry: {
location: { lat: expectedLocation.latitude, lng: expectedLocation.longitude },
},
},
],
status: 'OK',
});
});
it('should complete without errors', done => {
service.getLocationFromAddress$('postcode').subscribe({
complete: done,
error: done.fail,
});
const req = httpTestingController.expectOne(
'https://maps.googleapis.com/maps/api/geocode/json?address=postcode&componentRestrictions%5Bcountry%5D=UK'
);
req.flush({ status: 'OK' });
});
});
describe('getLocationFromAddress', () => {
it('should return a promise that resolves to AALocation', async () => {
const expectedLocation = { latitude: 51.5074, longitude: -0.1278 };
const promise = service.getLocationFromAddress('postcode');
const req = httpTestingController.expectOne(
'https://maps.googleapis.com/maps/api/geocode/json?address=postcode&componentRestrictions%5Bcountry%5D=UK'
);
req.flush({
results: [
{
formatted_address: 'London, UK',
geometry: {
location: { lat: expectedLocation.latitude, lng: expectedLocation.longitude },
},
},
],
status: 'OK',
});
const location = await promise;
Editor is loading...