diff options
author | Devlin Junker <devlin.junker@gmail.com> | 2022-10-06 21:50:25 -0700 |
---|---|---|
committer | Benjamin Brahmer <info@b-brahmer.de> | 2022-11-02 11:27:20 +0100 |
commit | 6557bb28732e03f3831b9c4ebce64346ce9695f5 (patch) | |
tree | 2a3c3a5f6f97fe50c91ea6a6a7112068d856a71a | |
parent | 902ff04ac2fabb47eed1087927ab2acc75693cd0 (diff) |
test file for each component
Signed-off-by: Devlin Junker <devlin.junker@gmail.com>
-rw-r--r-- | package-lock.json | 221 | ||||
-rw-r--r-- | package.json | 6 | ||||
-rw-r--r-- | src/components/AddFeed.vue | 8 | ||||
-rw-r--r-- | src/components/Explore.vue | 6 | ||||
-rw-r--r-- | tests/javascript/unit/components/AddFeed.spec.ts | 15 | ||||
-rw-r--r-- | tests/javascript/unit/components/Explore.spec.ts | 21 | ||||
-rw-r--r-- | tests/javascript/unit/components/Sidebar.spec.ts | 8 |
7 files changed, 272 insertions, 13 deletions
diff --git a/package-lock.json b/package-lock.json index 01799e943..c81eee572 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "@nextcloud/stylelint-config": "^2.1.2", "@nextcloud/webpack-vue-config": "^5.1.0", "@types/jest": "^29.1.1", + "@types/sinon": "^10.0.13", "@types/webpack-env": "^1.17.0", "@typescript-eslint/eslint-plugin": "^5.27.1", "@typescript-eslint/parser": "^5.27.1", @@ -65,6 +66,7 @@ "postcss": "^8.4.14", "postcss-html": "^1.4.1", "sass-loader": "^13.0.2", + "sinon": "^14.0.1", "style-loader": "^3.3.1", "stylelint": "^14.8.4", "stylelint-config-recommended-scss": "^7.0.0", @@ -3323,6 +3325,23 @@ "@sinonjs/commons": "^1.7.0" } }, + "node_modules/@sinonjs/samsam": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", + "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -3644,6 +3663,21 @@ "@types/node": "*" } }, + "node_modules/@types/sinon": { + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", + "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", + "dev": true, + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, "node_modules/@types/sockjs": { "version": "0.3.33", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", @@ -6747,6 +6781,15 @@ "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", "dev": true }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diff-sequences": { "version": "29.0.0", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz", @@ -12513,6 +12556,12 @@ "node": ">=0.6.0" } }, + "node_modules/just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, "node_modules/karma": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", @@ -13363,6 +13412,34 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "node_modules/nise": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", + "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": ">=5", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + } + }, + "node_modules/nise/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "node_modules/nise/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "dependencies": { + "isarray": "0.0.1" + } + }, "node_modules/node-addon-api": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", @@ -16046,6 +16123,45 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/sinon": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.1.tgz", + "integrity": "sha512-JhJ0jCiyBWVAHDS+YSjgEbDn7Wgz9iIjA1/RK+eseJN0vAAWIWiXBdrnb92ELPyjsfreCYntD1ORtLSfIrlvSQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^6.1.1", + "diff": "^5.0.0", + "nise": "^5.1.1", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -21495,6 +21611,23 @@ "@sinonjs/commons": "^1.7.0" } }, + "@sinonjs/samsam": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-6.1.1.tgz", + "integrity": "sha512-cZ7rKJTLiE7u7Wi/v9Hc2fs3Ucc3jrWeMgPHbbTCeVAB2S0wOBbYlkJVeNSL04i7fdhT8wIbDq1zhC/PXTD2SA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.6.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "dev": true + }, "@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -21813,6 +21946,21 @@ "@types/node": "*" } }, + "@types/sinon": { + "version": "10.0.13", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", + "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", + "dev": true, + "requires": { + "@types/sinonjs__fake-timers": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, "@types/sockjs": { "version": "0.3.33", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", @@ -24283,6 +24431,12 @@ "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", "dev": true }, + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true + }, "diff-sequences": { "version": "29.0.0", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz", @@ -28605,6 +28759,12 @@ "verror": "1.10.0" } }, + "just-extend": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", + "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "dev": true + }, "karma": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", @@ -29284,6 +29444,36 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "nise": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.1.tgz", + "integrity": "sha512-yr5kW2THW1AkxVmCnKEh4nbYkJdB3I7LUkiUgOvEkOp414mc2UMaHMA7pjq1nYowhdoJZGwEKGaQVbxfpWj10A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": ">=5", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "path-to-regexp": "^1.7.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + } + } + }, "node-addon-api": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", @@ -31326,6 +31516,37 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "sinon": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-14.0.1.tgz", + "integrity": "sha512-JhJ0jCiyBWVAHDS+YSjgEbDn7Wgz9iIjA1/RK+eseJN0vAAWIWiXBdrnb92ELPyjsfreCYntD1ORtLSfIrlvSQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.3", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^6.1.1", + "diff": "^5.0.0", + "nise": "^5.1.1", + "supports-color": "^7.2.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", diff --git a/package.json b/package.json index bb98953a6..1522cb5ae 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "@nextcloud/stylelint-config": "^2.1.2", "@nextcloud/webpack-vue-config": "^5.1.0", "@types/jest": "^29.1.1", + "@types/sinon": "^10.0.13", "@types/webpack-env": "^1.17.0", "@typescript-eslint/eslint-plugin": "^5.27.1", "@typescript-eslint/parser": "^5.27.1", @@ -98,6 +99,7 @@ "postcss": "^8.4.14", "postcss-html": "^1.4.1", "sass-loader": "^13.0.2", + "sinon": "^14.0.1", "style-loader": "^3.3.1", "stylelint": "^14.8.4", "stylelint-config-recommended-scss": "^7.0.0", @@ -131,8 +133,8 @@ "^.+\\.ts?$": "ts-jest" }, "transformIgnorePatterns": [ - "/node_modules/(?!(@nextcloud)|(vue-material-design-icons))" - ], + "/node_modules/(?!(@nextcloud)|(vue-material-design-icons))" + ], "snapshotSerializers": [ "jest-serializer-vue" ], diff --git a/src/components/AddFeed.vue b/src/components/AddFeed.vue index c9e176235..ff872a0de 100644 --- a/src/components/AddFeed.vue +++ b/src/components/AddFeed.vue @@ -29,11 +29,11 @@ {{ t("news", "New folder") }}? </CheckboxRadioSwitch> - <Multiselect v-if="!createNewFolder" + <!--Multiselect v-if="!createNewFolder" v-model="folder" :options="folders" track-by="id" - label="name" /> + label="name" /--> <!-- add a folder --> <input v-if="createNewFolder" @@ -110,7 +110,7 @@ import Vue from 'vue' import Modal from '@nextcloud/vue/dist/Components/Modal' import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' import Button from '@nextcloud/vue/dist/Components/Button' -import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' +// import Multiselect from '@nextcloud/vue/dist/Components/Multiselect' import { Folder } from '../types/Folder.vue' import { Feed } from '../types/Feed.vue' @@ -129,7 +129,7 @@ export default Vue.extend({ Modal, CheckboxRadioSwitch, Button, - Multiselect, + // Multiselect, }, props: { feed: { diff --git a/src/components/Explore.vue b/src/components/Explore.vue index 214d55c90..67d67272c 100644 --- a/src/components/Explore.vue +++ b/src/components/Explore.vue @@ -36,7 +36,7 @@ import Vue from 'vue' import Button from '@nextcloud/vue/dist/Components/Button' import axios from '@nextcloud/axios' import AddFeed from './AddFeed.vue' -import { generateUrl } from '@nextcloud/router' +import * as router from '@nextcloud/router' import { ExploreSite } from '../types/ExploreSite.vue' import { Feed } from '../types/Feed.vue' @@ -62,9 +62,9 @@ const ExploreComponent = Vue.extend({ methods: { async sites() { - const settings = await axios.get(generateUrl('/apps/news/settings')) + const settings = await axios.get(router.generateUrl('/apps/news/settings')) - const exploreUrl = settings.data.settings.exploreUrl + 'feeds.en.json' + const exploreUrl = settings.data.settings?.exploreUrl + 'feeds.en.json' const explore = await axios.get(exploreUrl) Object.keys(explore.data).forEach((key) => diff --git a/tests/javascript/unit/components/AddFeed.spec.ts b/tests/javascript/unit/components/AddFeed.spec.ts new file mode 100644 index 000000000..224a4287c --- /dev/null +++ b/tests/javascript/unit/components/AddFeed.spec.ts @@ -0,0 +1,15 @@ +import AddFeed from 'Components/AddFeed.vue' + +import { store, localVue } from '../setupStore' + +import { shallowMount } from '@vue/test-utils' + +describe('AddFeed.vue', () => { + 'use strict' + + it('should initialize without showing createNewFolder', () => { + const wrapper = shallowMount(AddFeed, { localVue, store }) + + expect(wrapper.vm.$data.createNewFolder).toBeFalsy + }); +});
\ No newline at end of file diff --git a/tests/javascript/unit/components/Explore.spec.ts b/tests/javascript/unit/components/Explore.spec.ts new file mode 100644 index 000000000..0ac31835b --- /dev/null +++ b/tests/javascript/unit/components/Explore.spec.ts @@ -0,0 +1,21 @@ +import Explore from 'Components/Explore.vue' +import sinon from 'sinon'; +import axios from '@nextcloud/axios' +import * as router from '@nextcloud/router' + +import { store, localVue } from '../setupStore' + +import { shallowMount } from '@vue/test-utils' + +describe('Explore.vue', () => { + 'use strict' + + it('should initialize without showing AddFeed Component', () => { + sinon.stub(axios, 'get').resolves({ data: { } }); + sinon.stub(router, 'generateUrl').returns(''); + + const wrapper = shallowMount(Explore, { localVue, store }) + + expect(wrapper.vm.$data.showAddFeed).toBeFalsy + }); +});
\ No newline at end of file diff --git a/tests/javascript/unit/components/Sidebar.spec.ts b/tests/javascript/unit/components/Sidebar.spec.ts index b8c0ab1fc..d71e8bcb2 100644 --- a/tests/javascript/unit/components/Sidebar.spec.ts +++ b/tests/javascript/unit/components/Sidebar.spec.ts @@ -13,11 +13,11 @@ describe('Sidebar.vue', () => { expect(wrapper.vm.$data.showAddFeed).toBeFalsy }); - it('should dispatch message to store with folder name to create new folder'); + it('should dispatch message to store with folder name to create new folder', () => {}); - it('should dispatch message to store with folder object on delete folder') + it('should dispatch message to store with folder object on delete folder', () => {}) - it('should set showAddFeed to true') + it('should set showAddFeed to true', () => {}) - it('should set showAddFeed to false') + it('should set showAddFeed to false', () => {}) }) |