1.0.4 • Published 8 years ago
@terrajs/mono-test-utils v1.0.4
mono-test-utils
Utils for testing your Mono project.
Installation
npm install --save-dev @terrajs/mono-test-utilsUtils
const { start, stop, $get, $post, $put, $del } = require('@terrajs/mono-test-utils')Start a Mono project from dir directory with NODE_ENV=test:
const { app, server, conf } = await start(dir, options = {})Default options:
{
  env: 'test',
  monoPath: '@terrajs/mono'
}Stop Mono server:
await stop(server)Make HTTP requests to the API:
await $get(path, options = {})
await $post(path, options = {})
await $put(path, options = {})
await $del(path, options = {}) // alias: `$delete`Also available: $head, $options and $patch
INFO: The options are the same as request.
Every of the following methods return an object with these properties:
{
  statusCode, // HTTP status code
  headers, // Headers sent back
  body, // Body of the response
  stdout, // Logs written on stdout during the request
  stderr // Logs written on stderr during the request
}Example
Example of test/index.js with ava:
const test = require('ava')
const { join } = require('path')
const { start, stop, $get, $post } = require('@terrajs/mono-test-utils')
let ctx
// Start server
test.before('Start Mono app', async (t) => {
	ctx = await start(join(__dirname, 'fixtures/example/'))
})
// Test API Endpoints
test('Call GET - /example', async (t) => {
	const { stdout, stderr, statusCode, body } = await $get('/example')
	t.true(stdout[0].includes('GET /example'))
	t.is(stderr.length, 0)
	t.is(statusCode, 200)
  // Imagine that GET - /example returns { hello: 'world' }
	t.deepEqual(body.body, { hello: 'world' })
})
test('Call POST - /example', async (t) => {
	const { statusCode, body } = await $post('/example', {
		body: { foo: 'bar' }
	})
	t.is(statusCode, 200)
})
// Close server
test.after('Close Mono server', async (t) => {
	await close(ctx.server)
})