UNPKG

terriajs

Version:

Geospatial data visualization platform.

123 lines (105 loc) 4.97 kB
import GroupMixin from "../../../../lib/ModelMixins/GroupMixin"; import CatalogGroup from "../../../../lib/Models/Catalog/CatalogGroup"; import TerriaReference from "../../../../lib/Models/Catalog/CatalogReferences/TerriaReference"; import WebMapServiceCatalogItem from "../../../../lib/Models/Catalog/Ows/WebMapServiceCatalogItem"; import CommonStrata from "../../../../lib/Models/Definition/CommonStrata"; import hasTraits from "../../../../lib/Models/Definition/hasTraits"; import Terria from "../../../../lib/Models/Terria"; import CatalogMemberTraits from "../../../../lib/Traits/TraitsClasses/CatalogMemberTraits"; describe("TerriaReference", function () { it("can load a full terria catalog", async function () { const ref = new TerriaReference("test", new Terria()); ref.setTrait(CommonStrata.user, "url", "test/init/wms-v8.json"); ref.setTrait(CommonStrata.user, "isGroup", true); await ref.loadReference(); const target = ref.target; expect(target).toBeDefined(); expect(GroupMixin.isMixedInto(target)).toBe(true); if (GroupMixin.isMixedInto(target)) { expect(target.members.length).toEqual(1); } }); it("can load a group inside the catalog", async function () { const ref = new TerriaReference("test", new Terria()); ref.setTrait(CommonStrata.user, "url", "test/init/wms-v8.json"); ref.setTrait(CommonStrata.user, "isGroup", true); ref.setTrait(CommonStrata.user, "path", ["MLzS8W"]); await ref.loadReference(); const target = ref.target; expect(target).toBeDefined(); expect(GroupMixin.isMixedInto(target)).toBe(true); if (GroupMixin.isMixedInto(target)) { // Check wether we have loaded all 7 catalog items expect(target.members.length).toEqual(7); } }); it("can load an item inside the catalog", async function () { const ref = new TerriaReference("test", new Terria()); ref.setTrait(CommonStrata.user, "url", "test/init/wms-v8.json"); ref.setTrait(CommonStrata.user, "path", ["MLzS8W", "fCUx4Y"]); await ref.loadReference(); const target = ref.target; expect(target).toBeDefined(); expect(target instanceof WebMapServiceCatalogItem).toBe(true); }); it("supports itemProperties, itemPropertiesByType and itemPropertiesByIds", async function () { const ref = new TerriaReference("test", new Terria()); ref.setTrait(CommonStrata.user, "url", "test/init/wms-v8.json"); ref.setTrait(CommonStrata.user, "itemProperties", { url: "some url" }); ref.setTrait(CommonStrata.user, "itemPropertiesByType", [ { type: "wms", itemProperties: { name: "some WMS name" } }, { type: "group", itemProperties: { name: "some group name" } } ]); ref.setTrait(CommonStrata.user, "itemPropertiesByIds", [ { ids: ["Chuj4y"], itemProperties: { name: "some WMS name (byID)" } } ]); await ref.loadReference(); const target = ref.target as CatalogGroup; expect(target).toBeDefined(); expect(target instanceof CatalogGroup).toBe(true); expect(target.name).toBe("some group name"); await target.loadMembers(); const nestedGroup = target.memberModels[0] as CatalogGroup; await nestedGroup.loadMembers(); const wmsItem1 = nestedGroup.memberModels[0] as WebMapServiceCatalogItem; expect(wmsItem1 instanceof WebMapServiceCatalogItem).toBeTruthy(); expect(wmsItem1.name).toBe("some WMS name"); expect(wmsItem1.url).toBe("some url"); const wmsItem2 = nestedGroup.memberModels.find( (m) => m.uniqueId === "Chuj4y" ) as WebMapServiceCatalogItem; expect(wmsItem2.name).toBe("some WMS name (byID)"); expect(wmsItem2.url).toBe("some url"); await target.loadMembers(); }); it("the target item should use the name of the terria reference item", async function () { const ref = new TerriaReference("test", new Terria()); ref.setTrait(CommonStrata.user, "url", "test/init/wms-v8.json"); ref.setTrait(CommonStrata.user, "isGroup", true); ref.setTrait(CommonStrata.user, "path", ["MLzS8W"]); ref.setTrait(CommonStrata.user, "name", "Foo"); await ref.loadReference(); const target = ref.target; expect(hasTraits(target, CatalogMemberTraits, "name")).toBe(true); if (hasTraits(target, CatalogMemberTraits, "name")) { expect(target.name).toBe("Foo"); } }); it("propagates knownUniqueContainerIds", async function () { const ref = new TerriaReference("test", new Terria()); ref.setTrait(CommonStrata.user, "url", "test/init/wms-v8.json"); ref.setTrait(CommonStrata.user, "isGroup", true); ref.setTrait(CommonStrata.user, "path", ["MLzS8W"]); ref.setTrait(CommonStrata.user, "name", "Foo"); ref.knownContainerUniqueIds.push("some-id"); await ref.loadReference(); const target = ref.target; expect(target?.knownContainerUniqueIds.length).toBe(1); expect(target?.knownContainerUniqueIds[0]).toBe("some-id"); }); });