Skip to content

Commit 54d6f64

Browse files
committed
增加分布式分析UT,优化viewModel开发代码,review by sunxiaoyu
1 parent 2d7dae4 commit 54d6f64

File tree

3 files changed

+176
-2
lines changed

3 files changed

+176
-2
lines changed

src/leaflet/widgets/distributedanalysis/DistributedAnalysisViewModel.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ export class DistributedAnalysisViewModel extends L.Evented {
128128
* @property {Array.<L.GeoJSON>} layers - 结果图层数组。
129129
*/
130130
this.fire('layersremoved', { 'layers': this.resultLayers });
131+
this.resultLayers = [];
131132
}
132133

133134
}
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
import {tiledMapLayer} from "../../../../src/leaflet/mapping";
2+
import { distributedAnalysisView } from '../../../../src/leaflet/widgets/distributedanalysis/DistributedAnalysisView';
3+
import {FetchRequest} from "../../../../src/common/util/FetchRequest.js";
4+
var map, url = GlobeParameter.WorldURL, testDiv, distributedAnalysis;
5+
var distributedAnalysisURL = GlobeParameter.distributedAnalysisURL;
6+
describe('leaflet_DataServiceQuery_DataServiceQueryView', () => {
7+
var serviceResult;
8+
var originalTimeout;
9+
beforeAll(() => {
10+
testDiv = document.createElement("div");
11+
testDiv.id = 'map';
12+
testDiv.style.margin = "0 auto";
13+
testDiv.style.width = "800px";
14+
testDiv.style.height = "800px";
15+
document.body.appendChild(testDiv);
16+
map = L.map('map', {
17+
preferCanvas: true,
18+
crs: L.CRS.EPSG4326,
19+
center: [20, 80],
20+
maxZoom: 18,
21+
zoom: 2
22+
});
23+
// tiledMapLayer(url).addTo(map);
24+
// 初始化微件
25+
distributedAnalysis = distributedAnalysisView(distributedAnalysisURL);
26+
// 模拟发送请求
27+
spyOn(FetchRequest, 'get').and.callFake((url) => {
28+
if(url.indexOf("/sharefile")>-1) {
29+
var resultJson1 = `{"datasetCount":8,"datasetNames":["samples_processing_newyorkZone_R","samples_processing_singleRegion_R","samples_processing_newyorkRoads_L","samples_processing_newyorkPoint_P","samples_processing_newyorkResidential_R", "samples_processing_featurejoin_states_R", "samples_processing_reconstructTracks_P", "samples_newyork_taxi_2013-01_14k"],
30+
"childUriList":["http://54.223.164.155:8090/iserver/services/dataca…atalog/sharefile/samples_processing_newyorkZone_R", "http://54.223.164.155:8090/iserver/services/dataca…talog/sharefile/samples_processing_singleRegion_R", "http://54.223.164.155:8090/iserver/services/dataca…talog/sharefile/samples_processing_newyorkRoads_L", "http://54.223.164.155:8090/iserver/services/dataca…talog/sharefile/samples_processing_newyorkPoint_P", "http://54.223.164.155:8090/iserver/services/dataca…sharefile/samples_processing_newyorkResidential_R", "http://54.223.164.155:8090/iserver/services/dataca…sharefile/samples_processing_featurejoin_states_R", "http://54.223.164.155:8090/iserver/services/dataca…/sharefile/samples_processing_reconstructTracks_P", "http://54.223.164.155:8090/iserver/services/dataca…atalog/sharefile/samples_newyork_taxi_2013-01_14k"]}`
31+
return Promise.resolve(new Response(resultJson1));
32+
}else if(url.indexOf("/datasets.json")>-1) {
33+
var resultJson2 = `{"datasetCount":0,"datasetNames":[],"childUriList":[]}`;
34+
return Promise.resolve(new Response(resultJson2));
35+
}else if(url.indexOf("/samples_processing_newyorkRoads_L")>-1) {
36+
var dataJson=`{"childUriList":["http://54.223.164.155:8090/iserver/services/datacatalog/rest/datacatalog/sharefile/samples_processing_newyorkRoads_L//fields"],"supportAttachments":false,"supportFeatureMetadatas":false,"datasetInfo":{"fieldInfos":[{"isRequired":true,"defaultValue":"","name":"SmID","caption":"SmID","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"0","name":"SmLength","caption":"SmLength","type":"DOUBLE","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"0","name":"SmSdriW","caption":"SmSdriW","type":"SINGLE","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"0","name":"SmSdriN","caption":"SmSdriN","type":"SINGLE","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"0","name":"SmSdriE","caption":"SmSdriE","type":"SINGLE","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"0","name":"SmSdriS","caption":"SmSdriS","type":"SINGLE","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"0","name":"SmUserID","caption":"SmUserID","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":true,"defaultValue":"0","name":"SmTopoError","caption":"SmTopoError","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":false,"defaultValue":"0","name":"SmGeometrySize","caption":"SmGeometrySize","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"-1","name":"SmGeoPosition","caption":"SmGeoPosition","type":"INT64","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":false,"defaultValue":"","name":"name","caption":"name","type":"WTEXT","maxLength":48,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"type","caption":"type","type":"WTEXT","maxLength":16,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"length","caption":"length","type":"DOUBLE","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":false}],"epsgCode":4326,"datasetName":"newyorkRoads_L","bounds":"Left=-74.2552929,Bottom=40.4965145,Right=-73.69312690280937,Top=40.927416444297904","available":true,"name":"samples_processing_newyorkRoads_L","readOnly":false,"datasetType":"LINE","type":"UDB","url":"../../samples/data/ProcessingData/processing.udb"}}`;
37+
return Promise.resolve(new Response(dataJson));
38+
} else if(url.indexOf("/density/")>-1) {
39+
var analysisResult1 =`{"id":"5f17d37b_bde9_46aa_80ae_be090be25340","state":{"errorStackTrace":null,"endState":true,"startTime":1540369770197,"endTime":1540369781534,"publisherelapsedTime":1320,"runState":"FINISHED","errorMsg":null,"elapsedTime":9070},"setting":{"output":{"outputPath":"/home/ubuntu/iserver/supermap_iserver_910_16117_3906_linux64/webapps/iserver/processingResultData/Analyst/5f17d37b_bde9_46aa_80ae_be090be25340/kernelDensity.smwu","datasourcePath":"/home/ubuntu/iserver/supermap_iserver_910_16117_3906_linux64/webapps/iserver/processingResultData/Analyst/5f17d37b_bde9_46aa_80ae_be090be25340/1911ef66_f4cd_4ce2_a346_a079114b13dc.udb","datasetName":"analystResult","type":"UDB"},"args":null,"input":{"datasetName":"samples_processing_newyorkPoint_P","numSlices":36,"specField":null,"datasetInfo":{"fieldInfos":[{"isRequired":true,"defaultValue":"","name":"SmID","caption":"SmID","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"0","name":"SmX","caption":"SmX","type":"DOUBLE","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"0","name":"SmY","caption":"SmY","type":"DOUBLE","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":false,"defaultValue":"1","name":"SmLibTileID","caption":"SmLibTileID","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"0","name":"SmUserID","caption":"SmUserID","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"0","name":"SmGeometrySize","caption":"SmGeometrySize","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":true,"defaultValue":"-1","name":"SmGeoPosition","caption":"SmGeoPosition","type":"INT64","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":true},{"isRequired":false,"defaultValue":"","name":"medallion","caption":"medallion","type":"WTEXT","maxLength":255,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"hack_license","caption":"hack_license","type":"WTEXT","maxLength":255,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"vecdor_id","caption":"vecdor_id","type":"WTEXT","maxLength":255,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"rate_code","caption":"rate_code","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"store_and_fwd_flag","caption":"store_and_fwd_flag","type":"WTEXT","maxLength":255,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"pickup_datetime","caption":"pickup_datetime","type":"DATETIME","maxLength":255,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"dropoff_datetime","caption":"dropoff_datetime","type":"DATETIME","maxLength":255,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"passenger_count","caption":"passenger_count","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"trip_time_in_secs","caption":"trip_time_in_secs","type":"INT32","maxLength":4,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"trip_distance","caption":"trip_distance","type":"DOUBLE","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"pickup_longitude","caption":"pickup_longitude","type":"DOUBLE","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"pickup_latitude","caption":"pickup_latitude","type":"DOUBLE","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"dropoff_longitude","caption":"dropoff_longitude","type":"DOUBLE","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":false},{"isRequired":false,"defaultValue":"","name":"dropoff_latitude","caption":"dropoff_latitude","type":"DOUBLE","maxLength":8,"isZeroLengthAllowed":true,"isSystemField":false}],"epsgCode":4326,"datasetName":"newyorkPoint_P","bounds":"Left=-74.342308,Bottom=40.576233,Right=-73.58014699999998,Top=40.901577","available":true,"name":"samples_processing_newyorkPoint_P","readOnly":false,"datasetType":"POINT","type":"UDB","url":"../../samples/data/ProcessingData/processing.udb"}},"DEFAULT_MASTER_ADRESS":"local[*] ","referToken":"0ra2250-rPu6ZnqHPKqcqDjGkDGDv3bg5HHy1SNNXf79OlN0ArG07bq3cGFz0v-nfBm2RAnYJ3LGBsuiptH43g..","mainClass":null,"sparkLogFile":null,"appName":null,"analyst":{"areaUnit":"SquareMile","meshType":0,"method":0,"query":"","radius":"300","fields":"rate_code","radiusUnit":"Meter","resolution":"1000","meshSizeUnit":"Meter"},"contextSetting":null,"serviceInfo":{"targetDataPath":"/home/ubuntu/iserver/supermap_iserver_910_16117_3906_linux64/webapps/iserver/processingResultData/Analyst/5f17d37b_bde9_46aa_80ae_be090be25340/kernelDensity.smwu","targetServiceInfos":[{"serviceType":"RESTMAP","serviceAddress":"http://54.223.164.155:8090/iserver/services/map-kernelDensity2/rest"},{"serviceType":"RESTDATA","serviceAddress":"http://54.223.164.155:8090/iserver/services/data-kernelDensity2/rest"}]},"referServicesAddress":"http://172.31.4.162:8090/iserver"}}`
40+
return Promise.resolve(new Response(analysisResult1));
41+
}else if(url.indexOf("/map-kernelDensity2/rest/maps")>-1) {
42+
var responseResult = `[{"resourceConfigID":"map","supportedMediaTypes":["application/xml","text/xml","application/json","application/fastjson","application/rjson","text/html","application/jsonp","application/x-java-serialized-object","application/ajax","application/kml","application/ifx","application/flex","application/flash","application/flash3d","application/ijs","application/javascript","application/html5","application/ol3","application/vt","application/vectortile","application/isl","application/silverlight","application/smc","application/supermapcloud","application/tdt","application/tianditu","application/ilt","application/leaflet","application/mbgl"],"path":"http://54.223.164.155:8090/iserver/services/map-kernelDensity4/rest/maps/kernelDensity_rate_code_Density_Map","name":"kernelDensity_rate_code_Density_Map","resourceType":"StaticResource"},{"resourceConfigID":"map","supportedMediaTypes":["application/xml","text/xml","application/json","application/fastjson","application/rjson","text/html","application/jsonp","application/x-java-serialized-object","application/ajax","application/kml","application/ifx","application/flex","application/flash","application/flash3d","application/ijs","application/javascript","application/html5","application/ol3","application/vt","application/vectortile","application/isl","application/silverlight","application/smc","application/supermapcloud","application/tdt","application/tianditu","application/ilt","application/leaflet","application/mbgl"],"path":"http://54.223.164.155:8090/iserver/services/map-kernelDensity2/rest/maps/kernelDensity_RecordCount_Density_Map","name":"kernelDensity_RecordCount_Density_Map","resourceType":"StaticResource"}]`;
43+
return Promise.resolve(new Response(responseResult));
44+
45+
}
46+
return Promise.resolve();
47+
});
48+
// 将微件加载在地图上
49+
distributedAnalysis.addTo(map);
50+
51+
});
52+
beforeEach(() => {
53+
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
54+
jasmine.DEFAULT_TIMEOUT_INTERVAL = 50000;
55+
serviceResult = null;
56+
57+
});
58+
afterEach(() => {
59+
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
60+
});
61+
// 分析
62+
it('analysis',(done)=>{
63+
expect(distributedAnalysis).not.toBeNull();
64+
spyOn(FetchRequest, 'post').and.callFake((url) => {
65+
if(url.indexOf("/density.json")>-1){
66+
var analysisResult = kernelDensityJob_post;
67+
return Promise.resolve(new Response(analysisResult));
68+
}
69+
return Promise.resolve();
70+
});
71+
// 分析成功的监听事件
72+
distributedAnalysis.on('analysissuccessed', (e) => {
73+
// 得到响应的结果
74+
serviceResult = e;
75+
if (serviceResult.error) {
76+
expect(serviceResult.error).not.toBeNull();
77+
}
78+
try {
79+
expect(serviceResult).not.toBeNull();
80+
expect(serviceResult.type).toBe("analysissuccessed");
81+
// layer
82+
expect(serviceResult.layer.requestParams.cacheEnabled).toBeTruthy();
83+
expect(serviceResult.layer.requestParams.origin).toEqual('{"x":-180,"y":90}');
84+
expect(serviceResult.layer.requestParams.redirect).toBeFalsy();
85+
//sourceTarget
86+
expect(serviceResult.sourceTarget._firingCount).toEqual(1);
87+
done();
88+
} catch (exception) {
89+
console.log("'getFeatures_success'案例失败:" + exception.name + ":" + exception.message);
90+
done();
91+
}
92+
});
93+
// 配置可行参数
94+
// 1.数据集
95+
var datasetSelectName = distributedAnalysis.datasetSelectName;
96+
datasetSelectName.innerHTML="samples_processing_newyorkPoint_P";
97+
datasetSelectName.title="samples_processing_newyorkPoint_P";
98+
99+
// 2.权重字段
100+
var analyseContainer=document.getElementsByClassName('IDW')[0];
101+
var weightFieldsSelectName = analyseContainer.children[0].children[2].children[1].children[0];
102+
weightFieldsSelectName.innerHTML="rate_code";
103+
weightFieldsSelectName.title="rate_code";
104+
105+
var analysitBtn = document.getElementsByClassName('analysis-btn')[0];
106+
analysitBtn.click();
107+
});
108+
109+
it('clearLayers',(done)=>{
110+
// var datasetSelect = distributedAnalysis.datasetSelect;
111+
// datasetSelect.children[2].click();
112+
// 查看remove是否被调
113+
spyOn(distributedAnalysis.viewModel.resultLayers[0], 'remove').and.callThrough();
114+
// 监听
115+
distributedAnalysis.viewModel.on('layersremoved', (e) => {
116+
let layers = e.layers;
117+
for (let i in layers) {
118+
expect(layers[i].remove).toHaveBeenCalled();
119+
// 清除map图层
120+
var _map = layers[i]._map;
121+
try {
122+
expect(_map).toBeNull();
123+
done();
124+
} catch (exception) {
125+
console.log("'clearLayers'案例失败:" + exception.name + ":" + exception.message);
126+
done();
127+
}
128+
}
129+
});
130+
// 调用
131+
distributedAnalysis.viewModel.clearLayers();
132+
});
133+
134+
it('getDatasetsName',(done)=>{
135+
distributedAnalysis.viewModel.on('datasetsloaded', (e) => {
136+
var result = e.result;
137+
try {
138+
expect(result).not.toBeNull();
139+
expect(result.dataset.datasetNames[0]).toBe("samples_processing_newyorkZone_R");
140+
expect(result.dataset.datasetNames.length).toEqual(8);
141+
expect(result.datasetHash).not.toBeNull(0);
142+
done();
143+
} catch (exception) {
144+
console.log("'getDatasetsName'案例失败:" + exception.name + ":" + exception.message);
145+
done();
146+
}
147+
});
148+
149+
distributedAnalysis.viewModel.getDatasetsName();
150+
});
151+
152+
// get请求来的data里面缺失datasetInfo
153+
xit('getDatasetInfo',()=>{
154+
var datasetSelect = distributedAnalysis.datasetSelect;
155+
datasetSelect.children[2].click();
156+
// var datasetUrl="http://54.223.164.155:8090/iserver/services/datacatalog/rest/datacatalog/sharefile/samples_processing_newyorkPoint_P";
157+
// distributedAnalysis.viewModel.on('datasetinfoloaded', (e) => {
158+
// var result = e.result;
159+
// try {
160+
// expect(result).not.toBeNull();
161+
// done();
162+
// } catch (exception) {
163+
// console.log("'getDatasetInfo'案例失败:" + exception.name + ":" + exception.message);
164+
// done();
165+
// }
166+
// });
167+
distributedAnalysis.viewModel.getDatasetInfo();
168+
});
169+
170+
});
171+
172+

test/tool/GlobeParameter.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,6 @@
3030
addressMatchURL_code: "http://localhost:8090/iserver/services/addressmatch-Address/restjsr/v1/address/geocoding",
3131
addressMatchURL_decode: "http://localhost:8090/iserver/services/addressmatch-Address/restjsr/v1/address/geodecoding",
3232
ChinaProvincesURL: "http://localhost:8090/iserver/services/map-ChinaProvinces/rest/maps/ChinaProvinces",
33-
californiaURL: "http://localhost:8090/iserver/services/map-mvt-California/rest/maps/California"
34-
}
33+
californiaURL: "http://localhost:8090/iserver/services/map-mvt-California/rest/maps/California",
34+
distributedAnalysisURL:"http://54.223.164.155:8090/iserver/services/distributedanalyst/rest/v1/jobs",
35+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy