Nutella Peanut-Butter Marshmallow

npm

Need private packages and team management tools?Check out npm Orgs. »

couchdb-ddoc-test

1.0.0 • Public • Published

This is a simple CouchDB design doc testing tool.

Usage:

var DDocTest = require('couchdb-ddoc-test');
var test = new DDocTest({
  fixture: {a: 1},
  src: 'path/to/map.js'
});
var result = test.runMap();
 
assert.equals(result, fixture);
 

require()

CouchDB supports require() within design doc functions. It works slightly different from require() in e.g. Node.js (in which these tests are run). Instead of relying on CouchDB’s require() we will be using a couchapp specific pre-processing directive. To make everything work, we have to jump through a small hoop:

Say you want to var foo = require('foo'); within a map function. Do this:

function(doc) {
  // prepare for require
  var module = module || {};
 
  // This next line is a `couchapp` preprocessor line, that copy and pastes the
  // contents of `path/to/foo.js` into this function. It should define the
  // variable `foo`. That is how this code is run within CouchDB. !code
  // path/to/foo.js
 
  // This next line makes sure that we only run the Node.js `require()` when the
  // `!code` macro is not expanded. This is why !code path/to/foo.js should
  // create the `foo` variable. If it doesn’t exist, we run a regular Node.js
  // `require()`. With *one* caveat: since `map.js` will be run within `eval()`
  // in another module than your tests, we need to put the full module path into
  // `require()`, otherwise, the foo package would have to be a dependency of
  // the couchdb-ddoc-test package, which wouldn’t work out. Anyhoo!
  var foo = foo || require(process.cwd() + '/different/path/to/foo'
}

Test

npm test

install

npm i couchdb-ddoc-test

Downloadsweekly downloads

427

version

1.0.0

license

Apache 2.0 License

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
  • avatar
Report a vulnerability