donal
2018-04-16 78a403c450425ea86fad7df5737a4a53ed4c6714
tests/unit/javascript/actions.spec.js
@@ -1,14 +1,14 @@
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 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("loadTodos", () => {
  beforeEach(() => {
@@ -41,36 +41,6 @@
  });
});
/*
  addTodo({ commit, state }) {
    if (!state.newTodo) {
      // do not add empty todos
      return;
    }
    // debugger
    const todo = {
      title: state.newTodo,
      completed: false,
      important: false
    };
    axios
      .post(config.todoEndpoint, todo)
      .then(mongoTodo => {
        commit("ADD_TODO", mongoTodo.data);
      })
      .catch(err => {
        if (err) {
          console.info("INFO - Adding dummy todo because of ", err);
          let mongoTodo = todo;
          mongoTodo._id = "fake-todo-item-" + Math.random();
          commit("ADD_TODO", mongoTodo);
        }
      });
  },
*/
let state;
describe("addTodos", () => {
  beforeEach(() => {
    state = {};
@@ -97,3 +67,62 @@
    });
  });
});
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!
});