mocha-docker-postgres

1.0.1 • Public • Published

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.

Readme

Keywords

none

Package Sidebar

Install

npm i mocha-docker-postgres

Weekly Downloads

0

Version

1.0.1

License

BSD-3-Clause

Unpacked Size

25.8 kB

Total Files

16

Last publish

Collaborators

  • danielepiccone
  • gustavnikolaj
  • joelmukuthu
  • maartenwinter