ADD some new testing for the actions
1 files added
4 files modified
| | |
| | | "glob-to-regexp": "0.3.0" |
| | | } |
| | | }, |
| | | "@sinonjs/formatio": { |
| | | "version": "2.0.0", |
| | | "resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", |
| | | "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", |
| | | "dev": true, |
| | | "requires": { |
| | | "samsam": "1.3.0" |
| | | } |
| | | }, |
| | | "@types/strip-bom": { |
| | | "version": "3.0.0", |
| | | "resolved": "https://registry.npmjs.org/@types/strip-bom/-/strip-bom-3.0.0.tgz", |
| | |
| | | "requires": { |
| | | "follow-redirects": "1.4.1", |
| | | "is-buffer": "1.1.6" |
| | | } |
| | | }, |
| | | "axios-mock-adapter": { |
| | | "version": "1.15.0", |
| | | "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.15.0.tgz", |
| | | "integrity": "sha1-+8BoJdgwLJXDM00hAju6mWJV1F0=", |
| | | "dev": true, |
| | | "requires": { |
| | | "deep-equal": "1.0.1" |
| | | } |
| | | }, |
| | | "babel-code-frame": { |
| | |
| | | "verror": "1.10.0" |
| | | } |
| | | }, |
| | | "just-extend": { |
| | | "version": "1.1.27", |
| | | "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", |
| | | "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", |
| | | "dev": true |
| | | }, |
| | | "kew": { |
| | | "version": "0.7.0", |
| | | "resolved": "https://registry.npmjs.org/kew/-/kew-0.7.0.tgz", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "lodash.get": { |
| | | "version": "4.4.2", |
| | | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", |
| | | "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", |
| | | "dev": true |
| | | }, |
| | | "lodash.isarguments": { |
| | | "version": "3.1.0", |
| | | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", |
| | |
| | | "version": "1.6.1", |
| | | "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", |
| | | "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", |
| | | "dev": true |
| | | }, |
| | | "lolex": { |
| | | "version": "2.3.2", |
| | | "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.3.2.tgz", |
| | | "integrity": "sha512-A5pN2tkFj7H0dGIAM6MFvHKMJcPnjZsOMvR7ujCjfgW5TbV6H9vb1PgxLtHvjqNZTHsUolz+6/WEO0N1xNx2ng==", |
| | | "dev": true |
| | | }, |
| | | "longest": { |
| | |
| | | "dev": true, |
| | | "requires": { |
| | | "brace-expansion": "1.1.11" |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | "nise": { |
| | | "version": "1.3.2", |
| | | "resolved": "https://registry.npmjs.org/nise/-/nise-1.3.2.tgz", |
| | | "integrity": "sha512-KPKb+wvETBiwb4eTwtR/OsA2+iijXP+VnlSFYJo3EHjm2yjek1NWxHOUQat3i7xNLm1Bm18UA5j5Wor0yO2GtA==", |
| | | "dev": true, |
| | | "requires": { |
| | | "@sinonjs/formatio": "2.0.0", |
| | | "just-extend": "1.1.27", |
| | | "lolex": "2.3.2", |
| | | "path-to-regexp": "1.7.0", |
| | | "text-encoding": "0.6.4" |
| | | }, |
| | | "dependencies": { |
| | | "isarray": { |
| | | "version": "0.0.1", |
| | | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", |
| | | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", |
| | | "dev": true |
| | | }, |
| | | "path-to-regexp": { |
| | | "version": "1.7.0", |
| | | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", |
| | | "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", |
| | | "dev": true, |
| | | "requires": { |
| | | "isarray": "0.0.1" |
| | | } |
| | | } |
| | | } |
| | |
| | | "ret": "0.1.15" |
| | | } |
| | | }, |
| | | "samsam": { |
| | | "version": "1.3.0", |
| | | "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", |
| | | "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", |
| | | "dev": true |
| | | }, |
| | | "sane": { |
| | | "version": "2.5.0", |
| | | "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.0.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", |
| | | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", |
| | | "dev": true |
| | | }, |
| | | "sinon": { |
| | | "version": "4.5.0", |
| | | "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", |
| | | "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", |
| | | "dev": true, |
| | | "requires": { |
| | | "@sinonjs/formatio": "2.0.0", |
| | | "diff": "3.5.0", |
| | | "lodash.get": "4.4.2", |
| | | "lolex": "2.3.2", |
| | | "nise": "1.3.2", |
| | | "supports-color": "5.3.0", |
| | | "type-detect": "4.0.8" |
| | | }, |
| | | "dependencies": { |
| | | "diff": { |
| | | "version": "3.5.0", |
| | | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", |
| | | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", |
| | | "dev": true |
| | | }, |
| | | "type-detect": { |
| | | "version": "4.0.8", |
| | | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", |
| | | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", |
| | | "dev": true |
| | | } |
| | | } |
| | | }, |
| | | "slash": { |
| | | "version": "1.0.0", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "text-encoding": { |
| | | "version": "0.6.4", |
| | | "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", |
| | | "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", |
| | | "dev": true |
| | | }, |
| | | "text-table": { |
| | | "version": "0.2.0", |
| | | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", |
| | |
| | | "@vue/cli-service": "^3.0.0-beta.6", |
| | | "@vue/eslint-config-prettier": "^3.0.0-beta.6", |
| | | "@vue/test-utils": "^1.0.0-beta.10", |
| | | "axios-mock-adapter": "^1.15.0", |
| | | "babel-core": "^7.0.0-0", |
| | | "babel-jest": "^22.0.4", |
| | | "chai": "^4.1.2", |
| | | "jest-junit-reporter": "^1.1.0", |
| | | "node-sass": "^4.7.2", |
| | | "sass-loader": "^6.0.6", |
| | | "sinon": "^4.5.0", |
| | | "vue-template-compiler": "^2.5.13" |
| | | }, |
| | | "browserslist": [ |
| | |
| | | ]; |
| | | export default { |
| | | loadTodos({ commit }) { |
| | | axios |
| | | return axios |
| | | .get(config.todoEndpoint) |
| | | .then(r => r.data) |
| | | .then(todos => { |
| | |
| | | state.todos = []; |
| | | }, |
| | | MARK_TODO_COMPLETED(state, index) { |
| | | console.log('INFO - Clearing all todos'); |
| | | console.log('INFO - Mark todo as completed'); |
| | | state.todos[index].completed = !state.todos[index].completed; |
| | | } |
| | | }; |
New file |
| | |
| | | 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 } |
| | | ]; |
| | | |
| | | describe("load todos", () => { |
| | | it("should call commit to the mutation function twice", (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.calledTwice).toBe(true); |
| | | 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) => { |
| | | 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(); |
| | | }); |
| | | }); |
| | | |
| | | }); |