GUI -- MapService: rework API and internal code for loading map. WIP.
Change-Id: I74458a3ef615d67a0fe9869926ef230990cd902f
diff --git a/web/gui/src/main/webapp/tests/app/fw/svg/map-spec.js b/web/gui/src/main/webapp/tests/app/fw/svg/map-spec.js
index 5dfb1d6..23746f4 100644
--- a/web/gui/src/main/webapp/tests/app/fw/svg/map-spec.js
+++ b/web/gui/src/main/webapp/tests/app/fw/svg/map-spec.js
@@ -20,20 +20,21 @@
@author Simon Hunt
*/
describe('factory: fw/svg/map.js', function() {
- var $log, fs, ms, d3Elem, promise;
+ var $log, $httpBackend, fs, ms, d3Elem, promise;
beforeEach(module('onosUtil', 'onosSvg'));
- beforeEach(inject(function (_$log_, FnService, MapService) {
+ beforeEach(inject(function (_$log_, _$httpBackend_, FnService, MapService) {
$log = _$log_;
+ $httpBackend = _$httpBackend_;
fs = FnService;
ms = MapService;
- ms.clearCache();
- // TODO: d3Elem = d3.select('body').append('...').attr('id', 'myFoo');
+ //ms.clearCache();
+ d3Elem = d3.select('body').append('svg').append('g').attr('id', 'mapLayer');
}));
afterEach(function () {
- // TODO d3.select('#myFoo').remove();
+ d3.select('svg').remove();
});
it('should define MapService', function () {
@@ -42,10 +43,54 @@
it('should define api functions', function () {
expect(fs.areFunctions(ms, [
- 'clearCache', 'fetchGeoMap'
+ 'loadMapInto'
])).toBeTruthy();
});
+ var fakeMapId = '../tests/app/fw/svg/fake-map-data',
+ fakeMapUrl = fakeMapId + '.json';
+
+ var fakeMapData = {
+ "type": "Topology",
+ "objects": {
+ "states": {
+ "type": "GeometryCollection",
+ "geometries": [
+ { "type": "Polygon", "arcs": [[0, 1]]},
+ { "type": "Polygon", "arcs": [[2, 3]]}
+ ]
+ }
+ },
+ "arcs": [
+ [ [6347, 2300], [ -16, -9], [ -22, 1], [ -5, 3], [ 9, 6], [ 27, 7], [ 7, -8]],
+ [ [6447, 2350], [ -4, -4], [ -19, -41], [ -66, -14], [ 4, 9], [ 14, 2]],
+ [ [6290, 2347], [ -2, 83], [ -2, 76], [ -2, 75], [ -2, 76], [ -2, 76], [ -2, 75]],
+ [ [6329, 4211], [ -3, 6], [ -2, 4], [ 2, 1], [ 28, -1], [ 28, 0]]
+ ],
+ "transform": {
+ "scale": [0.005772872856602365, 0.0024829805705001468],
+ "translate": [-124.70997774915153, 24.542349340056283]
+ }
+ };
+
+
+ it('should load map into layer', function () {
+ $httpBackend.expectGET(fakeMapUrl).respond(fakeMapData);
+
+ var obj = ms.loadMapInto(d3Elem, fakeMapId);
+ //$httpBackend.flush();
+ // TODO: figure out how to test this function as a black box test.
+
+ expect(obj).toBeTruthy();
+ debugger;
+
+ // todo: assert that paths are added to map layer element
+ });
+
+/*
+
+
+
it('should return null when no parameters given', function () {
promise = ms.fetchGeoMap();
expect(promise).toBeNull();
@@ -95,13 +140,18 @@
expect(promise.meta.wasCached).toBeFalsy();
});
- it('should load USA into cache', function () {
- var id = '*continental_us';
- promise = ms.fetchGeoMap(id);
- expect(promise).toBeDefined();
- expect(promise.meta.id).toBe(id);
- expect(promise.meta.url).toBe('../data/map/continental_us.json');
- // TODO: WIP -- after a pause, the data should be there!!!
+
+ it('should log a warning if data fails to load', function () {
+ $httpBackend.expectGET(mapurl).respond(404, 'Not found');
+ spyOn($log, 'warn');
+
+ promise = ms.fetchGeoMap(mapid);
+ $httpBackend.flush();
+ expect(promise.mapdata).toBeUndefined();
+ expect($log.warn)
+ .toHaveBeenCalledWith('Failed to retrieve map data: ' + mapurl,
+ 404, 'Not found');
});
+*/
});