36 lines
1.9 KiB
JavaScript
36 lines
1.9 KiB
JavaScript
import assert from "node:assert/strict";
|
||
import test from "node:test";
|
||
import { dirname, resolve } from "node:path";
|
||
import { fileURLToPath } from "node:url";
|
||
|
||
import { loadZoneSourceProfile, ZONE_SOURCE_GENERATION_SCHEMA_VERSION } from "../src/zone-source-snapshot.mjs";
|
||
|
||
const root = resolve(dirname(fileURLToPath(import.meta.url)), "../zone-sources");
|
||
|
||
test("loads the immutable Department of Transport MMap generation", async () => {
|
||
const loaded = await loadZoneSourceProfile(root, "moscow-pmd-slow-zones");
|
||
const generation = loaded.generation;
|
||
|
||
assert.equal(generation.schemaVersion, ZONE_SOURCE_GENERATION_SCHEMA_VERSION);
|
||
assert.equal(generation.authorityId, "moscow-department-of-transport");
|
||
assert.equal(generation.datasetId, "pmd-slow-zones");
|
||
assert.equal(generation.adapterId, "depttrans-mmap-snapshot-v1");
|
||
assert.equal(generation.complete, true);
|
||
assert.equal(generation.metadata.sourceZoneCount, 905);
|
||
assert.equal(generation.metadata.publishedZoneCount, 903);
|
||
assert.equal(generation.metadata.excludedZoneCount, 2);
|
||
assert.equal(generation.metadata.scheduleRowCount, 6335);
|
||
assert.equal(generation.metadata.positionCount, 62955);
|
||
assert.equal(generation.metadata.geometrySha256, "914797122297d06acaff8a32605f172abb6c769b879d1b75f567db450d29913f");
|
||
assert.equal(generation.metadata.scheduleSha256, "8f3e50e2aec3889657814ea17982b2e75fcc2b83d0511c901016cd08e5844cd5");
|
||
assert.match(generation.contentDigest, /^[a-f0-9]{64}$/);
|
||
assert.ok(loaded.body.byteLength < 16 * 1024 * 1024);
|
||
assert.equal(generation.zones.some((zone) => zone.nativeId === "1521" || zone.nativeId === "1522"), false);
|
||
|
||
const zone = generation.zones.find((entry) => entry.nativeId === "1478");
|
||
assert.equal(zone.displayName, "Петровский парк_6 (15 км/ч)");
|
||
assert.equal(zone.geometry.type, "Polygon");
|
||
assert.equal(zone.maxSpeedKph, 15);
|
||
assert.equal(zone.weeklySpeedSchedule.length, 7);
|
||
});
|