Skip to content

lipkap/mongo-mocker

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mongo Mocker

A promise/generator driven Mongo mocking layer, with in memory state and mongo operator support.

Install

npm i mongo-mocker --save-dev

Requirements

Node: 6+

Setup

MongoMocker([mockModulePath], initialCollections)

const MongoMocker = require('mongo-mocker');
const mongo = MongoMocker('module/path/for/mongo/driver', { 
    users: [
        { _id: 'xxxx1', name: 'Sam' }, 
        { _id: 'xxxx2', name: 'Claire' }, 
        { _id: 'xxxx3', name: 'Dean' }
    ],
    books: [
        { title: 'Willow' }
    ]
});

/** <==≠ OR ≠===========================> **/

const mongo = require('mongo-mocker')('module/path/for/mongo/driver', {});

/** <==≠ OR (just the mongoDB) ≠========> **/

const mongo = require('mongo-mocker')();

In src code all normal operations happen and work as expected

yield mongo.collection('users').findOne({ name: 'Dean' });
// { _id: 'xxxx3', name: 'Dean' }

Helpers

const mongo = MongoMocker({ users: { _id: '1', name: 'Sam' }, test: [] });

mongo.mock.getCollectionData('users');
// Returns internal state of users collects: [{ _id: '1', name: 'Sam' }]

mongo.mock.clear('test');
// Clear a specific collection

mongo.mock.clarAll();
// Clears all collections

In Tests

const MongoMocker = require('./index');

describe('MongoMocker', () => {
  let mongo;

  before(() => {
    mongo = new MongoMocker('mongoDriver/path', { test: [ { test: -2 } ]});
  });

  afterEach(() => {
    mongo.mock.clearAll();
  });

  it('Inserts and findOne document', function* () {
    const collection = yield mongo.collection('test');
    yield collection.insert({ test: 20 });
    const doc = yield collection.findOne({ test: { $gt: 10 } });
    expect(doc).to.be.a('object');
    expect(doc).to.have.keys(['_id', 'test']);
    expect(doc.test).to.equal(20);
  });

  it('Should init with initial data', function* () {
    mongo = new MongoMocker({ example: [{ object: 1 }, { object: 2 }] });
    expect(mongo.mock.getCollectionData('example')).to.deep.equal([{ object: 1 }, { object: 2 }])
  });
});

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 98.9%
  • Shell 1.1%