Added test for overlapping scope cardinality

main
Jackson Morgan 9 months ago
parent 6047c3f1e4
commit 298ed19f6a
  1. 10
      packages/jsonld-dataset-proxy/test/ContextUtil.test.ts
  2. 26
      packages/jsonld-dataset-proxy/test/jsonldDatasetProxy.test.ts
  3. 24
      packages/jsonld-dataset-proxy/test/scopedExampleData.ts

@ -31,12 +31,12 @@ describe("ContextUtil", () => {
const contextUtil = new ContextUtil(scopedContext);
expect(
contextUtil.keyToIri("element", [
namedNode("https://example.com/Bender"),
namedNode("http://example.com/Bender"),
]),
).toBe("https://example.com/element");
).toBe("http://example.com/element");
expect(
contextUtil.iriToKey("https://example.com/element", [
namedNode("https://example.com/Bender"),
contextUtil.iriToKey("http://example.com/element", [
namedNode("http://example.com/Bender"),
]),
).toBe("element");
});
@ -58,7 +58,7 @@ describe("ContextUtil", () => {
const contextUtil = new ContextUtil(scopedContext);
expect(
contextUtil.isArray("element", [
namedNode("https://example.com/Avatar"),
namedNode("http://example.com/Avatar"),
]),
).toBe(true);
});

@ -30,6 +30,12 @@ import { namedNode, quad, literal, defaultGraph } from "@rdfjs/data-model";
import type { Dataset, NamedNode } from "@rdfjs/types";
import type { ContextDefinition } from "jsonld";
import type { LdoJsonldContext } from "../src/LdoJsonldContext";
import {
scopedContext,
scopedData,
type Avatar,
type Bender,
} from "./scopedExampleData";
const testJsonldDatasetProxy = (patientContext: LdoJsonldContext) => () => {
async function getLoadedDataset(): Promise<
@ -165,6 +171,19 @@ const testJsonldDatasetProxy = (patientContext: LdoJsonldContext) => () => {
];
}
async function getScopedDataset(): Promise<
[Dataset, Bender, Avatar, JsonldDatasetProxyBuilder]
> {
const dataset = await serializedToDataset(scopedData);
const builder = await jsonldDatasetProxy(dataset, scopedContext);
return [
dataset,
builder.fromSubject(namedNode("http://example.com/Katara")),
builder.fromSubject(namedNode("http://example.com/Aang")),
builder,
];
}
describe("read", () => {
it("retreives a primitive", async () => {
const [, observation] = await getLoadedDataset();
@ -409,6 +428,13 @@ const testJsonldDatasetProxy = (patientContext: LdoJsonldContext) => () => {
const [, observation] = await getLoadedDataset();
expect(observation["@context"]).toEqual(patientContext);
});
it("reads an array for collections, but a var for non collections", async () => {
const [, bender, avatar] = await getScopedDataset();
expect(avatar.element[0]["@id"]).toBe("http://example.com/Air");
expect(avatar.element[1]["@id"]).toBe("http://example.com/Water");
expect(bender.element["@id"]).toBe("http://example.com/Water");
});
});
describe("write", () => {

@ -43,53 +43,53 @@ export type Element =
export const scopedContext: LdoJsonldContext = {
Bender: {
"@id": "https://example.com/Bender",
"@id": "http://example.com/Bender",
"@context": {
type: {
"@id": "@type",
},
name: {
"@id": "https://example.com/name",
"@id": "http://example.com/name",
},
element: {
"@id": "https://example.com/element",
"@id": "http://example.com/element",
},
friend: {
"@id": "https://example.com/friend",
"@id": "http://example.com/friend",
"@isCollection": true,
},
},
},
Avatar: {
"@id": "https://example.com/Avatar",
"@id": "http://example.com/Avatar",
"@context": {
type: {
"@id": "@type",
},
name: {
"@id": "https://example.com/name",
"@id": "http://example.com/name",
},
element: {
"@id": "https://example.com/element",
"@id": "http://example.com/element",
"@isCollection": true,
},
friend: {
"@id": "https://example.com/friend",
"@id": "http://example.com/friend",
"@isCollection": true,
},
},
},
NonBender: {
"@id": "https://example.com/NonBender",
"@id": "http://example.com/NonBender",
"@context": {
type: {
"@id": "@type",
},
name: {
"@id": "https://example.com/name",
"@id": "http://example.com/name",
},
friend: {
"@id": "https://example.com/friend",
"@id": "http://example.com/friend",
"@isCollection": true,
},
},
@ -97,7 +97,7 @@ export const scopedContext: LdoJsonldContext = {
};
export const scopedData = `
@prefix example: <https://example.com/> .
@prefix example: <http://example.com/> .
@prefix fhir: <http://hl7.org/fhir/> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

Loading…
Cancel
Save