Home

Awesome

interpreted

node-tap wrapper for testing input/output functionality

Installation

npm install interpreted

Documentation

var interpreted = require("interpreted");

interpreted({
  // required. full path to the source file directory and the expected directory
  // the expected directory should contain JSON files (e.q. example.json)
  // and the source directory can contain anything. Note that the basename
  // must exist in both source and expected directroy.
  // (e.q yaml to json converter: source/example.yaml, expected/example.json)
  source: path.resolve(__dirname, "source"),
  expected: path.resolve(__dirname, "expected"),

  // optional. the basenames of the files to use in tests. If this is not specified
  // all tests will be used.
  run: ["example"],

  // optional, update flag. Instead of testing expected files, they will be overwritten with
  // the actual value. Default: false
  update: false,

  // optional, read source file flag. If true the source file is read and passed
  // as a second argument to the test function. Default: true
  sourceRead: true,

  // optional. This method will execute before the file tests.
  start: function (callback) {
    callback(null);
  },

  // required. This method will be used to test the files. Note that there
  // must be passed a JSON valid value to the callback.
  test: function (name, content, callback) {
    callback(null, YAML.parse(content)); // real object (e. q. { test: true })
  },

  // optional. This method will execute after the file tests.
  close: function (callback) {
    callback(null);
  },

  // optional. This configuration object will be passed to the tap.test
  // function.
  tap: {
    timeout: 3000,
  },

  // optional: by default json files are parsed and everything else is threaded
  // as a simple text. You can extend this behaviour.
  types: {
    yaml: {
      test: function (t, actual, expected) {
        t.deepEqual(actual, YAML.parse(expected));
      },
      update: function (actual) {
        return YAML.stringify(actual);
      },
    },
  },
});