You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
ldo-compact-fork/packages/solid/test/LeafRequester.test.ts

250 lines
8.0 KiB

import type { App } from "@solid/community-server";
import { getAuthenticatedFetch, ROOT_COONTAINER } from "./solidServer.helper";
import type { SolidLdoDataset } from "../src/SolidLdoDataset";
import { createSolidLdoDataset } from "../src/createSolidLdoDataset";
import { LeafRequester } from "../src/requester/LeafRequester";
import { namedNode, quad as createQuad } from "@rdfjs/data-model";
describe.skip("Leaf Requester", () => {
let _app: App;
let authFetch: typeof fetch;
let fetchMock: typeof fetch;
let solidLdoDataset: SolidLdoDataset;
beforeAll(async () => {
// Start up the server
// app = await createApp();
// await app.start();
authFetch = await getAuthenticatedFetch();
});
beforeEach(async () => {
fetchMock = jest.fn(authFetch);
solidLdoDataset = createSolidLdoDataset({ fetch: fetchMock });
// Create a new document called sample.ttl
await Promise.all([
authFetch(`${ROOT_COONTAINER}test_leaf/`, {
method: "POST",
headers: { "content-type": "text/turtle", slug: "sample.ttl" },
body: `@base <http://example.org/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rel: <http://www.perceive.net/schemas/relationship/> .
<#green-goblin>
rel:enemyOf <#spiderman> ;
a foaf:Person ; # in the context of the Marvel universe
foaf:name "Green Goblin" .
<#spiderman>
rel:enemyOf <#green-goblin> ;
a foaf:Person ;
foaf:name "Spiderman", "Человек-паук"@ru .`,
}),
authFetch(`${ROOT_COONTAINER}test_leaf/`, {
method: "PUT",
headers: { "content-type": "text/plain", slug: "sample.txt" },
body: `some text.`,
}),
]);
});
afterEach(async () => {
await Promise.all([
authFetch(`${ROOT_COONTAINER}test_leaf/sample.ttl`, {
method: "DELETE",
}),
authFetch(`${ROOT_COONTAINER}test_leaf/sample2.ttl`, {
method: "DELETE",
}),
authFetch(`${ROOT_COONTAINER}test_leaf/sample.txt`, {
method: "DELETE",
}),
authFetch(`${ROOT_COONTAINER}test_leaf/sample2.txt`, {
method: "DELETE",
}),
]);
});
/**
* ===========================================================================
* Read
* ===========================================================================
*/
it("reads data", async () => {
const leafRequester = new LeafRequester(
`${ROOT_COONTAINER}test_leaf/sample.ttl`,
solidLdoDataset.context,
);
const result = await leafRequester.read();
expect(result.type).toBe("data");
expect(
solidLdoDataset.match(
null,
null,
null,
namedNode(`${ROOT_COONTAINER}test_leaf/sample.ttl`),
).size,
).toBe(7);
});
it("reads data that doesn't exist", async () => {
const leafRequester = new LeafRequester(
`${ROOT_COONTAINER}test_leaf/doesnotexist.ttl`,
solidLdoDataset.context,
);
const result = await leafRequester.read();
expect(result.type).toBe("absent");
});
/**
* ===========================================================================
* Create
* ===========================================================================
*/
it("creates a data resource that doesn't exist while not overwriting", async () => {
const leafRequester = new LeafRequester(
`${ROOT_COONTAINER}test_leaf/sample2.ttl`,
solidLdoDataset.context,
);
const result = await leafRequester.createDataResource();
expect(result.type).toBe("data");
expect(
solidLdoDataset.has(
createQuad(
namedNode(`${ROOT_COONTAINER}test_leaf/`),
namedNode("http://www.w3.org/ns/ldp#contains"),
namedNode(`${ROOT_COONTAINER}test_leaf/sample2.ttl`),
namedNode(`${ROOT_COONTAINER}test_leaf/`),
),
),
).toBe(true);
});
it("creates a data resource that doesn't exist while overwriting", async () => {
const leafRequester = new LeafRequester(
`${ROOT_COONTAINER}test_leaf/sample2.ttl`,
solidLdoDataset.context,
);
const result = await leafRequester.createDataResource(true);
expect(result.type).toBe("data");
expect(
solidLdoDataset.has(
createQuad(
namedNode(`${ROOT_COONTAINER}test_leaf/`),
namedNode("http://www.w3.org/ns/ldp#contains"),
namedNode(`${ROOT_COONTAINER}test_leaf/sample2.ttl`),
namedNode(`${ROOT_COONTAINER}test_leaf/`),
),
),
).toBe(true);
});
it("creates a data resource that does exist while not overwriting", async () => {
const leafRequester = new LeafRequester(
`${ROOT_COONTAINER}test_leaf/sample.ttl`,
solidLdoDataset.context,
);
const result = await leafRequester.createDataResource();
expect(result.type).toBe("data");
expect(
solidLdoDataset.has(
createQuad(
namedNode("http://example.org/#spiderman"),
namedNode("http://www.perceive.net/schemas/relationship/enemyOf"),
namedNode("http://example.org/#green-goblin"),
namedNode(`${ROOT_COONTAINER}test_leaf/sample.ttl`),
),
),
).toBe(true);
expect(
solidLdoDataset.has(
createQuad(
namedNode(`${ROOT_COONTAINER}test_leaf/`),
namedNode("http://www.w3.org/ns/ldp#contains"),
namedNode(`${ROOT_COONTAINER}test_leaf/sample.ttl`),
namedNode(`${ROOT_COONTAINER}test_leaf/`),
),
),
).toBe(true);
});
it("creates a data resource that does exist while overwriting", async () => {
const leafRequester = new LeafRequester(
`${ROOT_COONTAINER}test_leaf/sample.ttl`,
solidLdoDataset.context,
);
const result = await leafRequester.createDataResource(true);
expect(result.type).toBe("data");
expect(
solidLdoDataset.has(
createQuad(
namedNode("http://example.org/#spiderman"),
namedNode("http://www.perceive.net/schemas/relationship/enemyOf"),
namedNode("http://example.org/#green-goblin"),
namedNode(`${ROOT_COONTAINER}test_leaf/sample.ttl`),
),
),
).toBe(false);
expect(
solidLdoDataset.has(
createQuad(
namedNode(`${ROOT_COONTAINER}test_leaf/`),
namedNode("http://www.w3.org/ns/ldp#contains"),
namedNode(`${ROOT_COONTAINER}test_leaf/sample.ttl`),
namedNode(`${ROOT_COONTAINER}test_leaf/`),
),
),
).toBe(true);
});
/**
* ===========================================================================
* Delete
* ===========================================================================
*/
it("deletes data", async () => {
solidLdoDataset.add(
createQuad(
namedNode("a"),
namedNode("b"),
namedNode("c"),
namedNode(`${ROOT_COONTAINER}/test_leaf/sample.ttl`),
),
);
solidLdoDataset.add(
createQuad(
namedNode(`${ROOT_COONTAINER}/test_leaf/`),
namedNode("http://www.w3.org/ns/ldp#contains"),
namedNode(`${ROOT_COONTAINER}/test_leaf/sample.ttl`),
namedNode(`${ROOT_COONTAINER}/test_leaf/`),
),
);
const leafRequester = new LeafRequester(
`${ROOT_COONTAINER}/test_leaf/sample.ttl`,
solidLdoDataset.context,
);
const result = await leafRequester.delete();
expect(result.type).toBe("absent");
expect(
solidLdoDataset.match(
null,
null,
null,
namedNode(`${ROOT_COONTAINER}/test_leaf/sample.ttl`),
).size,
).toBe(0);
expect(
solidLdoDataset.has(
createQuad(
namedNode(`${ROOT_COONTAINER}/test_leaf/`),
namedNode("http://www.w3.org/ns/ldp#contains"),
namedNode(`${ROOT_COONTAINER}/test_leaf/sample.ttl`),
namedNode(`${ROOT_COONTAINER}/test_leaf/`),
),
),
).toBe(false);
});
});