From 78a403c450425ea86fad7df5737a4a53ed4c6714 Mon Sep 17 00:00:00 2001
From: donal <donalspring@gmail.com>
Date: Mon, 16 Apr 2018 12:57:45 +0200
Subject: [PATCH] Template for TDD

---
 tests/unit/javascript/actions.spec.js |  113 +++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 98 insertions(+), 15 deletions(-)

diff --git a/tests/unit/javascript/actions.spec.js b/tests/unit/javascript/actions.spec.js
index 4c09aaa..b810653 100644
--- a/tests/unit/javascript/actions.spec.js
+++ b/tests/unit/javascript/actions.spec.js
@@ -1,45 +1,128 @@
 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", () => {
-  it("should call commit to the mutation function twice", (done) => {
-    const commit = sinon.spy();
+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 => {
+    const commit = sinon.spy();
     actions.loadTodos({ commit }).then(() => {
       // console.log(commit)
       expect(commit.calledTwice).toBe(true);
       done();
     });
   });
-  it("should first call SET_LOADING", (done) => {
+  it("should first call SET_LOADING", done => {
     const commit = sinon.spy();
-    let mock = new MockAdapter(axios);
-    mock.onGet('http://localhost:9000/api/todos').reply(200, todos);
     actions.loadTodos({ commit }).then(() => {
       // console.log(commit.firstCall.args[0])
       expect(commit.firstCall.args[0]).toBe("SET_TODOS");
       done();
     });
   });
-  it("should second call SET_TODOS", (done) => {
+  it("should second call SET_TODOS", done => {
     const commit = sinon.spy();
-    let mock = new MockAdapter(axios);
-    mock.onGet('http://localhost:9000/api/todos').reply(200, todos);
     actions.loadTodos({ commit }).then(() => {
       // console.log(commit)
       expect(commit.secondCall.args[0]).toBe("SET_LOADING");
       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!
 
 });

--
Gitblit v1.9.3