UNPKG

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
"use strict"; 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