var vows = require('vows'), assert = require('assert'), path = require('path'), tmp = require('../lib/tmp.js'), Test = require('./base.js'); vows.describe('Name creation').addBatch({ 'when using without parameters': { topic: function () { tmp.tmpName(this.callback); }, 'should not return with error': assert.isNull, 'should have the default prefix': Test.testPrefix('tmp-') }, 'when using with prefix': { topic: function () { tmp.tmpName({ prefix: 'something' }, this.callback); }, 'should not return with error': assert.isNull, 'should have the provided prefix': Test.testPrefix('something') }, 'when using with postfix': { topic: function () { tmp.tmpName({ postfix: '.txt' }, this.callback); }, 'should not return with error': assert.isNull, 'should have the provided postfix': Test.testPostfix('.txt') }, 'when using template': { topic: function () { tmp.tmpName({ template: path.join(tmp.tmpdir, 'clike-XXXXXX-postfix') }, this.callback); }, 'should not return with error': assert.isNull, 'should have the provided prefix': Test.testPrefix('clike-'), 'should have the provided postfix': Test.testPostfix('-postfix'), 'should have template filled': function (err, name) { assert.isTrue(/[a-zA-Z0-9]{6}/.test(name)); } }, 'when using multiple options': { topic: function () { tmp.tmpName({ prefix: 'foo', postfix: 'bar', tries: 5 }, this.callback); }, 'should not return with error': assert.isNull, 'should have the provided prefix': Test.testPrefix('foo'), 'should have the provided postfix': Test.testPostfix('bar') }, 'no tries': { topic: function () { tmp.tmpName({ tries: -1 }, this.callback); }, 'should fail': function (err, name) { assert.isObject(err); } }, 'tries not numeric': { topic: function () { tmp.tmpName({ tries: 'hello'}, this.callback); }, 'should fail': function (err, name) { assert.isObject(err); } } }).exportTo(module);