0.3.0 • Published 10 years ago

sequelize-test-utils v0.3.0

Weekly downloads
41
License
MIT
Repository
github
Last release
10 years ago

sequelize-test-utils

NPM version Build Status Test coverage Dependency Status

Test utils for sequelize

Install

$ npm install --save-dev sequelize-test-utils

Usage

user migration:

export default {
  up(queryInterface, Sequelize) {
    return queryInterface.createTable('users', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER,
      },
      email: {
        allowNull: false,
        type: Sequelize.STRING,
      },
    });
  },

  down(queryInterface) {
    return queryInterface.dropTable('users');
  },
};

Mocha + Sinon (with dirty-chai, sinon-chai)

import chai from 'chai';
import dirtyChai from 'dirty-chai';
import sinonChai from 'sinon-chai';

chai.use(dirtyChai);
chai.use(sinonChai);
import { expect } from 'chai';
import { spy } from 'sinon';
import Sequelize from 'sequelize';
import { createQueryInterfaceMock, field } from 'sequelize-test-utils';
import { up, down } from '../20160827174306-create-user';

describe('#up', () => {
  it('creates users table', () => {
    const queryInterface = createQueryInterfaceMock(spy);
    up(queryInterface, Sequelize);
    expect(queryInterface.createTable).to.have.been.calledOnce();

    const call = queryInterface.createTable.getCall(0);
    expect(call.args[0]).to.equal('users');
  });

  it('table has auto increment id', () => {
    const queryInterface = createQueryInterfaceMock(spy);
    up(queryInterface, Sequelize);

    const call = queryInterface.createTable.getCall(0);
    const idField = field(call.args[1].id);
    expect(idField.allowNull()).to.be.false();
    expect(idField.isAutoIncrement()).to.be.true();
    expect(idField.isPrimaryKey()).to.be.true();
    expect(idField.isInteger()).to.be.true();
  });
});

describe('#down', () => {
    it('drops users table', () => {
    const queryInterface = createQueryInterfaceMock(spy);
    down(queryInterface, Sequelize);
    expect(queryInterface.dropTable).to.have.been.calledWith('users');
  });
});

Jest

import Sequelize from 'sequelize';
import { createQueryInterfaceMock, field } from 'sequelize-test-utils';
import { up, down } from '../20160827174306-create-user';

describe('#up', () => {
  it('creates users table', () => {
    const queryInterface = createQueryInterfaceMock(jest.fn);
    up(queryInterface, Sequelize);
    expect(queryInterface.createTable).toBeCalled();

    const call = queryInterface.createTable.mock.calls[0];
    expect(call[0]).to.equal('users');
  });

  it('table has auto increment id', () => {
    const queryInterface = createQueryInterfaceMock(jest.fn);
    up(queryInterface, Sequelize);

    const call = queryInterface.createTable.mock.calls[0];
    const idField = field(call[1].id);
    expect(idField.allowNull()).toBe(false);
    expect(idField.isAutoIncrement()).toBe(true);
    expect(idField.isPrimaryKey()).toBe(true);
    expect(idField.isInteger()).toBe(true);
  });
});

describe('#down', () => {
    it('drops users table', () => {
    const queryInterface = createQueryInterfaceMock(jest.fn);
    down(queryInterface, Sequelize);
    expect(queryInterface.dropTable).toBeCalledWith('users');
  });
});

License

MIT © C.T. Lin

0.3.0

10 years ago

0.2.0

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago