UNPKG

pipeline-handler

Version:

an idependant handler for pipelines (like in perfidy or epitelete)

86 lines (79 loc) 2.9 kB
const { PipelineHandler } = require("../../dist/main"); const { Proskomma } = require("proskomma"); const fse = require("fs-extra"); const path = require("path"); const test = require("tape"); const {Validator} = require("proskomma-json-tools"); const testGroup = "strip and merge"; const perfContent = fse.readFileSync(path.resolve(__dirname, "../data/perfs/MARK_titus_aligned_eng.json")).toString(); const proskomma = new Proskomma([ { name: "org", type: "string", regex: "^[^\\s]+$" }, { name: "lang", type: "string", regex: "^[^\\s]+$" }, { name: "abbr", type: "string", regex: "^[A-za-z0-9_-]+$" } ]); const pipelineH = new PipelineHandler({ proskomma: proskomma, verbose: false }); let reportStrip = null; let outputStrip = null; let output = null; test(`strip alignment (${testGroup})`, async (t) => { t.plan(3); try { output = await pipelineH.runPipeline("stripAlignmentPipeline", { perf: JSON.parse(perfContent), }); // console.log(JSON.stringify(output.perf, " ", 4)); outputStrip = output.perf; reportStrip = output.strippedAlignment; const validator = new Validator(); let validation = validator.validate( 'constraint', 'perfDocument', '0.3.0', outputStrip ); t.equal(validation.errors, null); t.ok(outputStrip, "perf alignment stripped"); t.ok(reportStrip, "perf report alignement"); // await saveFile(JSON.stringify(output.perf, null, 2), "test/outputs/STRIP_perf_titus_stripped_eng.json"); // await saveFile(JSON.stringify(output.strippedAlignment, null, 2), "test/outputs/STRIP_strippedAlignment_stripped_eng.json"); } catch (err) { console.log(err); t.fail("stripAlignmentPipeline throws on valid perf"); } }); test(`merge alignment (${testGroup})`, async (t) => { t.plan(3); try { output = await pipelineH.runPipeline("mergeAlignmentPipeline", { perf: outputStrip, strippedAlignment: reportStrip, }); t.ok(output, "perf alignment stripped"); // console.log(JSON.stringify(perfContent, " ", 4)); t.same(output.perf, JSON.parse(perfContent)); const validator = new Validator(); let validation = validator.validate( 'constraint', 'perfDocument', '0.3.0', output.perf ); t.equal(validation.errors, null); // await saveFile(JSON.stringify(output.perf, null, 2), "test/outputs/STRIP_perf_titus_merged_align_eng.json"); } catch (err) { console.log(err); t.fail("mergeAlignmentPipeline throws on valid perf"); } });