Adding a data source to support ArcGIS Map Server and Image Server. Functionality is similar to the ArcGIS93Rest Layer in OpenLayers 2.
243 lines
7.7 KiB
JavaScript
243 lines
7.7 KiB
JavaScript
goog.provide('ol.test.source.TileArcGISRest');
|
|
|
|
|
|
describe('ol.source.TileArcGISRest', function() {
|
|
|
|
var options;
|
|
beforeEach(function() {
|
|
options = {
|
|
params: {},
|
|
url: 'http://example.com/MapServer'
|
|
};
|
|
});
|
|
|
|
describe('#getTile', function() {
|
|
|
|
it('returns a tile with the expected URL', function() {
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
var tile = source.getTile(3, 2, 1, 1, ol.proj.get('EPSG:3857'));
|
|
expect(tile).to.be.an(ol.ImageTile);
|
|
var uri = new goog.Uri(tile.src_);
|
|
expect(uri.getScheme()).to.be('http');
|
|
expect(uri.getDomain()).to.be('example.com');
|
|
expect(uri.getPath()).to.be('/MapServer/export');
|
|
var queryData = uri.getQueryData();
|
|
expect(queryData.get('BBOX')).to.be(
|
|
'-10018754.171394622,-15028131.257091932,' +
|
|
'-5009377.085697311,-10018754.17139462');
|
|
expect(queryData.get('FORMAT')).to.be('PNG32');
|
|
expect(queryData.get('SIZE')).to.be('256,256');
|
|
expect(queryData.get('IMAGESR')).to.be('3857');
|
|
expect(queryData.get('BBOXSR')).to.be('3857');
|
|
expect(queryData.get('TRANSPARENT')).to.be('true');
|
|
|
|
});
|
|
|
|
it('returns a tile with the expected URL with url list', function() {
|
|
|
|
options.urls = ['http://test1.com/MapServer',
|
|
'http://test2.com/MapServer'];
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
|
|
var tile = source.getTile(3, 2, 1, 1, ol.proj.get('EPSG:3857'));
|
|
expect(tile).to.be.an(ol.ImageTile);
|
|
var uri = new goog.Uri(tile.src_);
|
|
expect(uri.getScheme()).to.be('http');
|
|
expect(uri.getDomain()).to.match(/test[12]\.com/);
|
|
expect(uri.getPath()).to.be('/MapServer/export');
|
|
var queryData = uri.getQueryData();
|
|
expect(queryData.get('BBOX')).to.be(
|
|
'-10018754.171394622,-15028131.257091932,' +
|
|
'-5009377.085697311,-10018754.17139462');
|
|
expect(queryData.get('FORMAT')).to.be('PNG32');
|
|
expect(queryData.get('SIZE')).to.be('256,256');
|
|
expect(queryData.get('IMAGESR')).to.be('3857');
|
|
expect(queryData.get('BBOXSR')).to.be('3857');
|
|
expect(queryData.get('TRANSPARENT')).to.be('true');
|
|
|
|
});
|
|
|
|
it('returns a tile with the expected URL for ImageServer', function() {
|
|
options.url = 'http://example.com/ImageServer';
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
var tile = source.getTile(3, 2, 1, 1, ol.proj.get('EPSG:3857'));
|
|
expect(tile).to.be.an(ol.ImageTile);
|
|
var uri = new goog.Uri(tile.src_);
|
|
expect(uri.getScheme()).to.be('http');
|
|
expect(uri.getDomain()).to.be('example.com');
|
|
expect(uri.getPath()).to.be('/ImageServer/exportImage');
|
|
var queryData = uri.getQueryData();
|
|
expect(queryData.get('BBOX')).to.be(
|
|
'-10018754.171394622,-15028131.257091932,' +
|
|
'-5009377.085697311,-10018754.17139462');
|
|
expect(queryData.get('FORMAT')).to.be('PNG32');
|
|
expect(queryData.get('SIZE')).to.be('256,256');
|
|
expect(queryData.get('IMAGESR')).to.be('3857');
|
|
expect(queryData.get('BBOXSR')).to.be('3857');
|
|
expect(queryData.get('TRANSPARENT')).to.be('true');
|
|
});
|
|
|
|
it('allows various parameters to be overridden', function() {
|
|
options.params.FORMAT = 'png';
|
|
options.params.TRANSPARENT = false;
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
var tile = source.getTile(3, 2, 1, 1, ol.proj.get('EPSG:4326'));
|
|
var uri = new goog.Uri(tile.src_);
|
|
var queryData = uri.getQueryData();
|
|
expect(queryData.get('FORMAT')).to.be('png');
|
|
expect(queryData.get('TRANSPARENT')).to.be('false');
|
|
});
|
|
|
|
it('allows adding rest option', function() {
|
|
options.params.LAYERS = 'show:1,3,4';
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
var tile = source.getTile(3, 2, 1, 1, ol.proj.get('EPSG:4326'));
|
|
var uri = new goog.Uri(tile.src_);
|
|
var queryData = uri.getQueryData();
|
|
expect(queryData.get('LAYERS')).to.be('show:1,3,4');
|
|
});
|
|
});
|
|
|
|
describe('#updateParams', function() {
|
|
|
|
it('add a new param', function() {
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
source.updateParams({ 'TEST': 'value' });
|
|
|
|
var tile = source.getTile(3, 2, 1, 1, ol.proj.get('EPSG:3857'));
|
|
var uri = new goog.Uri(tile.src_);
|
|
var queryData = uri.getQueryData();
|
|
|
|
expect(queryData.get('TEST')).to.be('value');
|
|
});
|
|
|
|
it('updates an existing param', function() {
|
|
options.params.TEST = 'value';
|
|
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
source.updateParams({ 'TEST': 'newValue' });
|
|
|
|
var tile = source.getTile(3, 2, 1, 1, ol.proj.get('EPSG:3857'));
|
|
var uri = new goog.Uri(tile.src_);
|
|
var queryData = uri.getQueryData();
|
|
|
|
expect(queryData.get('TEST')).to.be('newValue');
|
|
});
|
|
|
|
});
|
|
|
|
describe('#getParams', function() {
|
|
|
|
it('verify getting a param', function() {
|
|
options.params.TEST = 'value';
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
|
|
var setParams = source.getParams();
|
|
|
|
expect(setParams).to.eql({ TEST: 'value' });
|
|
});
|
|
|
|
it('verify on adding a param', function() {
|
|
options.params.TEST = 'value';
|
|
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
source.updateParams({ 'TEST2': 'newValue' });
|
|
|
|
var setParams = source.getParams();
|
|
|
|
expect(setParams).to.eql({ TEST: 'value', TEST2: 'newValue' });
|
|
});
|
|
|
|
it('verify on update a param', function() {
|
|
options.params.TEST = 'value';
|
|
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
source.updateParams({ 'TEST': 'newValue' });
|
|
|
|
var setParams = source.getParams();
|
|
|
|
expect(setParams).to.eql({ TEST: 'newValue' });
|
|
});
|
|
|
|
});
|
|
|
|
describe('#getUrls', function() {
|
|
|
|
it('verify getting array of urls', function() {
|
|
options.urls = ['http://test.com/MapServer',
|
|
'http://test2.com/MapServer'];
|
|
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
|
|
var urls = source.getUrls();
|
|
|
|
expect(urls).to.eql(['http://test.com/MapServer',
|
|
'http://test2.com/MapServer']);
|
|
});
|
|
|
|
|
|
});
|
|
|
|
describe('#setUrls', function() {
|
|
|
|
it('verify setting urls when not set yet', function() {
|
|
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
source.setUrls(['http://test.com/MapServer',
|
|
'http://test2.com/MapServer']);
|
|
|
|
var urls = source.getUrls();
|
|
|
|
expect(urls).to.eql(['http://test.com/MapServer',
|
|
'http://test2.com/MapServer']);
|
|
});
|
|
|
|
it('verify setting urls with existing list', function() {
|
|
options.urls = ['http://test.com/MapServer',
|
|
'http://test2.com/MapServer'];
|
|
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
source.setUrls(['http://test3.com/MapServer',
|
|
'http://test4.com/MapServer']);
|
|
|
|
var urls = source.getUrls();
|
|
|
|
expect(urls).to.eql(['http://test3.com/MapServer',
|
|
'http://test4.com/MapServer']);
|
|
});
|
|
});
|
|
|
|
describe('#setUrl', function() {
|
|
|
|
it('verify setting url with no urls', function() {
|
|
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
source.setUrl('http://test.com/MapServer');
|
|
|
|
var urls = source.getUrls();
|
|
|
|
expect(urls).to.eql(['http://test.com/MapServer']);
|
|
});
|
|
|
|
it('verify setting url with list of urls', function() {
|
|
options.urls = ['http://test.com/MapServer',
|
|
'http://test2.com/MapServer'];
|
|
|
|
var source = new ol.source.TileArcGISRest(options);
|
|
source.setUrl('http://test3.com/MapServer');
|
|
|
|
var urls = source.getUrls();
|
|
|
|
expect(urls).to.eql(['http://test3.com/MapServer']);
|
|
});
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
goog.require('goog.Uri');
|
|
goog.require('ol.ImageTile');
|
|
goog.require('ol.source.TileArcGISRest');
|
|
goog.require('ol.proj');
|