| 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; |
| }); |
| |
| }); |
| |
| }); |
| |
| }); |