FreeAllMedia/dovima

View on GitHub
es6/spec/model/mock.instance.spec.js

Summary

Maintainability
C
1 day
Test Coverage
import Model from "../../../";
import sinon from "sinon";

describe(".mock.instance(mockedRecord)", () => {

  let user,
      mockedRecord;

  class User extends Model {}

  beforeEach(() => {
    mockedRecord = {id: 1, name: "Bob"};
    user = User.mock.instance(mockedRecord);
  });

  it("should mock .save", done => {
    user.save((error, newId) => {
      newId.should.eql(mockedRecord.id);
      done();
    });
  });

  it("should set .createdAt when record is new", done => {
    user.id = undefined;
    user.save((error) => {
      if (error) { throw error; }
      (undefined === user.createdAt).should.not.be.true;
      done();
    });
  });

  it("should set .updatedAt when record is not new", done => {
    user.save((error) => {
      if (error) { throw error; }
      (undefined === user.updatedAt).should.not.be.true;
      done();
    });
  });

  it("should set .updatedAt when record is not new", done => {
    user.id = 1;
    user.save((error) => {
      if (error) { throw error; }
      (undefined === user.updatedAt).should.not.be.true;
      done();
    });
  });

  it("should still call .beforeSave", () => {
    user.constructor.prototype.afterSave = sinon.spy();

    user.save(() => {
      user.beforeSave.called.should.be.true;
    });
  });

  it("should still call .afterSave", () => {
    user.constructor.prototype.afterSave = sinon.spy();

    user.save(() => {
      user.afterSave.called.should.be.true;
    });
  });

  it("should mock .fetch", done => {
    user.fetch(() => {
      user.attributes.should.eql(mockedRecord);
      done();
    });
  });

  it("should mock .delete", done => {
    user.delete(done);
  });
});