Socket
Socket
Sign inDemoInstall

mock-knex-temp

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mock-knex-temp

a knex mock adapter for simulating a db during testing


Version published
Weekly downloads
0
decreased by-100%
Maintainers
1
Weekly downloads
 
Created
Source

mock-knex

A mock knex adapter for simulating a database during testing, especially useful when used in combination with fixture-factory.

Knex Support

Currently supports knex 0.8 through 1.0

Installation

$ npm install mock-knex --save-dev

Usage

for Mocking Knex

var knex = require('knex');
var mockDb = require('mock-knex');
var db = knex({
    client: 'sqlite',
});

mockDb.mock(db);

... run tests ...

for Unmocking

... run tests ...

mockDb.unmock(db);

for Tracking queries with knex

... mock knex ...

var tracker = require('mock-knex').getTracker();

tracker.install();

tracker.on('query', function checkResult(query) {
  expect(query.method).to.equal('first');
  query.response([
    {
      fielda : 'A',
      fieldb : 'B'
    },
    {
      fielda : 'C',
      fieldb : 'D'
    },
    {
      fielda : 'E',
      fieldb : 'F'
    }
  ]);
});

knex.table('table').first('fielda', 'fieldb').then(function checkFirstArrResults(model) {
  expect(model.fielda).to.equal('A');
  expect(model.fieldb).to.equal('B');
  tracker.uninstall();
  done();
});

for Tracking queries with Bookshelf

... mock knex ...

var tracker = require('mock-knex').getTracker();

tracker.install();

tracker.on('query', function sendResult(query) {
  query.response([
    {
      id : 1,
      foo : 'bar'
    }
  ]);
});

Model.forge({ id : 1 }).fetch()
  .then(function fetchResult(model) {
    expect(model).to.be.an.instanceof(Model);
    expect(model.get('id')).to.equal(1);
    expect(model.get('foo')).to.equal('bar');
    tracker.uninstall();
    done();
  });

for Tracking multiple successive queries

... mock knex ...
... enable tracking ...

tracker.on('query', function sendResult(query, step) {
  [
    function firstQuery() {
      expect(query.sql).to.equal(... some SQL string ...);
      query.response([{id: 1}]);
    },
    function secondQuery() {
      expect(query.sql).to.equal(... some SQL string ...);
      query.response([{id: 2}]);
    }
  ][step - 1]();
});

More Examples?

Checkout the Tests

API

require('mock-knex')

MethodArgumentsReturnsDescription
mock(knex)
knex
initialized knex client
-Attaches mocked client to knex instance
unmock(knex)-Detaches mocked client from knex instance
getTracker()-TrackerReturns query Tracker instance

Tracker

The tracker enables you to catch and respond to queries that occur during testing, see Test for more examples.

MethodArgumentsReturnsDescription
install()--Enables query tracking mock on mocked knex client
uninstall()--Disables query tracking mock on mocked knex client. Also resets 'step' counter.
on('query', callback(query, step))
callback
A function that gets executed on 'query' event.
query
Query Details object
step
Query execution call counter starting from 1. Increases after every 'query' event emitting. Gets resetted on calling uninstall().
-Add event listener for 'query' event. It gets executed for each query that should end up in database. Instead of this callback gets executed and its up to you to assert queries and mock database responses.

Query Details

The object containing query details that is being sent to knex database dialect on query execution. Object properties signature matches with knex toSQL() output with additional method returns(values).

Property / MethodArgumentsReturnsDescription
bindingsArraySQL query parameters
methodStringMethod name to be executed (e.g. 'select', 'update', 'delete', 'commit', 'rollback' adn etc.).
sqlStringParameterized SQL query string to be executed. Look
optionsObjectUnknown purpose
transactingBooleanWhether or not the query was executed from within a transaction
reject(Error)
Error
The Error, string or instance of Error, which represents why the result was rejected
- Function that needs to be called to mock database query result for knex.
response(values, options)
values
An array of mock data to be returned by database. For Bookshelf this is mostly array of objects. Knex could return any type of data.
options
stream
Is this a stream response, defaults to false
- Function that needs to be called to mock database query result for knex.

Running Tests

$ npm install
$ docker-compose up -d
$ make test-suite

Keywords

FAQs

Package last updated on 14 Mar 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc