Skip to content

Commit ee54756

Browse files
committed
add test
1 parent 41f2392 commit ee54756

File tree

1 file changed

+136
-0
lines changed

1 file changed

+136
-0
lines changed

test/building.test.js

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,142 @@ test('Test with neighboring incomplete building:part relation', () => {
174174
expect(new Building('42', data).id).toBe('42');
175175
});
176176

177+
const typeBuildingWithMultipolygonOutline = `<?xml version='1.0' encoding='UTF-8'?>
178+
<osm version="0.6">
179+
<node id="1" lat="59.938127" lon="30.4980057"/>
180+
<node id="2" lat="59.9380365" lon="30.4992843"/>
181+
<node id="3" lat="59.9384134" lon="30.4993839"/>
182+
<node id="4" lat="59.9385087" lon="30.4981066"/>
183+
<node id="5" lat="59.9381203" lon="30.4989364"/>
184+
<node id="6" lat="59.93838" lon="30.499005"/>
185+
<node id="7" lat="59.9384221" lon="30.498439"/>
186+
<node id="8" lat="59.9381551" lon="30.4983684"/>
187+
<way id="20">
188+
<nd ref="4"/>
189+
<nd ref="3"/>
190+
<nd ref="2"/>
191+
<nd ref="1"/>
192+
</way>
193+
<way id="21">
194+
<nd ref="1"/>
195+
<nd ref="4"/>
196+
</way>
197+
<way id="22">
198+
<nd ref="6"/>
199+
<nd ref="7"/>
200+
</way>
201+
<way id="23">
202+
<nd ref="5"/>
203+
<nd ref="6"/>
204+
</way>
205+
<way id="24">
206+
<nd ref="8"/>
207+
<nd ref="5"/>
208+
</way>
209+
<way id="25">
210+
<nd ref="7"/>
211+
<nd ref="8"/>
212+
</way>
213+
<relation id="40">
214+
<member type="way" ref="20" role="outer"/>
215+
<member type="way" ref="21" role="outer"/>
216+
<member type="way" ref="22" role="inner"/>
217+
<member type="way" ref="23" role="inner"/>
218+
<member type="way" ref="24" role="inner"/>
219+
<member type="way" ref="25" role="inner"/>
220+
<tag k="building" v="school"/>
221+
<tag k="building:levels" v="3"/>
222+
<tag k="roof:shape" v="flat"/>
223+
<tag k="type" v="multipolygon"/>
224+
</relation>
225+
<relation id="42">
226+
<member type="relation" ref="40" role="outline"/>
227+
<tag k="type" v="building"/>
228+
</relation>
229+
</osm>
230+
`;
231+
const typeBuildingRelationFullResponse = `<?xml version='1.0' encoding='UTF-8'?>
232+
<osm version="0.6">
233+
<relation id="40">
234+
<member type="way" ref="20" role="outer"/>
235+
<member type="way" ref="21" role="outer"/>
236+
<member type="way" ref="22" role="inner"/>
237+
<member type="way" ref="23" role="inner"/>
238+
<member type="way" ref="24" role="inner"/>
239+
<member type="way" ref="25" role="inner"/>
240+
<tag k="building" v="school"/>
241+
<tag k="building:levels" v="3"/>
242+
<tag k="roof:shape" v="flat"/>
243+
<tag k="type" v="multipolygon"/>
244+
</relation>
245+
<relation id="42">
246+
<member type="relation" ref="40" role="outline"/>
247+
<tag k="type" v="building"/>
248+
</relation>
249+
</osm>
250+
`;
251+
const outlineRelationFullResponse = `<?xml version='1.0' encoding='UTF-8'?>
252+
<osm version="0.6">
253+
<node id="1" lat="59.938127" lon="30.4980057"/>
254+
<node id="2" lat="59.9380365" lon="30.4992843"/>
255+
<node id="3" lat="59.9384134" lon="30.4993839"/>
256+
<node id="4" lat="59.9385087" lon="30.4981066"/>
257+
<node id="5" lat="59.9381203" lon="30.4989364"/>
258+
<node id="6" lat="59.93838" lon="30.499005"/>
259+
<node id="7" lat="59.9384221" lon="30.498439"/>
260+
<node id="8" lat="59.9381551" lon="30.4983684"/>
261+
<way id="20">
262+
<nd ref="4"/>
263+
<nd ref="3"/>
264+
<nd ref="2"/>
265+
<nd ref="1"/>
266+
</way>
267+
<way id="21">
268+
<nd ref="1"/>
269+
<nd ref="4"/>
270+
</way>
271+
<way id="22">
272+
<nd ref="6"/>
273+
<nd ref="7"/>
274+
</way>
275+
<way id="23">
276+
<nd ref="5"/>
277+
<nd ref="6"/>
278+
</way>
279+
<way id="24">
280+
<nd ref="8"/>
281+
<nd ref="5"/>
282+
</way>
283+
<way id="25">
284+
<nd ref="7"/>
285+
<nd ref="8"/>
286+
</way>
287+
<relation id="40">
288+
<member type="way" ref="20" role="outer"/>
289+
<member type="way" ref="21" role="outer"/>
290+
<member type="way" ref="22" role="inner"/>
291+
<member type="way" ref="23" role="inner"/>
292+
<member type="way" ref="24" role="inner"/>
293+
<member type="way" ref="25" role="inner"/>
294+
<tag k="building" v="school"/>
295+
<tag k="building:levels" v="3"/>
296+
<tag k="roof:shape" v="flat"/>
297+
<tag k="type" v="multipolygon"/>
298+
</relation>
299+
</osm>
300+
`;
301+
302+
test('Test downloading type=building with multipolygon outline and multiple inner ways', async() => {
303+
fetch.mockResponses(
304+
[typeBuildingRelationFullResponse], // /relation/42/full
305+
[outlineRelationFullResponse], // /relation/40/full
306+
[typeBuildingWithMultipolygonOutline], // /map call
307+
);
308+
const innerData = await Building.downloadDataAroundBuilding('relation', '42');
309+
const building = new Building('42', innerData);
310+
expect(building.id).toBe('42');
311+
expect(building.outerElement.shape.holes.length).toBe(1);
312+
});
177313

178314
window.printError = printError;
179315

0 commit comments

Comments
 (0)