blob: 8b9bb5b56cc86572852ff6a7c7341044ec5a79de [file] [log] [blame]
import assert from 'assert';
import Lab from 'lab';
export const lab = Lab.script();
import nock from 'nock';
import { createConfigFile } from './common';
import nmo from '../src/nmo.js';
import {cli} from '../src/import-csv.js';
import importcsv from '../src/import-csv.js';
const docs = {
'docs':[
{
'name':'John',
'surname':' Rambo',
'email':' john@rambo.com'
},
{
name: 'Eddie',
surname: ' Vedder',
email: ' eddie@vedder.com'
}
]};
lab.experiment('import csv', () => {
createConfigFile();
lab.beforeEach((done) => {
nmo
.load({nmoconf: __dirname + '/fixtures/randomini'})
.then(() => done())
.catch(() => done());
});
lab.experiment('cli', () => {
lab.test('throws error if no inputs', (done) => {
try {
cli();
} catch(e) {
assert.deepEqual(e.type, 'EUSAGE');
}
done();
});
lab.test('throws error if bad url', (done) => {
try {
cli('file', 'bad-url');
} catch(e) {
assert.ok(/not a valid url/.test(e.message));
}
done();
});
lab.test('full integration works', (done) => {
nock('http://127.0.0.1:5984')
.put('/fake-csv')
.reply(200)
.post('/fake-csv/_bulk_docs')
.reply(200);
cli(__dirname + '/fixtures/fake.csv', 'http://127.0.0.1:5984/fake-csv', 'delimiter=','')
.then(done);
});
});
lab.experiment('upload to couchdb', () => {
lab.test('reports bad file', (done) => {
const url = 'http://127.0.0.1:5984';
importcsv('bad-fake.csv', url + '/csv-upload', {}).catch(function (err) {
assert.ok(/Error reading file -/.test(err));
done();
});
});
lab.test('logs error for failed request', (done) => {
const url = 'http://127.0.0.1:5984';
nock(url)
.put('/csv-upload')
.reply(501);
importcsv(__dirname + '/fixtures/fake.csv', url + '/csv-upload', {}).catch(function (err) {
assert.ok(/CouchDB server answered:/.test(err));
done();
});
});
lab.test('Uploads csv file to CouchDB', (done) => {
const url = 'http://127.0.0.1:5984';
nock(url)
.put('/csv-upload')
.reply(200)
.post('/csv-upload/_bulk_docs', docs)
.reply(200);
importcsv(__dirname + '/fixtures/fake.csv', url + '/csv-upload', {delimiter: ',', columns: true}).then(function () {
done();
}).catch(function (err) {
throw 'error ' + err;
});
});
});
});