lincd
Version:
LINCD is a JavaScript library for building user interfaces with linked data (also known as 'structured data', or RDF)
141 lines • 5.67 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const globals_1 = require("@jest/globals");
const LinkedStorage_1 = require("../utils/LinkedStorage");
const models_1 = require("../models");
const QuadSet_1 = require("../collections/QuadSet");
const rdfs_1 = require("../ontologies/rdfs");
const rdf_1 = require("../ontologies/rdf");
class TestStore {
constructor() {
this.defaultGraph = models_1.Graph.create();
this.contents = new QuadSet_1.QuadSet();
}
init() {
return null;
}
reset() {
this.contents = new QuadSet_1.QuadSet();
}
update(added, removed) {
added.forEach((q) => this.contents.add(q));
removed.forEach((q) => this.contents.delete(q));
return null;
}
add(quad) {
return null;
}
addMultiple(quads) {
return null;
}
delete(quad) {
return null;
}
deleteMultiple(quads) {
return null;
}
setURIs(nodeToCurrentUriMap) {
return null;
}
getDefaultGraph() {
return this.defaultGraph;
}
removeNodes(nodes) {
return null;
}
loadShape(shapeInstance, request) {
return null;
}
loadShapes(shapeSet, request) {
return null;
}
clearProperties(subjectToPredicates) {
let deleted = false;
this.contents.forEach((q) => {
if (subjectToPredicates.has(q.subject) && subjectToPredicates.get(q.subject).has(q.predicate)) {
this.contents.delete(q);
deleted = true;
}
});
return Promise.resolve(deleted);
}
}
let store = new TestStore();
LinkedStorage_1.LinkedStorage.setDefaultStore(store);
(0, globals_1.describe)('default store', () => {
(0, globals_1.test)('does not store temporary node', () => {
let node = models_1.NamedNode.create();
node.setValue(rdfs_1.rdfs.label, 'test');
(0, globals_1.expect)(store.contents.size).toBe(0);
});
(0, globals_1.test)('stores quads of saved node', () => __awaiter(void 0, void 0, void 0, function* () {
store.reset();
let node = models_1.NamedNode.create();
node.setValue(rdfs_1.rdfs.label, 'test2');
node.save();
try {
yield LinkedStorage_1.LinkedStorage.promiseUpdated();
(0, globals_1.expect)(store.contents.size).toBe(1);
}
catch (e) {
console.warn('Why err?', e);
}
}));
(0, globals_1.test)('stores new properties of existing node', () => __awaiter(void 0, void 0, void 0, function* () {
store.reset();
let node = models_1.NamedNode.create();
node.isTemporaryNode = false;
node.setValue(rdfs_1.rdfs.label, 'test3');
yield LinkedStorage_1.LinkedStorage.promiseUpdated();
(0, globals_1.expect)(store.contents.size).toBe(1);
}));
(0, globals_1.test)('unsetAll removes those properties from store', () => __awaiter(void 0, void 0, void 0, function* () {
store.reset();
let node = models_1.NamedNode.create();
node.isTemporaryNode = false;
node.setValue(rdfs_1.rdfs.label, 'test4');
yield LinkedStorage_1.LinkedStorage.promiseUpdated();
node.unsetAll(rdfs_1.rdfs.label);
yield LinkedStorage_1.LinkedStorage.promiseUpdated();
(0, globals_1.expect)(store.contents.size).toBe(0);
}));
(0, globals_1.test)('unset removes that property from store', () => __awaiter(void 0, void 0, void 0, function* () {
store.reset();
let node = models_1.NamedNode.create();
node.isTemporaryNode = false;
node.setValue(rdfs_1.rdfs.label, 'test4');
yield LinkedStorage_1.LinkedStorage.promiseUpdated();
node.unset(rdfs_1.rdfs.label, new models_1.Literal('test4'));
yield LinkedStorage_1.LinkedStorage.promiseUpdated();
(0, globals_1.expect)(store.contents.size).toBe(0);
}));
(0, globals_1.test)('remove node & properties from store', () => __awaiter(void 0, void 0, void 0, function* () {
store.reset();
let node = models_1.NamedNode.create();
node.isTemporaryNode = false;
node.setValue(rdfs_1.rdfs.label, 'test5');
yield LinkedStorage_1.LinkedStorage.promiseUpdated();
node.remove();
yield LinkedStorage_1.LinkedStorage.promiseUpdated();
(0, globals_1.expect)(store.contents.size).toBe(0);
}));
(0, globals_1.test)('promiseUpdated waits for both storing nodes and altering nodes to complete', () => __awaiter(void 0, void 0, void 0, function* () {
store.reset();
let node = models_1.NamedNode.create();
node.setValue(rdfs_1.rdfs.label, 'test5');
node.save();
node.set(rdf_1.rdf.type, node);
yield LinkedStorage_1.LinkedStorage.promiseUpdated();
(0, globals_1.expect)(store.contents.size).toBe(2);
}));
});
//# sourceMappingURL=storage.test.js.map