You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.4 KiB
JavaScript
123 lines
3.4 KiB
JavaScript
/* eslint-env mocha */
|
|
/* eslint func-names:0 no-unused-expressions:0 */
|
|
|
|
'use strict';
|
|
|
|
var expect = require('chai').expect;
|
|
var fileio = require('../lib/fileio');
|
|
var Promise = require('bluebird');
|
|
var fsReadFile = Promise.promisify(require('fs').readFile);
|
|
var fsUnlink = Promise.promisify(require('fs').unlink);
|
|
var path = require('path');
|
|
|
|
describe('methods', function() {
|
|
it('should have a convert function', function() {
|
|
expect(fileio.convert).to.be.a('function');
|
|
});
|
|
|
|
it('should have a getContents function', function() {
|
|
expect(fileio.getContents).to.be.a('function');
|
|
});
|
|
|
|
it('should have a tmpSave function', function() {
|
|
expect(fileio.tmpSave).to.be.a('function');
|
|
});
|
|
|
|
it('should have a removeTmp function', function() {
|
|
expect(fileio.removeTmp).to.be.a('function');
|
|
});
|
|
|
|
it('should have a getTmp function', function() {
|
|
expect(fileio.getTmp).to.be.a('function');
|
|
});
|
|
});
|
|
|
|
describe('getContents', function() {
|
|
var mockArticle = {
|
|
title: 'foo bar',
|
|
mdPath: path.join(process.cwd(), 'test', 'mock', 'mockArticle.md'),
|
|
description: 'my description',
|
|
};
|
|
var finishedMockArticle = Object.create(mockArticle);
|
|
|
|
before(function(done) {
|
|
fsReadFile(mockArticle.mdPath, 'utf8').then(function(data) {
|
|
finishedMockArticle.contents = data;
|
|
done();
|
|
}).catch(function(err) { console.log(err);});
|
|
});
|
|
|
|
it('should take in an article object and adds contents to it', function(done) {
|
|
fileio.getContents(mockArticle).then(function(newArticle) {
|
|
expect(newArticle.title).to.equal(finishedMockArticle.title);
|
|
expect(newArticle.mdPath).to.equal(finishedMockArticle.path);
|
|
expect(newArticle.description).to.equal(finishedMockArticle.description);
|
|
expect(newArticle.contents).to.equal(finishedMockArticle.contents);
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('convert', function() {
|
|
var testPath = path.join(process.cwd(), 'test', 'mock', 'mockArticle.md');
|
|
var contents = null;
|
|
var goodRoff = null;
|
|
|
|
before(function(done) {
|
|
fsReadFile(testPath, 'utf8').then(function(data) {
|
|
contents = data;
|
|
}).then(function() {
|
|
return fsReadFile(path.join(process.cwd(), 'test', 'mock', 'mockArticle.roff'), 'utf8');
|
|
}).then(function(result) {
|
|
goodRoff = result;
|
|
done();
|
|
}).catch(function(err) { console.log(err); });
|
|
});
|
|
|
|
it('should convert articles from md to roff', function() {
|
|
expect(fileio.convert(contents, {})).to.contain(goodRoff.substr(1, -1).trim());
|
|
});
|
|
});
|
|
|
|
describe('tmpSave', function() {
|
|
var tmp = null;
|
|
|
|
it('should save a temporary file', function(done) {
|
|
fileio.tmpSave('hello world').then(function(tmpFile) {
|
|
tmp = tmpFile;
|
|
expect(tmpFile).to.equal(path.resolve(fileio.getTmp()));
|
|
fsReadFile(tmpFile, 'utf8').then(function(contents) {
|
|
expect(contents).to.equal('hello world');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
after(function(done) {
|
|
fsUnlink(tmp).then(function() {
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('removeTmp', function() {
|
|
before(function(done) {
|
|
fileio.tmpSave('hello world').then(function() {
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('should delete the temporary file', function(done) {
|
|
fileio.removeTmp().then(function(result) {
|
|
expect(result).to.equal('done');
|
|
done();
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('getTmp', function() {
|
|
it('should get the tmpfile location', function() {
|
|
expect(fileio.getTmp()).to.be.a('string');
|
|
});
|
|
});
|