defineSuite([ 'Core/IonGeocoderService', 'Core/Ion', 'Core/GeocodeType', 'Core/Rectangle', 'Core/Resource', 'ThirdParty/when', 'Specs/createScene' ], function( IonGeocoderService, Ion, GeocodeType, Rectangle, Resource, when, createScene) { 'use strict'; var scene; beforeEach(function() { scene = createScene(); }); afterEach(function() { scene.destroyForSpecs(); }); it('Creates with default parameters', function() { var service = new IonGeocoderService({ scene: scene }); expect(service._accessToken).toEqual(Ion.defaultAccessToken); expect(service._server.url).toEqual(Ion.defaultServer.url); }); it('Creates with specified parameters', function() { var accessToken = '123456'; var server = 'http://not.ion.invalid/'; var service = new IonGeocoderService({ accessToken: accessToken, server: server, scene: scene }); expect(service._accessToken).toEqual(accessToken); expect(service._server.url).toEqual(server); }); it('calls inner geocoder and returns result', function () { var service = new IonGeocoderService({ scene: scene }); var expectedResult = when.resolve(); spyOn(service._pelias, 'geocode').and.returnValue(expectedResult); var query = 'some query'; var result = service.geocode(query, GeocodeType.SEARCH); expect(result).toBe(expectedResult); expect(service._pelias.geocode).toHaveBeenCalledWith(query, GeocodeType.SEARCH); }); });