diff --git a/src/plugins/maps_legacy/public/__tests__/map/service_settings.js b/src/plugins/maps_legacy/public/map/service_settings.test.js
similarity index 55%
rename from src/plugins/maps_legacy/public/__tests__/map/service_settings.js
rename to src/plugins/maps_legacy/public/map/service_settings.test.js
index 72c4323ed0736..01facdc54137e 100644
--- a/src/plugins/maps_legacy/public/__tests__/map/service_settings.js
+++ b/src/plugins/maps_legacy/public/map/service_settings.test.js
@@ -17,130 +17,118 @@
* under the License.
*/
-import expect from '@kbn/expect';
-import ngMock from 'ng_mock';
-import url from 'url';
+jest.mock('../kibana_services', () => ({
+ getKibanaVersion() {
+ return '1.2.3';
+ },
+}));
-import EMS_FILES from './ems_mocks/sample_files.json';
-import EMS_TILES from './ems_mocks/sample_tiles.json';
-import EMS_STYLE_ROAD_MAP_BRIGHT from './ems_mocks/sample_style_bright';
-import EMS_STYLE_ROAD_MAP_DESATURATED from './ems_mocks/sample_style_desaturated';
-import EMS_STYLE_DARK_MAP from './ems_mocks/sample_style_dark';
-import { ORIGIN } from '../../common/constants/origin';
+import url from 'url';
-describe('service_settings (FKA tilemaptest)', function () {
- let serviceSettings;
- let mapConfig;
- let tilemapsConfig;
+import EMS_FILES from '../__tests__/map/ems_mocks/sample_files.json';
+import EMS_TILES from '../__tests__/map/ems_mocks/sample_tiles.json';
+import EMS_STYLE_ROAD_MAP_BRIGHT from '../__tests__/map/ems_mocks/sample_style_bright';
+import EMS_STYLE_ROAD_MAP_DESATURATED from '../__tests__/map/ems_mocks/sample_style_desaturated';
+import EMS_STYLE_DARK_MAP from '../__tests__/map/ems_mocks/sample_style_dark';
+import { ORIGIN } from '../common/constants/origin';
+import { ServiceSettings } from './service_settings';
+describe('service_settings (FKA tile_map test)', function () {
const emsFileApiUrl = 'https://files.foobar';
const emsTileApiUrl = 'https://tiles.foobar';
- const emsTileApiUrl2 = 'https://tiles_override.foobar';
- const emsFileApiUrl2 = 'https://files_override.foobar';
-
- beforeEach(
- ngMock.module('kibana', ($provide) => {
- $provide.decorator('mapConfig', () => {
- return {
- emsFileApiUrl,
- emsTileApiUrl,
- includeElasticMapsService: true,
- emsTileLayerId: {
- bright: 'road_map',
- desaturated: 'road_map_desaturated',
- dark: 'dark_map',
- },
- };
- });
- })
- );
-
- let emsTileApiUrlOriginal;
- let emsFileApiUrlOriginal;
- let tilemapsConfigDeprecatedOriginal;
- let getManifestStub;
- beforeEach(
- ngMock.inject(function ($injector, $rootScope) {
- serviceSettings = $injector.get('serviceSettings');
- getManifestStub = serviceSettings.__debugStubManifestCalls(async (url) => {
- //simulate network calls
- if (url.startsWith('https://tiles.foobar')) {
- if (url.includes('/manifest')) {
- return EMS_TILES;
- } else if (url.includes('osm-bright-desaturated.json')) {
- return EMS_STYLE_ROAD_MAP_DESATURATED;
- } else if (url.includes('osm-bright.json')) {
- return EMS_STYLE_ROAD_MAP_BRIGHT;
- } else if (url.includes('dark-matter.json')) {
- return EMS_STYLE_DARK_MAP;
- }
- } else if (url.startsWith('https://files.foobar')) {
- return EMS_FILES;
+ const defaultMapConfig = {
+ emsFileApiUrl,
+ emsTileApiUrl,
+ includeElasticMapsService: true,
+ emsTileLayerId: {
+ bright: 'road_map',
+ desaturated: 'road_map_desaturated',
+ dark: 'dark_map',
+ },
+ };
+
+ const defaultTilemapConfig = {
+ deprecated: {
+ config: {
+ options: {},
+ },
+ },
+ };
+
+ function makeServiceSettings(mapConfigOptions = {}, tilemapOptions = {}) {
+ const serviceSettings = new ServiceSettings(
+ { ...defaultMapConfig, ...mapConfigOptions },
+ { ...defaultTilemapConfig, ...tilemapOptions }
+ );
+ serviceSettings.__debugStubManifestCalls(async (url) => {
+ //simulate network calls
+ if (url.startsWith('https://tiles.foobar')) {
+ if (url.includes('/manifest')) {
+ return EMS_TILES;
+ } else if (url.includes('osm-bright-desaturated.json')) {
+ return EMS_STYLE_ROAD_MAP_DESATURATED;
+ } else if (url.includes('osm-bright.json')) {
+ return EMS_STYLE_ROAD_MAP_BRIGHT;
+ } else if (url.includes('dark-matter.json')) {
+ return EMS_STYLE_DARK_MAP;
}
- });
- mapConfig = $injector.get('mapConfig');
- tilemapsConfig = $injector.get('tilemapsConfig');
-
- emsTileApiUrlOriginal = mapConfig.emsTileApiUrl;
- emsFileApiUrlOriginal = mapConfig.emsFileApiUrl;
-
- tilemapsConfigDeprecatedOriginal = tilemapsConfig.deprecated;
- $rootScope.$digest();
- })
- );
-
- afterEach(function () {
- getManifestStub.removeStub();
- mapConfig.emsTileApiUrl = emsTileApiUrlOriginal;
- mapConfig.emsFileApiUrl = emsFileApiUrlOriginal;
- tilemapsConfig.deprecated = tilemapsConfigDeprecatedOriginal;
- });
+ } else if (url.startsWith('https://files.foobar')) {
+ return EMS_FILES;
+ }
+ });
+ return serviceSettings;
+ }
describe('TMS', function () {
it('should NOT get url from the config', async function () {
+ const serviceSettings = makeServiceSettings();
const tmsServices = await serviceSettings.getTMSServices();
const tmsService = tmsServices[0];
- expect(typeof tmsService.url === 'undefined').to.equal(true);
+ expect(typeof tmsService.url === 'undefined').toEqual(true);
});
it('should get url by resolving dynamically', async function () {
+ const serviceSettings = makeServiceSettings();
const tmsServices = await serviceSettings.getTMSServices();
const tmsService = tmsServices[0];
- expect(typeof tmsService.url === 'undefined').to.equal(true);
+ expect(typeof tmsService.url === 'undefined').toEqual(true);
const attrs = await serviceSettings.getAttributesForTMSLayer(tmsService);
- expect(attrs.url).to.contain('{x}');
- expect(attrs.url).to.contain('{y}');
- expect(attrs.url).to.contain('{z}');
+ expect(attrs.url.includes('{x}')).toEqual(true);
+ expect(attrs.url.includes('{y}')).toEqual(true);
+ expect(attrs.url.includes('{z}')).toEqual(true);
const urlObject = url.parse(attrs.url, true);
- expect(urlObject.hostname).to.be('tiles.foobar');
- expect(urlObject.query).to.have.property('my_app_name', 'kibana');
- expect(urlObject.query).to.have.property('elastic_tile_service_tos', 'agree');
- expect(urlObject.query).to.have.property('my_app_version');
+ expect(urlObject.hostname).toEqual('tiles.foobar');
+ expect(urlObject.query.my_app_name).toEqual('kibana');
+ expect(urlObject.query.elastic_tile_service_tos).toEqual('agree');
+ expect(typeof urlObject.query.my_app_version).toEqual('string');
});
it('should get options', async function () {
+ const serviceSettings = makeServiceSettings();
const tmsServices = await serviceSettings.getTMSServices();
const tmsService = tmsServices[0];
- expect(tmsService).to.have.property('minZoom');
- expect(tmsService).to.have.property('maxZoom');
- expect(tmsService).to.have.property('attribution').contain('OpenStreetMap');
+ expect(typeof tmsService.minZoom).toEqual('number');
+ expect(typeof tmsService.maxZoom).toEqual('number');
+ expect(tmsService.attribution.includes('OpenStreetMap')).toEqual(true);
});
describe('modify - url', function () {
let tilemapServices;
+ let serviceSettings;
async function assertQuery(expected) {
const attrs = await serviceSettings.getAttributesForTMSLayer(tilemapServices[0]);
const urlObject = url.parse(attrs.url, true);
Object.keys(expected).forEach((key) => {
- expect(urlObject.query).to.have.property(key, expected[key]);
+ expect(urlObject.query[key]).toEqual(expected[key]);
});
}
it('accepts an object', async () => {
+ serviceSettings = makeServiceSettings();
serviceSettings.setQueryParams({ foo: 'bar' });
tilemapServices = await serviceSettings.getTMSServices();
await assertQuery({ foo: 'bar' });
@@ -148,6 +136,7 @@ describe('service_settings (FKA tilemaptest)', function () {
it('merged additions with previous values', async () => {
// ensure that changes are always additive
+ serviceSettings = makeServiceSettings();
serviceSettings.setQueryParams({ foo: 'bar' });
serviceSettings.setQueryParams({ bar: 'stool' });
tilemapServices = await serviceSettings.getTMSServices();
@@ -155,6 +144,7 @@ describe('service_settings (FKA tilemaptest)', function () {
});
it('overwrites conflicting previous values', async () => {
+ serviceSettings = makeServiceSettings();
// ensure that conflicts are overwritten
serviceSettings.setQueryParams({ foo: 'bar' });
serviceSettings.setQueryParams({ bar: 'stool' });
@@ -163,24 +153,21 @@ describe('service_settings (FKA tilemaptest)', function () {
await assertQuery({ foo: 'tstool', bar: 'stool' });
});
- it('when overridden, should continue to work', async () => {
- mapConfig.emsFileApiUrl = emsFileApiUrl2;
- mapConfig.emsTileApiUrl = emsTileApiUrl2;
- serviceSettings.setQueryParams({ foo: 'bar' });
- tilemapServices = await serviceSettings.getTMSServices();
- await assertQuery({ foo: 'bar' });
- });
-
it('should merge in tilemap url', async () => {
- tilemapsConfig.deprecated = {
- isOverridden: true,
- config: {
- url: 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png',
- options: { minZoom: 0, maxZoom: 20 },
- },
- };
+ serviceSettings = makeServiceSettings(
+ {},
+ {
+ deprecated: {
+ isOverridden: true,
+ config: {
+ url: 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png',
+ options: { minZoom: 0, maxZoom: 20 },
+ },
+ },
+ }
+ );
- tilemapServices = await serviceSettings.getTMSServices();
+ const tilemapServices = await serviceSettings.getTMSServices();
const expected = [
{
attribution: '',
@@ -202,17 +189,18 @@ describe('service_settings (FKA tilemaptest)', function () {
const assertions = tilemapServices.map(async (actualService, index) => {
const expectedService = expected[index];
- expect(actualService.id).to.equal(expectedService.id);
- expect(actualService.attribution).to.equal(expectedService.attribution);
+ expect(actualService.id).toEqual(expectedService.id);
+ expect(actualService.attribution).toEqual(expectedService.attribution);
const attrs = await serviceSettings.getAttributesForTMSLayer(actualService);
- expect(attrs.url).to.equal(expectedService.url);
+ expect(attrs.url).toEqual(expectedService.url);
});
return Promise.all(assertions);
});
it('should load appropriate EMS attributes for desaturated and dark theme', async () => {
- tilemapServices = await serviceSettings.getTMSServices();
+ serviceSettings = makeServiceSettings();
+ const tilemapServices = await serviceSettings.getTMSServices();
const roadMapService = tilemapServices.find((service) => service.id === 'road_map');
const desaturationFalse = await serviceSettings.getAttributesForTMSLayer(
@@ -236,35 +224,40 @@ describe('service_settings (FKA tilemaptest)', function () {
true
);
- expect(desaturationFalse.url).to.equal(
+ expect(desaturationFalse.url).toEqual(
'https://tiles.foobar/raster/styles/osm-bright/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
);
- expect(desaturationFalse.maxZoom).to.equal(10);
- expect(desaturationTrue.url).to.equal(
+ expect(desaturationFalse.maxZoom).toEqual(10);
+ expect(desaturationTrue.url).toEqual(
'https://tiles.foobar/raster/styles/osm-bright-desaturated/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
);
- expect(desaturationTrue.maxZoom).to.equal(18);
- expect(darkThemeDesaturationFalse.url).to.equal(
+ expect(desaturationTrue.maxZoom).toEqual(18);
+ expect(darkThemeDesaturationFalse.url).toEqual(
'https://tiles.foobar/raster/styles/dark-matter/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
);
- expect(darkThemeDesaturationFalse.maxZoom).to.equal(22);
- expect(darkThemeDesaturationTrue.url).to.equal(
+ expect(darkThemeDesaturationFalse.maxZoom).toEqual(22);
+ expect(darkThemeDesaturationTrue.url).toEqual(
'https://tiles.foobar/raster/styles/dark-matter/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana&my_app_version=1.2.3'
);
- expect(darkThemeDesaturationTrue.maxZoom).to.equal(22);
+ expect(darkThemeDesaturationTrue.maxZoom).toEqual(22);
});
it('should exclude EMS', async () => {
- tilemapsConfig.deprecated = {
- isOverridden: true,
- config: {
- url: 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png',
- options: { minZoom: 0, maxZoom: 20 },
+ serviceSettings = makeServiceSettings(
+ {
+ includeElasticMapsService: false,
},
- };
- mapConfig.includeElasticMapsService = false;
-
- tilemapServices = await serviceSettings.getTMSServices();
+ {
+ deprecated: {
+ isOverridden: true,
+ config: {
+ url: 'https://a.tile.openstreetmap.org/{z}/{x}/{y}.png',
+ options: { minZoom: 0, maxZoom: 20 },
+ },
+ },
+ }
+ );
+ const tilemapServices = await serviceSettings.getTMSServices();
const expected = [
{
attribution: '',
@@ -272,33 +265,37 @@ describe('service_settings (FKA tilemaptest)', function () {
id: 'TMS in config/kibana.yml',
},
];
- expect(tilemapServices.length).to.eql(1);
- expect(tilemapServices[0].attribution).to.eql(expected[0].attribution);
- expect(tilemapServices[0].id).to.eql(expected[0].id);
+ expect(tilemapServices.length).toEqual(1);
+ expect(tilemapServices[0].attribution).toEqual(expected[0].attribution);
+ expect(tilemapServices[0].id).toEqual(expected[0].id);
const attrs = await serviceSettings.getAttributesForTMSLayer(tilemapServices[0]);
- expect(attrs.url).to.equal(expected[0].url);
+ expect(attrs.url).toEqual(expected[0].url);
});
it('should exclude all when not configured', async () => {
- mapConfig.includeElasticMapsService = false;
- tilemapServices = await serviceSettings.getTMSServices();
+ serviceSettings = makeServiceSettings({
+ includeElasticMapsService: false,
+ });
+ // mapConfig.includeElasticMapsService = false;
+ const tilemapServices = await serviceSettings.getTMSServices();
const expected = [];
- expect(tilemapServices).to.eql(expected);
+ expect(tilemapServices).toEqual(expected);
});
});
});
describe('File layers', function () {
it('should load manifest (all props)', async function () {
+ const serviceSettings = makeServiceSettings();
serviceSettings.setQueryParams({ foo: 'bar' });
const fileLayers = await serviceSettings.getFileLayers();
- expect(fileLayers.length).to.be(18);
+ expect(fileLayers.length).toEqual(18);
const assertions = fileLayers.map(async function (fileLayer) {
- expect(fileLayer.origin).to.be(ORIGIN.EMS);
+ expect(fileLayer.origin).toEqual(ORIGIN.EMS);
const fileUrl = await serviceSettings.getUrlForRegionLayer(fileLayer);
const urlObject = url.parse(fileUrl, true);
Object.keys({ foo: 'bar', elastic_tile_service_tos: 'agree' }).forEach((key) => {
- expect(urlObject.query).to.have.property(key);
+ expect(typeof urlObject.query[key]).toEqual('string');
});
});
@@ -308,7 +305,7 @@ describe('service_settings (FKA tilemaptest)', function () {
it('should load manifest (individual props)', async () => {
const expected = {
attribution:
- 'Made with NaturalEarth | Elastic Maps Service',
+ 'Made with NaturalEarth | Elastic Maps Service',
format: 'geojson',
fields: [
{ type: 'id', name: 'iso2', description: 'ISO 3166-1 alpha-2 code' },
@@ -319,28 +316,32 @@ describe('service_settings (FKA tilemaptest)', function () {
name: 'World Countries',
};
+ const serviceSettings = makeServiceSettings();
const fileLayers = await serviceSettings.getFileLayers();
const actual = fileLayers[0];
- expect(expected.attribution).to.eql(actual.attribution);
- expect(expected.format).to.eql(actual.format);
- expect(expected.fields).to.eql(actual.fields);
- expect(expected.name).to.eql(actual.name);
+ expect(expected.attribution).toEqual(actual.attribution);
+ expect(expected.format).toEqual(actual.format);
+ expect(expected.fields).toEqual(actual.fields);
+ expect(expected.name).toEqual(actual.name);
- expect(expected.created_at).to.eql(actual.created_at);
+ expect(expected.created_at).toEqual(actual.created_at);
});
it('should exclude all when not configured', async () => {
- mapConfig.includeElasticMapsService = false;
+ const serviceSettings = makeServiceSettings({
+ includeElasticMapsService: false,
+ });
const fileLayers = await serviceSettings.getFileLayers();
const expected = [];
- expect(fileLayers).to.eql(expected);
+ expect(fileLayers).toEqual(expected);
});
it('should get hotlink', async () => {
+ const serviceSettings = makeServiceSettings();
const fileLayers = await serviceSettings.getFileLayers();
const hotlink = await serviceSettings.getEMSHotLink(fileLayers[0]);
- expect(hotlink).to.eql('?locale=en#file/world_countries'); //url host undefined becuase emsLandingPageUrl is set at kibana-load
+ expect(hotlink).toEqual('?locale=en#file/world_countries'); //url host undefined becuase emsLandingPageUrl is set at kibana-load
});
});
});