/* * macros.js: Test macros for prompt. * * (C) 2010, Nodejitsu Inc. * */ var assert = require('assert'), helpers = require('./helpers'), prompt = require('../lib/prompt'); exports.shouldConfirm = function (options, mixin) { var message = options.response.toString().replace(/\n/g, ''), messages = ["When using prompt", "the confirm() method"], context = {}, last = context; messages = messages.concat(options.messages || []); while (messages.length) { var text = messages.shift(); last[text] = {}; last = last[text]; } last['responding with ' + message] = { topic: function () { if(!mixin) prompt.confirm(options.prop, this.callback); else prompt.confirm(options.prop, mixin, this.callback); if (!Array.isArray(options.response)) { helpers.stdin.writeNextTick(options.response + '\n'); } else { helpers.stdin.writeSequence(options.response); } }, "should respond with true" : function(err, result) { assert.isNull(err); assert.isTrue(result); } } return context; }; exports.shouldNotConfirm = function (options) { var message = options.response.toString().replace(/\n/g, ''), messages = ["When using prompt", "the confirm() method"], context = {}, last = context; messages = messages.concat(options.messages || []); while (messages.length) { var text = messages.shift(); last[text] = {}; last = last[text]; } last['responding with ' + message] = { topic: function () { prompt.confirm(options.prop, this.callback); if (!Array.isArray(options.response)) { helpers.stdin.writeNextTick(options.response + '\n'); } else { helpers.stdin.writeSequence(options.response); } }, "should respond with false" : function(err, result) { assert.isNull(err); assert.isFalse(result); } }; return context; };