feat(platform): add replaceable geozone data layer
This commit is contained in:
@@ -72,6 +72,32 @@ assert.equal(validateDataProductPublish({
|
||||
...publish,
|
||||
facts: [{ ...fact, geometry: { type: "Point", coordinates: [37.6173, 90.0001] } }],
|
||||
}).errors.includes("facts[0].geometry.latitude_out_of_range"), true);
|
||||
const zoneGenerationAt = "2026-07-15T10:10:00.000Z";
|
||||
const zoneFact = {
|
||||
sourceId: "gelios-zone-42",
|
||||
semanticType: "map.zone",
|
||||
observedAt: zoneGenerationAt,
|
||||
attributes: { display_name: "Zone 42" },
|
||||
geometry: {
|
||||
type: "Polygon",
|
||||
coordinates: [[[37.60, 55.74], [37.62, 55.74], [37.62, 55.76], [37.60, 55.74]]],
|
||||
},
|
||||
};
|
||||
const replacement = {
|
||||
...publish,
|
||||
batch: { ...publish.batch, mode: "replace", generationAt: zoneGenerationAt },
|
||||
facts: [zoneFact],
|
||||
};
|
||||
assert.equal(validateDataProductPublish(replacement).ok, true);
|
||||
assert.equal(validateDataProductPublish({ ...replacement, facts: [] }).ok, true);
|
||||
assert.equal(validateDataProductPublish({
|
||||
...replacement,
|
||||
facts: [{ ...zoneFact, observedAt: "2026-07-15T10:09:59.000Z" }],
|
||||
}).errors.includes("facts[0].observedAt_must_equal_generationAt"), true);
|
||||
assert.equal(validateDataProductPublish({
|
||||
...replacement,
|
||||
facts: [{ ...zoneFact, geometry: { ...zoneFact.geometry, coordinates: [[[37.60, 55.74], [37.62, 55.74], [37.62, 55.76], [37.61, 55.75]]] } }],
|
||||
}).errors.includes("facts[0].geometry[0]_linear_ring_must_be_closed"), true);
|
||||
|
||||
const canonicalFact = { ...fact, receivedAt: "2026-07-15T10:00:01.000Z" };
|
||||
const snapshot = {
|
||||
@@ -147,7 +173,11 @@ assert.equal(validateDataProductPatch(patch).ok, true);
|
||||
assert.equal(validateDataProductPatch({
|
||||
...patch,
|
||||
operations: [{ op: "delete", fact: canonicalFact }],
|
||||
}).errors.includes("operations[0].op_must_be_upsert"), true);
|
||||
}).errors.includes("operations[0].op_invalid"), true);
|
||||
assert.equal(validateDataProductPatch({
|
||||
...patch,
|
||||
operations: [{ op: "remove", sourceId: "gelios-zone-42", semanticType: "map.zone" }],
|
||||
}).ok, true);
|
||||
assert.equal(validateDataProductPatch({
|
||||
...patch,
|
||||
operations: [{ op: "upsert", fact: { ...canonicalFact, attributes: attributesWithSerializedSize((64 * 1024) + 1) } }],
|
||||
|
||||
Reference in New Issue
Block a user