/* This is part of datacrate, a node.js library for working with DataCrates. Copyright (C) 2018 University of Technology Sydney This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ const chai = require('chai'); const chaiFiles = require('chai-files'); chai.use(chaiFiles); const assert = chai.assert; const expect = chai.expect; const file = chaiFiles.file; const fs = require('fs-extra'); const catalog = require('../lib/catalog.js'); const ORG = { '@id': 'https://www.uts.edu.au', 'name': 'University of Technology Sydney' }; const OWNER = 'Michael.Lynch@uts.edu.au'; const APPROVER = 'data.librarian@uts.edu.au'; const DATASET_ID = 'DATASET_ID'; function graph_get(graph, id) { const match = graph.filter((item) => item['@id'] === id); if( match.length ) { return match[0]; } else { return null; } } describe("ReDBox data publication to DataCrate catalog.json", () => { it("returns a catalog with a dataset item", async () => { const dp = await fs.readJson('./test_data/datapub.json'); const cj = await catalog.datapub2catalog({ 'id': DATASET_ID, 'datapub': dp, 'organisation': ORG, 'owner': OWNER, 'approver': APPROVER }); assert(cj, "Got an object"); assert(cj['@graph'], "Catalog has a @graph"); const dataset = graph_get(cj['@graph'], DATASET_ID); assert(dataset, "Graph has an item with id " + DATASET_ID); expect(dataset['name']).to.equal(dp['title']); expect(dataset['description']).to.equal(dp['description']); }); it("Can set dateCreated and datePublished", async() => { assert(true); }) });