Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit fef6b00

Browse files
committed
【fix】dataflow UT
1 parent 99c1955 commit fef6b00

File tree

1 file changed

+95
-115
lines changed

1 file changed

+95
-115
lines changed

test/maplibregl/services/DataFlowServiceSpec.js

Lines changed: 95 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ import {
33
DataFlowService
44
} from '../../../src/maplibregl/services/DataFlowService';
55

6-
import { Server } from 'mock-socket';
7-
var urlDataFlow = "ws:\//localhost:8005/";
6+
import { Server, WebSocket } from 'mock-socket';
7+
var urlDataFlow = "ws://localhost:8005";
88
describe('maplibregl_DataFlowService', () => {
99
var originalTimeout;
1010
var service;
11-
var mockServer;
11+
var mockServerBroadcast;
12+
var mockServerSubscribe;
1213
beforeAll(() => {
1314
var e = {
1415
"type": "Feature",
@@ -20,15 +21,21 @@ describe('maplibregl_DataFlowService', () => {
2021
"id": 1
2122
}
2223
};
23-
mockServer = new Server(urlDataFlow);
24-
mockServer.on('connection', socket => {
24+
mockServerBroadcast = new Server(`${urlDataFlow}/broadcast`);
25+
26+
mockServerBroadcast.on('connection', socket => {
2527
socket.on('message', () => {
2628
console.log("onmessage");
2729
});
2830
socket.on('close', () => { });
2931
socket.send(JSON.stringify(e));
30-
socket.close();
32+
// socket.close();
33+
3134
});
35+
mockServerSubscribe = new Server(`${urlDataFlow}/subscribe`);
36+
mockServerSubscribe.on('connection', socket => {
37+
})
38+
3239
});
3340
beforeEach(() => {
3441
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
@@ -44,8 +51,10 @@ describe('maplibregl_DataFlowService', () => {
4451
}
4552
});
4653
afterAll(() => {
47-
mockServer.stop();
48-
mockServer = null;
54+
mockServerBroadcast.stop();
55+
mockServerBroadcast = null;
56+
mockServerSubscribe.stop();
57+
mockServerSubscribe = null;
4958
});
5059

5160
it('broadcast_Point', (done) => {
@@ -65,27 +74,20 @@ describe('maplibregl_DataFlowService', () => {
6574
flowService.broadcast(feature);
6675
}
6776

68-
var timer;
69-
try {
70-
service = new DataFlowService(urlDataFlow);
71-
service.initBroadcast();
72-
service.on('broadcastSocketConnected', (e) => {
73-
var dataFlow = service.dataFlow;
74-
expect(dataFlow.CLASS_NAME).toBe("SuperMap.DataFlowService");
75-
expect(dataFlow.EVENT_TYPES.length).toEqual(8);
76-
expect(dataFlow.broadcastWebSocket.binaryType).toBe("blob");
77-
expect(dataFlow.broadcastWebSocket.url).toBe(urlDataFlow + "broadcast");
78-
timer = window.setInterval(broadcast_Point(service), 1000);
79-
});
80-
setTimeout(() => {
81-
expect(service).not.toBeNull();
82-
done();
83-
}, 0)
84-
} finally {
85-
if (timer) {
86-
window.clearInterval(timer);
87-
}
88-
}
77+
service = new DataFlowService(urlDataFlow);
78+
service.initBroadcast();
79+
service.on('broadcastSocketConnected', (e) => {
80+
var dataFlow = service.dataFlow;
81+
expect(dataFlow.CLASS_NAME).toBe("SuperMap.DataFlowService");
82+
expect(dataFlow.EVENT_TYPES.length).toEqual(10);
83+
expect(dataFlow.broadcastWebSocket.binaryType).toBe("blob");
84+
expect(dataFlow.broadcastWebSocket.url).toBe(urlDataFlow + "/broadcast");
85+
broadcast_Point(service);
86+
87+
});
88+
service.on('broadcastSucceeded', (e) => {
89+
done();
90+
})
8991
});
9092

9193
it('broadcast_LineString', (done) => {
@@ -109,24 +111,21 @@ describe('maplibregl_DataFlowService', () => {
109111
flowService.broadcast(feature);
110112
}
111113

114+
service = new DataFlowService(urlDataFlow);
115+
service.initBroadcast();
116+
service.on('broadcastSocketConnected', (e) => {
117+
var dataFlow = service.dataFlow;
118+
expect(dataFlow.CLASS_NAME).toBe("SuperMap.DataFlowService");
119+
expect(dataFlow.EVENT_TYPES.length).toEqual(10);
120+
expect(dataFlow.broadcastWebSocket.binaryType).toBe("blob");
121+
expect(dataFlow.broadcastWebSocket.url).toBe(urlDataFlow + "/broadcast");
122+
broadcast_LineString(service);
112123

113-
var timer;
114-
try {
115-
service = new DataFlowService(urlDataFlow);
116-
service.initBroadcast();
117-
service.on('broadcastSocketConnected', (e) => {
118-
timer = window.setInterval(broadcast_LineString(service), 1000);
119-
});
120-
setTimeout(() => {
121-
expect(service).not.toBeNull();
122-
done();
123-
}, 0)
124-
} finally {
125-
if (timer) {
126-
window.clearInterval(timer);
127-
}
124+
});
125+
service.on('broadcastSucceeded', (e) => {
126+
done();
127+
})
128128

129-
}
130129
});
131130

132131
it('broadcast_Polygon', (done) => {
@@ -153,88 +152,64 @@ describe('maplibregl_DataFlowService', () => {
153152
flowService.broadcast(feature);
154153
}
155154

155+
service = new DataFlowService(urlDataFlow);
156+
service.initBroadcast();
157+
service.on('broadcastSocketConnected', (e) => {
158+
var dataFlow = service.dataFlow;
159+
expect(dataFlow.CLASS_NAME).toBe("SuperMap.DataFlowService");
160+
expect(dataFlow.EVENT_TYPES.length).toEqual(10);
161+
expect(dataFlow.broadcastWebSocket.binaryType).toBe("blob");
162+
expect(dataFlow.broadcastWebSocket.url).toBe(urlDataFlow + "/broadcast");
163+
broadcast_Polygon(service);
156164

157-
var timer;
158-
try {
159-
service = new DataFlowService(urlDataFlow);
160-
service.initBroadcast();
161-
service.on('broadcastSocketConnected', (e) => {
162-
timer = window.setInterval(broadcast_Polygon(service), 1000);
163-
});
164-
setTimeout(() => {
165-
expect(service).not.toBeNull();
166-
service.unSubscribe();
167-
service.unBroadcast();
168-
done();
169-
}, 0)
170-
} finally {
171-
if (timer) {
172-
window.clearInterval(timer);
173-
}
174-
}
165+
});
166+
service.on('broadcastSucceeded', (e) => {
167+
done();
168+
})
175169
});
176170

177171
it('broadcast_MultiPolygon', (done) => {
178172
var broadcast_MultiPolygon = (flowService) => {
179-
173+
var feature = {
174+
geometry: {
175+
coordinates: [[[[116.381741960923, 39.8765100055449], [116.414681699817, 39.8765100055449], [116.414681699817, 39.8415115329708], [116.381741960923, 39.8765100055449]]], [[[115.381741960923, 39.8765100055449], [116.414681699817, 39.8765100055449], [116.414681699817, 39.8415115329708], [115.381741960923, 39.8765100055449]]]],
176+
type: "MultiPolygon"
177+
},
178+
id: 4,
179+
type: "Feature",
180+
properties: { id: 4, time: new Date() }
181+
};
180182
flowService.broadcast(feature);
181183
}
184+
service = new DataFlowService(urlDataFlow);
185+
service.initBroadcast();
186+
service.on('broadcastSocketConnected', (e) => {
187+
var dataFlow = service.dataFlow;
188+
expect(dataFlow.CLASS_NAME).toBe("SuperMap.DataFlowService");
189+
expect(dataFlow.EVENT_TYPES.length).toEqual(10);
190+
expect(dataFlow.broadcastWebSocket.binaryType).toBe("blob");
191+
expect(dataFlow.broadcastWebSocket.url).toBe(urlDataFlow + "/broadcast");
192+
broadcast_MultiPolygon(service);
193+
194+
});
195+
service.on('broadcastSucceeded', (e) => {
196+
done();
197+
})
182198

183-
var timer;
184-
try {
185-
service = new DataFlowService(urlDataFlow);
186-
service.initBroadcast();
187-
service.on('broadcastSocketConnected', (e) => {
188-
timer = window.setInterval(broadcast_MultiPolygon(service), 1000);
189-
});
190-
setTimeout(() => {
191-
expect(service).not.toBeNull();
192-
service.unSubscribe();
193-
service.unBroadcast();
194-
done();
195-
}, 0)
196-
} finally {
197-
if (timer) {
198-
window.clearInterval(timer);
199-
}
200-
}
201199
});
202200

203201
// 设置设置排除字段。
204202
it('initSubscribe,setExcludeField', (done) => {
205-
var socket = new WebSocket(urlDataFlow);
206-
var service = new DataFlowService(urlDataFlow);
207-
spyOn(service.dataFlow, '_connect').and.callFake(() => {
208-
return socket;
209-
});
210-
spyOn(socket, "send").and.callFake(() => {
211-
});
203+
service = new DataFlowService(urlDataFlow);
212204
service.initSubscribe();
213-
setTimeout(() => {
205+
service.on('subscribeSocketConnected', (e) => {
206+
var dataFlow = service.dataFlow;
207+
expect(dataFlow.subscribeWebSocket.binaryType).toBe("blob");
208+
expect(dataFlow.subscribeWebSocket.url).toBe(urlDataFlow + "/subscribe");
214209
service.setExcludeField("id");
215-
expect(service).not.toBeNull();
210+
expect(service.options.excludeField).toBe("id");
216211
done();
217-
}, 0)
218-
});
219-
220-
it('broadcast', (done) => {
221-
var feature = {
222-
geometry: {
223-
coordinates: new maplibregl.Point(5605, -3375),
224-
type: "Point"
225-
},
226-
id: 1,
227-
type: "Feature",
228-
properties: {
229-
id: 1,
230-
time: new Date()
231-
}
232-
};
233-
service = new DataFlowService(urlDataFlow);
234-
service.initBroadcast();
235-
service.broadcast(feature);
236-
expect(service.dataFlow.CLASS_NAME).toBe("SuperMap.DataFlowService");
237-
done();
212+
});
238213
});
239214

240215
xit('setGeometry', (done) => {
@@ -252,8 +227,13 @@ describe('maplibregl_DataFlowService', () => {
252227
};
253228
service = new DataFlowService(urlDataFlow);
254229
service.initSubscribe();
255-
service.setGeometry(feature);
256-
expect(service.options.geometry).not.toBeNull();
257-
done();
230+
service.on('subscribeSocketConnected', (e) => {
231+
var dataFlow = service.dataFlow;
232+
expect(dataFlow.subscribeWebSocket.binaryType).toBe("blob");
233+
expect(dataFlow.subscribeWebSocket.url).toBe(urlDataFlow + "/subscribe");
234+
service.setGeometry(feature);
235+
expect(service.options.geometry.geometry.coordinates.x).toBe(5605)
236+
done();
237+
});
258238
});
259239
});

0 commit comments

Comments
 (0)