donal
2018-04-16 78a403c450425ea86fad7df5737a4a53ed4c6714
tests/unit/javascript/actions.spec.js
@@ -1,21 +1,21 @@
import actions from "@/store/actions";
import store from "@/store";
import * as all from "../setup.js";
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import axios from "axios";
import MockAdapter from "axios-mock-adapter";
import sinon from "sinon";
const todos = [
  { id: 1, title: "learn testing", completed: true },
  { id: 2, title: "learn testing 2", completed: false }
  { _id: 1, title: "learn testing", completed: true },
  { _id: 2, title: "learn testing 2", completed: false }
];
let state;
describe("load todos", () => {
  beforeEach(() =>{
describe("loadTodos", () => {
  beforeEach(() => {
    let mock = new MockAdapter(axios);
    mock.onGet('http://localhost:9000/api/todos').reply(200, todos);
    mock.onGet("http://localhost:9000/api/todos").reply(200, todos);
  });
  it("should call commit to the mutation function twice", (done) => {
  it("should call commit to the mutation function twice", done => {
    const commit = sinon.spy();
    actions.loadTodos({ commit }).then(() => {
      // console.log(commit)
@@ -23,7 +23,7 @@
      done();
    });
  });
  it("should first call SET_LOADING", (done) => {
  it("should first call SET_LOADING", done => {
    const commit = sinon.spy();
    actions.loadTodos({ commit }).then(() => {
      // console.log(commit.firstCall.args[0])
@@ -31,7 +31,7 @@
      done();
    });
  });
  it("should second call SET_TODOS", (done) => {
  it("should second call SET_TODOS", done => {
    const commit = sinon.spy();
    actions.loadTodos({ commit }).then(() => {
      // console.log(commit)
@@ -39,5 +39,90 @@
      done();
    });
  });
});
describe("addTodos", () => {
  beforeEach(() => {
    state = {};
    let mock = new MockAdapter(axios);
    // mock.onPost(/http:\/\/localhost:9000\/api\/todos\/.*/, {})
    mock.onPost("http://localhost:9000/api/todos").reply(200, todos);
  });
  it("should call commit to the mutation function once", done => {
    const commit = sinon.spy();
    state.newTodo = "Learn some mocking";
    actions.addTodo({ commit, state }).then(() => {
      // console.log(commit)
      expect(commit.calledOnce).toBe(true);
      done();
    });
  });
  it("should first call ADD_TODO", done => {
    const commit = sinon.spy();
    state.newTodo = "Learn some mocking";
    actions.addTodo({ commit, state }).then(() => {
      // console.log(commit.firstCall.args[0])
      expect(commit.firstCall.args[0]).toBe("ADD_TODO");
      done();
    });
  });
});
describe("setNewTodo", () => {
  it("should call SET_NEW_TODO", () => {
    const commit = sinon.spy();
    actions.setNewTodo({ commit, todo: "learn stuff about mockin" });
    expect(commit.firstCall.args[0]).toBe("SET_NEW_TODO");
  });
});
describe("clearNewTodo", () => {
  it("should call CLEAR_NEW_TODO", () => {
    const commit = sinon.spy();
    actions.clearNewTodo({ commit });
    expect(commit.firstCall.args[0]).toBe("CLEAR_NEW_TODO");
  });
});
describe("clearTodos", () => {
  it("should call CLEAR_ALL_TODOS when all is true", () => {
    const commit = sinon.spy();
    state.todos = todos;
    actions.clearTodos({ commit, state }, true);
    expect(commit.firstCall.args[0]).toBe("CLEAR_ALL_TODOS");
  });
  it("should call CLEAR_ALL_DONE_TODOS when all is not passed", () => {
    const commit = sinon.spy();
    state.todos = todos;
    actions.clearTodos({ commit, state });
    expect(commit.firstCall.args[0]).toBe("CLEAR_ALL_DONE_TODOS");
  });
});
describe("updateTodo", () => {
  beforeEach(() => {
    state = {};
    let mock = new MockAdapter(axios);
    mock.onPut("http://localhost:9000/api/todos/1").reply(200, todos);
  });
  it("should call commit to the mutation function once", done => {
    const commit = sinon.spy();
    state.todos = todos;
    actions.updateTodo({ commit, state }, { id: 1 }).then(() => {
      expect(commit.calledOnce).toBe(true);
      done();
    });
  });
  it("should call MARK_TODO_COMPLETED", done => {
    const commit = sinon.spy();
    state.todos = todos;
    actions.updateTodo({ commit, state }, { id: 1 }).then(() => {
      // console.log(commit.firstCall.args[0])
      expect(commit.firstCall.args[0]).toBe("MARK_TODO_COMPLETED");
      done();
    });
  });
  // TODO - test goes here!
});