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)
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