feat(assets): publish reusable area packages
This commit is contained in:
24
scripts/test-package-contract.js
Normal file
24
scripts/test-package-contract.js
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env node
|
||||
"use strict";
|
||||
|
||||
const assert = require("assert");
|
||||
const fs = require("fs");
|
||||
const os = require("os");
|
||||
const path = require("path");
|
||||
const { SCHEMA, validateManifest } = require("./lib/package-contract");
|
||||
|
||||
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "asset-package-"));
|
||||
fs.mkdirSync(path.join(dir, "models"));
|
||||
fs.writeFileSync(path.join(dir, "models", "area.glb"), "glb");
|
||||
const valid = { schema: SCHEMA, packageVersion: "1.0.0", areaId: "area", coordinateSystem: { axes: "ENU", units: "meters", x: "east", y: "north", z: "up" }, placement: { longitude: 120, latitude: 30, height: 0, headingCorrectionDegrees: -90 }, bounds: { minLon: 119, minLat: 29, maxLon: 121, maxLat: 31 }, assets: [{ id: "main", role: "scene", category: "scene", uri: "models/area.glb", defaultLoad: true }] };
|
||||
assert.doesNotThrow(() => validateManifest(valid, dir));
|
||||
for (const change of [
|
||||
(m) => { m.schema = "bad"; }, (m) => { m.assets[0].uri = "../area.glb"; },
|
||||
(m) => { m.assets[0].category = "dynamic"; }, (m) => { m.assets.push({ ...m.assets[0] }); },
|
||||
(m) => { m.placement.longitude = 900; },
|
||||
]) {
|
||||
const manifest = JSON.parse(JSON.stringify(valid)); change(manifest);
|
||||
assert.throws(() => validateManifest(manifest, dir));
|
||||
}
|
||||
fs.rmSync(dir, { recursive: true, force: true });
|
||||
console.log("Asset package contract tests passed.");
|
||||
Reference in New Issue
Block a user