diff --git a/StoreResourceLoader.js b/StoreResourceLoader.js index 8f5d49c..ed3c2ad 100644 --- a/StoreResourceLoader.js +++ b/StoreResourceLoader.js @@ -1,6 +1,6 @@ const clownface = require('clownface') const ns = require('@tpluscode/rdf-ns-builders') -const { fromStream } = require('rdf-dataset-ext') +const { fromStream, toStream } = require('rdf-dataset-ext') const rdf = { ...require('@rdfjs/data-model'), ...require('@rdfjs/dataset') } const TermSet = require('@rdfjs/term-set') @@ -24,6 +24,9 @@ class StoreResourceLoader { async dataset () { return dataset }, + quadStream () { + return toStream(dataset) + }, types } } diff --git a/test/StoreResourceLoader.test.js b/test/StoreResourceLoader.test.js index 0dcef59..3b6cac7 100644 --- a/test/StoreResourceLoader.test.js +++ b/test/StoreResourceLoader.test.js @@ -1,6 +1,7 @@ const { strictEqual } = require('assert') const { resolve } = require('path') const { describe, it } = require('mocha') +const { fromStream } = require('rdf-dataset-ext') const rdf = { ...require('@rdfjs/data-model'), ...require('@rdfjs/dataset') } const FlatMultiFileStore = require('rdf-store-fs/FlatMultiFileStore') const StoreResourceLoader = require('../StoreResourceLoader') @@ -38,6 +39,22 @@ describe('StoreResourceLoader', () => { strictEqual((await resource.dataset()).size, 2) strictEqual([...resource.types][0].value, 'http://example.org/Class') }) + + it('attaches quadStream getter to resource', async () => { + const term = rdf.namedNode('http://example.org/') + const store = new FlatMultiFileStore({ + baseIRI: 'http://example.org/', + path: resolve(__dirname, 'support/store') + }) + const loader = new StoreResourceLoader({ store }) + + const resource = await loader.load(term) + const dataset = await fromStream(rdf.dataset(), resource.quadStream()) + + strictEqual(term.equals(resource.term), true) + strictEqual(dataset.size, 2) + strictEqual([...resource.types][0].value, 'http://example.org/Class') + }) }) describe('.forClassOperation', () => {