| /* |
| * prompt-test.js: Tests for prompt. |
| * |
| * (C) 2010, Nodejitsu Inc. |
| * |
| */ |
| |
| var assert = require('assert'), |
| vows = require('vows'), |
| prompt = require('../lib/prompt'), |
| winston = require('winston').cli(), |
| helpers = require('./helpers'); |
| |
| vows.describe('prompt/interactive').addBatch({ |
| "When using prompt": { |
| topic: function () { |
| // |
| // Reset the prompt for interactive testing |
| // |
| prompt.started = false; |
| prompt.start(); |
| winston.info('These prompt tests are interactive'); |
| winston.info('Not following instructions will result in test failure'); |
| return null; |
| }, |
| "the getInput() method": { |
| "when passed a complex property with `hidden: true`": { |
| topic: function () { |
| winston.info('When prompted, enter: 12345 [backspace] [backspace] [enter]'); |
| prompt.getInput({ path: ['password'], schema: helpers.schema.properties.password }, this.callback); |
| }, |
| "should respond with `123`": function (err, result) { |
| assert.isNull(err); |
| assert.equal(result, '123'); |
| }, |
| "and then when passed a complex property expecting a number": { |
| topic: function () { |
| winston.info('When prompted, enter: 123 [enter]'); |
| prompt.getInput({ path: ['number'], schema: helpers.schema.properties.number }, this.callback); |
| }, |
| "should respond with `123` (as a number)": function (err, result) { |
| assert.isNull(err); |
| assert.equal(result, 123); |
| } |
| } |
| } |
| } |
| } |
| }).export(module); |