Skip to content

Commit

Permalink
Write specs for cmd arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
lucassus committed Jul 23, 2015
1 parent ce9f553 commit fc29e93
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 5 deletions.
13 changes: 8 additions & 5 deletions lib/program.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
var _ = require('lodash');
var program = require('commander');

var list = function(val) {
return _(val.split(',')).map(function(format) {
var parseList = function(list) {
return list.split(',').map(function(format) {
return format.trim();
});
};

var DEFAULT_FORMATS = ['avi', 'mkv', 'mp4', 'mpg'];

program
.version(require('../package.json').version)
.option('-f, --formats [formats]', 'list of movie formats to process, default avi,mkv,mp4,mpg', list)
.option('-f, --formats [formats]',
'list of movie formats to process, default ' + DEFAULT_FORMATS.join(', '),
parseList)
.option('-d, --directory [directory]', 'working directory')
.parse(process.argv);

if (!program.formats) {
program.formats = ['avi', 'mkv', 'mp4', 'mpg'];
program.formats = DEFAULT_FORMATS;
}

module.exports = program;
40 changes: 40 additions & 0 deletions lib/program_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
var expect = require('chai').expect;

var program = require('./program');

describe('program', function() {

beforeEach(function() {
program.parse(['', '', '-d', '/foo/bar'])
});

describe('directory', function() {

it('can be overridden', function() {
expect(program.directory).to.eq('/foo/bar');
});

});

describe('formats', function() {

it('has default values', function() {
expect(program.formats).to.be.an('array');
expect(program.formats).to.include('avi');
expect(program.formats).to.include('mkv');
expect(program.formats).to.include('mp4');
expect(program.formats).to.include('mpg');
});

it('can be overridden', function() {
program.parse(['', '', '-f', 'gif, swf']);

expect(program.formats).to.be.an('array');
expect(program.formats).to.have.length(2);
expect(program.formats).to.include('gif');
expect(program.formats).to.include('swf');
});

});

});

0 comments on commit fc29e93

Please sign in to comment.