@infect/infect-rda-sample-importer
Version:
INFECT Sample Data Importer
122 lines (82 loc) • 3.7 kB
JavaScript
import section from 'section-tests';
import assert from 'assert';
import RainbowConfig from '@rainbow-industries/rainbow-config';
import ServiceManager from '@infect/rda-service-manager';
import RegistryClient from '@infect/rda-service-registry-client';
import Importer from '../src/lib/Importer.js';
import AnresisHumanSampleProcessor from '../src/lib/processors/AnresisHumanSampleProcessor.js';
import InfectSampleStorageClient from '../src/lib/InfectSampleStorageClient.js';
import path from 'path';
import { AnresisTestData } from '@infect/rda-fixtures';
section('Import', (section) => {
let sm;
section.setup(async () => {
sm = new ServiceManager({
args: '--dev --log-level=error+ --log-module=* --data-for-dev'.split(' ')
});
await sm.startServices('@infect/rda-service-registry');
await sm.startServices('@infect/infect-rda-sample-storage');
await sm.startServices('@infect/api');
});
section.test('create import, process samples, finalize', async() => {
section.setTimeout(20000);
const configDir = path.join(path.dirname(new URL(import.meta.url).pathname), '../');
const config = new RainbowConfig();
await config.load(configDir);
const registryClient = new RegistryClient(config.get('service-registry.host'));
const sampleProcessor = new AnresisHumanSampleProcessor({ config });
await sampleProcessor.load();
const sampleStorage = new InfectSampleStorageClient({
registryClient,
});
await sampleStorage.load();
const importer = new Importer({
sampleStorage,
sampleProcessor,
config,
});
await importer.setupImport({
dataSetIdentifier: `Import-${Math.random()}`,
dataVersionIdentifier: `Version-${Math.random()}`,
dataVersionDescription: `Description-${Math.random()}`,
});
const testData = new AnresisTestData();
const rows = await testData.getData();
const { validSamples, invalidSamples } = await importer.processData(rows);
assert.equal(validSamples.length, 99);
assert.equal(invalidSamples.length, 0);
await importer.commit();
});
section.test('create import, process samples, delete', async() => {
section.setTimeout(20000);
const configDir = path.join(path.dirname(new URL(import.meta.url).pathname), '../');
const config = new RainbowConfig();
await config.load(configDir);
const registryClient = new RegistryClient(config.get('service-registry.host'));
const sampleProcessor = new AnresisHumanSampleProcessor({ config });
await sampleProcessor.load();
const sampleStorage = new InfectSampleStorageClient({
registryClient,
});
await sampleStorage.load();
const importer = new Importer({
sampleStorage,
sampleProcessor,
config,
});
await importer.setupImport({
dataSetIdentifier: `Import-${Math.random()}`,
dataVersionIdentifier: `Version-${Math.random()}`,
dataVersionDescription: `Description-${Math.random()}`,
});
const testData = new AnresisTestData();
const rows = await testData.getData();
const { validSamples, invalidSamples } = await importer.processData(rows);
assert.equal(validSamples.length, 99);
assert.equal(invalidSamples.length, 0);
await importer.delete();
});
section.destroy(async() => {
await sm.stopServices();
});
});