UNPKG

to-ynab

Version:

Convert csv files from different sources, like banks to YNAB ( youneedabudget.com ) ready csv files

81 lines (68 loc) 2.74 kB
"use strict"; /* Main Test ============== General app tests */ const fs = require('fs-extra'); const moment = require('moment'); const assert = require('chai').assert; const ynab_generator = require('../index'); const config = require('./config/config'); describe("Main", () => { after( (done) => { //Remove file from project root fs.remove(process.cwd() + '/ynab.csv', (err) => { assert.isNotOk(err); done(); }); }); it("Can require module", (done) => { assert.isOk(ynab_generator); done(); }); it("Should return error if a file is not passed", () => { return ynab_generator() .catch( (err) => { assert.instanceOf(err, Error); assert.equal(err.message, "A valid .csv file needs to be provided"); }); }); it("Should return error if called a file without .csv is passed", () => { return ynab_generator('file.xls') .catch( (err) => { assert.instanceOf(err, Error); assert.equal(err.message, "File provided is does not have a .csv extension"); }); }); it("Should return error if csv file is empty", () => { return ynab_generator(`./${config.testDir}/${config.testFiles[3]}`) .catch( (err) => { assert.instanceOf(err, Error); assert.equal(err.message, "CSV file is empty"); }); }); it("Should return error if csv contains only header rows", () => { return ynab_generator(`./${config.testDir}/${config.testFiles[2]}`) .catch( (err) => { assert.instanceOf(err, Error); assert.equal(err.message, "CSV file only contains the header row"); }); }); it("Should generate a ynab.csv file without any options in process.cwd() folder", () => { return ynab_generator(`./${config.testDir}/${config.testFiles[0]}`) .then( (result) => { assert.equal(result, "File ynab.csv written successfully!"); assert.isOk(fs.existsSync(process.cwd() + '/ynab.csv'), 'File was generated in root'); }); }); it("Should add today's date if no date provided or date is invalid", () => { return ynab_generator(`./${config.testDir}/${config.testFiles[4]}`, { output: config.testDir, }).then( (result) => { let generatedData = fs.readFileSync(`./${config.testDir}/ynab.csv`, 'utf8').trim(); let regex = new RegExp(moment().format('DD/MM/YYYY'), 'g'); assert.isOk(regex.test(generatedData), 'File contains today\'s date'); }); }); });