DSDSWeb/static/js/Cesium-1.53/Specs/Core/OpenCageGeocoderServiceSpec.js

76 lines
2.3 KiB
JavaScript

defineSuite([
'Core/OpenCageGeocoderService',
'Core/GeocodeType',
'Core/Cartesian3',
'Core/Resource',
'ThirdParty/when'
], function(
OpenCageGeocoderService,
GeocodeType,
Cartesian3,
Resource,
when) {
'use strict';
var endpoint = 'https://api.opencagedata.com/geocode/v1/';
var apiKey = 'c2a490d593b14612aefa6ec2e6b77c47';
it('constructor throws without url', function() {
expect(function() {
return new OpenCageGeocoderService(undefined);
}).toThrowDeveloperError();
});
it('constructor throws without API Key', function() {
expect(function() {
return new OpenCageGeocoderService(endpoint, undefined);
}).toThrowDeveloperError();
});
it('returns geocoder results', function () {
var service = new OpenCageGeocoderService(endpoint, apiKey);
var query = '-22.6792,+14.5272';
var data = {
results: [{
bounds: {
northeast: {
lat: -22.6790826,
lng: 14.5269016
},
southwest: {
lat: -22.6792826,
lng: 14.5267016
}
},
formatted: 'Beryl\'s Restaurant, Woermann St, Swakopmund, Namibia',
geometry: {
lat: -22.6795394,
lng: 14.5276006
}
}]
};
spyOn(Resource.prototype, 'fetchJson').and.returnValue(when.resolve(data));
return service.geocode(query)
.then(function(results) {
expect(results.length).toEqual(1);
expect(results[0].displayName).toEqual(data.results[0].formatted);
expect(results[0].destination).toBeDefined();
});
});
it('returns no geocoder results if OpenCage has no results', function() {
var service = new OpenCageGeocoderService(endpoint, apiKey);
var query = '';
var data = { results: [] };
spyOn(Resource.prototype, 'fetchJson').and.returnValue(when.resolve(data));
return service.geocode(query)
.then(function(results) {
expect(results.length).toEqual(0);
});
});
});