Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

mocha-docker-postgres

One-com5BSD-3-Clause1.0.1

Test helper for Postgres integration tests.

readme

mocha docker postgres

Build Status

mocha testhelper for integration tests with postgres using docker.

Usage:

require('mocha-docker-postgres'); // will patch the mocha Context prototype

var someModule = require('../someModule');

describe('some module', function () {
    var instanceOfSomeModule;
    before(function () {
        this.timeout(10000); // you may need to bump the timeout for this block
        return this.dockerPostgres();
    });
    before(function () {
        // create an instance of someModule where the connection string
        // to the created postgres instance is passed along as an option
        instanceOfSomeModule = someModule({
            conString: this.conString
        });
    });

    it('should ...', function () {
        return expect(instanceOfSomeModule.whatEver, 'to ...');
    });
});

A call to this.dockerPostgres() will start a docker container (unless we already have one that fits) , and will set the value this.conString to the postgres url needed to connect to that database.

The method returns a promise, and that promise will not resolve until the postgres database is ready to accept connections.

You get a completely fresh database after each call to this.dockerPostgres so you will need to run your migrations in a before hook after that.

If you want to have a completely fresh database for each test, you can make the before hook into a beforeEach. It will reuse the same postgres container, but create new databases for each invocation of the method - which makes it a lot less time consuming.

On my developer work station it takes about 4 seconds for postgres to start up, and that is only done once per test run.