diff --git a/.versionrc.json b/.versionrc.json
new file mode 100644
index 000000000..25c298f45
--- /dev/null
+++ b/.versionrc.json
@@ -0,0 +1,7 @@
+{
+ "bumpFiles": [
+ "package.json",
+ "backend/package.json",
+ "webapp/package.json"
+ ]
+}
diff --git a/VERSION b/VERSION
deleted file mode 100644
index 0c62199f1..000000000
--- a/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-0.2.1
diff --git a/backend/package.json b/backend/package.json
index e7d00cee3..28e78247f 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "human-connection-backend",
- "version": "0.0.1",
+ "version": "0.2.1",
"description": "GraphQL Backend for Human Connection",
"main": "src/index.js",
"scripts": {
@@ -62,24 +62,24 @@
"linkifyjs": "~2.1.8",
"lodash": "~4.17.14",
"merge-graphql-schemas": "^1.7.6",
- "metascraper": "^5.10.2",
- "metascraper-audio": "^5.9.5",
+ "metascraper": "^5.10.5",
+ "metascraper-audio": "^5.10.3",
"metascraper-author": "^5.10.3",
"metascraper-clearbit-logo": "^5.3.0",
"metascraper-date": "^5.10.3",
- "metascraper-description": "^5.9.5",
- "metascraper-image": "^5.9.5",
+ "metascraper-description": "^5.10.5",
+ "metascraper-image": "^5.10.3",
"metascraper-lang": "^5.10.3",
"metascraper-lang-detector": "^4.10.2",
"metascraper-logo": "^5.10.3",
"metascraper-publisher": "^5.10.3",
- "metascraper-soundcloud": "^5.9.5",
+ "metascraper-soundcloud": "^5.10.5",
"metascraper-title": "^5.10.3",
"metascraper-url": "^5.10.3",
- "metascraper-video": "^5.9.5",
- "metascraper-youtube": "^5.9.5",
+ "metascraper-video": "^5.10.3",
+ "metascraper-youtube": "^5.10.5",
"minimatch": "^3.0.4",
- "mustache": "^3.2.1",
+ "mustache": "^4.0.0",
"neo4j-driver": "^4.0.1",
"neo4j-graphql-js": "^2.11.5",
"neode": "^0.3.7",
@@ -91,7 +91,7 @@
"sanitize-html": "~1.20.1",
"slug": "~2.1.0",
"trunc-html": "~1.1.2",
- "uuid": "~3.3.3",
+ "uuid": "~3.4.0",
"validator": "^12.1.0",
"wait-on": "~3.3.0",
"xregexp": "^4.2.4"
diff --git a/backend/yarn.lock b/backend/yarn.lock
index af96816a1..57bc2e878 100644
--- a/backend/yarn.lock
+++ b/backend/yarn.lock
@@ -1099,10 +1099,10 @@
url-regex "~4.1.1"
video-extensions "~1.1.0"
-"@metascraper/helpers@^5.10.3", "@metascraper/helpers@^5.9.5":
- version "5.10.3"
- resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.10.3.tgz#38abd95ffbcfaf0bd6afbaa85853d4b9aa780c87"
- integrity sha512-ZiDS3aGIK3OSGBMaYORvUVZAVFKmjh1KZaaFnmjIPi6vWPFOrtLK8r4OrkwroJ0IK6Hg6ZiuDjQo63LDcmLqdA==
+"@metascraper/helpers@^5.10.3", "@metascraper/helpers@^5.10.5":
+ version "5.10.5"
+ resolved "https://registry.yarnpkg.com/@metascraper/helpers/-/helpers-5.10.5.tgz#c3558533f30144bacecf9599fd02ac88d839a0cc"
+ integrity sha512-noTBDk3cF3UzKoPrC9/Sye1f9945PVEDju6br7S19YWyUpceEXoDrPF1YaqN37ku62f1s7bul11+Lv/xAYuEVQ==
dependencies:
audio-extensions "0.0.0"
chrono-node "~1.4.2"
@@ -3834,7 +3834,8 @@ extsprintf@^1.2.0:
faker@Marak/faker.js#master:
version "4.1.0"
- resolved "https://codeload.github.com/Marak/faker.js/tar.gz/9fd8d7d37b398842d0784a116a340f7aa6afb89b"
+ uid "3b2fa4aebccee52ae1bafc15d575061fb30c3cf1"
+ resolved "https://codeload.github.com/Marak/faker.js/tar.gz/3b2fa4aebccee52ae1bafc15d575061fb30c3cf1"
fast-deep-equal@^2.0.1:
version "2.0.1"
@@ -5961,12 +5962,12 @@ merge2@^1.3.0:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81"
integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==
-metascraper-audio@^5.9.5:
- version "5.9.5"
- resolved "https://registry.yarnpkg.com/metascraper-audio/-/metascraper-audio-5.9.5.tgz#e20c6a6b2d436a5c84655063655b342dfe4b0432"
- integrity sha512-UBvyF0MQe1NUDPNXYAOuprPhVasXNYVRof65CGeAxyD4tWA4FgMzeUlrtCSkWtR8BA70BsJ7UZgxJ04nfGij2g==
+metascraper-audio@^5.10.3:
+ version "5.10.3"
+ resolved "https://registry.yarnpkg.com/metascraper-audio/-/metascraper-audio-5.10.3.tgz#ce0c3a895f8d45c488c5b5916038f6479c8b0f31"
+ integrity sha512-L4ft5y36MJPZt8Odzbpzm5/iazNaDPHy6EkQtzDYwr7yoOJTrUE+RMkiYRz81HBl/ThRh0Ez4RuTNVNQfNsQZA==
dependencies:
- "@metascraper/helpers" "^5.9.5"
+ "@metascraper/helpers" "^5.10.3"
metascraper-author@^5.10.3:
version "5.10.3"
@@ -5990,19 +5991,19 @@ metascraper-date@^5.10.3:
dependencies:
"@metascraper/helpers" "^5.10.3"
-metascraper-description@^5.9.5:
- version "5.9.5"
- resolved "https://registry.yarnpkg.com/metascraper-description/-/metascraper-description-5.9.5.tgz#1b397ff97eeee963c254416d16f0d13ee7bce319"
- integrity sha512-dZwk/x6dUHKCaSvtBCsTECftCi2ZGoEQbjCyvVXF3aTGz9KRxLMePkWFhrG4UXdBPvlYFwGkHp7scoIDwCXNPQ==
+metascraper-description@^5.10.5:
+ version "5.10.5"
+ resolved "https://registry.yarnpkg.com/metascraper-description/-/metascraper-description-5.10.5.tgz#5db8a3fe05ea19e75058fb55d72aed1d50539aff"
+ integrity sha512-LAEO8s0CkV5B/unBZR8hNpA/b18zedQuE0gP3KusBXQYTm0z+1wsdDdulxhoLmgEJPUjYwnn5LKS0jUME7PXaA==
dependencies:
- "@metascraper/helpers" "^5.9.5"
+ "@metascraper/helpers" "^5.10.5"
-metascraper-image@^5.9.5:
- version "5.9.5"
- resolved "https://registry.yarnpkg.com/metascraper-image/-/metascraper-image-5.9.5.tgz#f3e3aa4ee1a442aa4ef813ceef8150bf10c83fdc"
- integrity sha512-O3v6QQD/gUsUuNpW1zS+1+Rj/MffuilSnq64w8lDnGnO0/8P/MwBIJikcIfq5kTVCwk1tBsHdoKDvQMaE+b1yg==
+metascraper-image@^5.10.3:
+ version "5.10.3"
+ resolved "https://registry.yarnpkg.com/metascraper-image/-/metascraper-image-5.10.3.tgz#853eb464c3b717f8fe4ac8bf31c4b2bc39b83216"
+ integrity sha512-22/WPf9A+jUc/Unvpfursi6FAfo/s71Pq/N9jiTNxBgOjfrUWjrzzw8qUKBxTc7Dwz1mERfDn2B0f/tKdsBAFA==
dependencies:
- "@metascraper/helpers" "^5.9.5"
+ "@metascraper/helpers" "^5.10.3"
metascraper-lang-detector@^4.10.2:
version "4.10.2"
@@ -6034,12 +6035,12 @@ metascraper-publisher@^5.10.3:
dependencies:
"@metascraper/helpers" "^5.10.3"
-metascraper-soundcloud@^5.9.5:
- version "5.9.5"
- resolved "https://registry.yarnpkg.com/metascraper-soundcloud/-/metascraper-soundcloud-5.9.5.tgz#a7dce92dce5c99b1816096e3501655bbf032e8bd"
- integrity sha512-Um7mIu1EW8yQvgstaLUqmk+twt+ZENLD6jtcUmHNAlq3qm0DnmYBrUuLWtZWy6tT93id9ngiJC5FLL3c9wIKVw==
+metascraper-soundcloud@^5.10.5:
+ version "5.10.5"
+ resolved "https://registry.yarnpkg.com/metascraper-soundcloud/-/metascraper-soundcloud-5.10.5.tgz#741e1e1fb127192a295b77bf55a694c6ed510eec"
+ integrity sha512-h3hXX0msfEIozsH06Cca+X29ZLP73+nEbMPPsQWt1nQPDkM0nW+JiJ+Ai9AygqLe28X/KAo5p1T7nWNQD30xNA==
dependencies:
- "@metascraper/helpers" "^5.9.5"
+ "@metascraper/helpers" "^5.10.5"
tldts "~5.6.3"
metascraper-title@^5.10.3:
@@ -6057,30 +6058,30 @@ metascraper-url@^5.10.3:
dependencies:
"@metascraper/helpers" "^5.10.3"
-metascraper-video@^5.9.5:
- version "5.9.5"
- resolved "https://registry.yarnpkg.com/metascraper-video/-/metascraper-video-5.9.5.tgz#707eb9726a96a64ecd8f234a7716c021ccf10f3f"
- integrity sha512-ApYCnVpEPy3+sLHxjMVXUVolHgdEOwpaiH41win4h5HmDX6jz/gWg3ENaHWfRLTn94Gc3c2Fjkqg/dwShRK0/A==
+metascraper-video@^5.10.3:
+ version "5.10.3"
+ resolved "https://registry.yarnpkg.com/metascraper-video/-/metascraper-video-5.10.3.tgz#deb0510b247aff0c9f1777a9d790f0aa55fa2890"
+ integrity sha512-xXGtPWX1RYSEOkLDvIzD20+o4hrSYycN31briMwQkjL7ZcuSfGgILDOCXSnT+WcpEbRNNxAOmODvAxU5qGnqjQ==
dependencies:
- "@metascraper/helpers" "^5.9.5"
+ "@metascraper/helpers" "^5.10.3"
lodash "~4.17.15"
-metascraper-youtube@^5.9.5:
- version "5.9.5"
- resolved "https://registry.yarnpkg.com/metascraper-youtube/-/metascraper-youtube-5.9.5.tgz#0d67c3619cfaf5434fe51bd3d18be6a6f1b31c7f"
- integrity sha512-xC6e6l08/qdqNp7rtyMWPumIh0tCqNhWJkL8F5BjMZCGA3iL2OYh82v26qH/H4GdMZlxSsglNJQTjl8ywcdEmw==
+metascraper-youtube@^5.10.5:
+ version "5.10.5"
+ resolved "https://registry.yarnpkg.com/metascraper-youtube/-/metascraper-youtube-5.10.5.tgz#ce0ff223fc50aaf9572f0e12c33d8eb752aa8201"
+ integrity sha512-Y0pVcQWXghdXb7rNZ/i459bCIFWpt43sc4zkvjn6+tsMYqQC9gn2ZLCy7eF5AWcZ/aReTychO6HPVGWal10oWQ==
dependencies:
- "@metascraper/helpers" "^5.9.5"
+ "@metascraper/helpers" "^5.10.5"
get-video-id "~3.1.4"
is-reachable "~4.0.0"
p-locate "~4.1.0"
-metascraper@^5.10.2:
- version "5.10.2"
- resolved "https://registry.yarnpkg.com/metascraper/-/metascraper-5.10.2.tgz#3e2d5c3f8cbe40a8fbd60319bc648d9efd922d13"
- integrity sha512-h89HZ1jMSzHcp9xAN51/rqOh9oKuY9UBNlar0hdOp9D5v71+e0y4i+lJEly9wJqLAwgVOjRKK5dirTzkj3GdTQ==
+metascraper@^5.10.5:
+ version "5.10.5"
+ resolved "https://registry.yarnpkg.com/metascraper/-/metascraper-5.10.5.tgz#d23a6f76ea0ae3222aa88ed4e93026926bdacbdd"
+ integrity sha512-2ZeEbI9668ByIurvyZC8fmE6PGMgJ3kWWQYtmGUVsfK2USuoq4z1e9SpP9s4+fSRpZNyaAZFrnRUtpu9E9chiQ==
dependencies:
- "@metascraper/helpers" "^5.9.5"
+ "@metascraper/helpers" "^5.10.5"
cheerio "~1.0.0-rc.3"
cheerio-advanced-selectors "~2.0.1"
lodash "~4.17.15"
@@ -6239,10 +6240,10 @@ ms@^2.1.1:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-mustache@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/mustache/-/mustache-3.2.1.tgz#89e78a9d207d78f2799b1e95764a25bf71a28322"
- integrity sha512-RERvMFdLpaFfSRIEe632yDm5nsd0SDKn8hGmcUwswnyiE5mtdZLDybtHAz6hjJhawokF0hXvGLtx9mrQfm6FkA==
+mustache@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.0.0.tgz#7f02465dbb5b435859d154831c032acdfbbefb31"
+ integrity sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA==
mute-stream@0.0.8:
version "0.0.8"
@@ -8697,10 +8698,10 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-uuid@^3.1.0, uuid@^3.3.2, uuid@~3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
- integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
+uuid@^3.1.0, uuid@^3.3.2, uuid@~3.4.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+ integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
v8-compile-cache@^2.0.3:
version "2.1.0"
diff --git a/cypress/support/commands.js b/cypress/support/commands.js
index f52b38faf..13d33964a 100644
--- a/cypress/support/commands.js
+++ b/cypress/support/commands.js
@@ -60,7 +60,6 @@ Cypress.Commands.add("login", ({ email, password }) => {
.as("submitButton")
.click();
cy.get(".iziToast-message").should("contain", "You are logged in!");
- cy.get(".iziToast-close").click();
});
Cypress.Commands.add("logout", (email, password) => {
diff --git a/package.json b/package.json
index 14fd25508..0e8930251 100644
--- a/package.json
+++ b/package.json
@@ -4,6 +4,10 @@
"description": "Fullstack and API tests with cypress and cucumber for Human Connection",
"author": "Human Connection gGmbh",
"license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/Human-Connection/Human-Connection.git"
+ },
"cypress-cucumber-preprocessor": {
"nonGlobalStepDefinitions": true
},
@@ -18,7 +22,7 @@
"cypress:open": "cross-env cypress open --browser chromium",
"cucumber:setup": "cd backend && yarn run dev",
"cucumber": "wait-on tcp:4000 && cucumber-js --require-module @babel/register --exit",
- "version": "auto-changelog -p"
+ "release": "standard-version"
},
"devDependencies": {
"@babel/core": "^7.8.3",
@@ -41,7 +45,8 @@
"neo4j-driver": "^4.0.1",
"neode": "^0.3.7",
"npm-run-all": "^4.1.5",
- "slug": "^2.1.0"
+ "slug": "^2.1.0",
+ "standard-version": "^7.1.0"
},
"resolutions": {
"set-value": "^2.0.1"
diff --git a/scripts/docker_push.sh b/scripts/docker_push.sh
index b342278b9..3c746af92 100755
--- a/scripts/docker_push.sh
+++ b/scripts/docker_push.sh
@@ -2,7 +2,8 @@
ROOT_DIR=$(dirname "$0")/..
# BUILD_COMMIT=${TRAVIS_COMMIT:-$(git rev-parse HEAD)}
-IFS='.' read -r major minor patch < $ROOT_DIR/VERSION
+VERSION=$(jq -r '.version' $ROOT_DIR/package.json)
+IFS='.' read -r major minor patch <<< $VERSION
apps=(nitro-web nitro-backend neo4j maintenance)
tags=($major $major.$minor $major.$minor.$patch)
diff --git a/scripts/github_release.sh b/scripts/github_release.sh
index 81e63d8ff..93f50289d 100755
--- a/scripts/github_release.sh
+++ b/scripts/github_release.sh
@@ -2,7 +2,7 @@
ROOT_DIR=$(dirname "$0")/..
RELEASE_DIR="${ROOT_DIR}/release"
-VERSION=$(<$ROOT_DIR/VERSION)
+VERSION=$(jq -r ".version" $ROOT_DIR/package.json)
# mkdir -p $RELEASE_DIR
@@ -13,4 +13,4 @@ VERSION=$(<$ROOT_DIR/VERSION)
# docker image save "humanconnection/${app}:latest" | gzip > "${RELEASE_DIR}/${app}.${VERSION}.tar.gz"
# done
-ghr -soft "${VERSION}"
+ghr -c "${VERSION}" "${VERSION}"
diff --git a/webapp/components/CategoriesSelect/CategoriesSelect.spec.js b/webapp/components/CategoriesSelect/CategoriesSelect.spec.js
index b633e5811..82f5e61eb 100644
--- a/webapp/components/CategoriesSelect/CategoriesSelect.spec.js
+++ b/webapp/components/CategoriesSelect/CategoriesSelect.spec.js
@@ -1,5 +1,6 @@
import { mount } from '@vue/test-utils'
import CategoriesSelect from './CategoriesSelect'
+import Vue from 'vue'
const localVue = global.localVue
@@ -55,8 +56,9 @@ describe('CategoriesSelect.vue', () => {
})
describe('toggleCategory', () => {
- beforeEach(() => {
+ beforeEach(async () => {
wrapper.vm.categories = categories
+ await Vue.nextTick()
democracyAndPolitics = wrapper.findAll('button').at(0)
democracyAndPolitics.trigger('click')
})
diff --git a/webapp/components/CommentForm/CommentForm.spec.js b/webapp/components/CommentForm/CommentForm.spec.js
index 5dde84008..420ab26fb 100644
--- a/webapp/components/CommentForm/CommentForm.spec.js
+++ b/webapp/components/CommentForm/CommentForm.spec.js
@@ -1,6 +1,6 @@
import { mount } from '@vue/test-utils'
import CommentForm from './CommentForm'
-
+import Vue from 'vue'
import MutationObserver from 'mutation-observer'
global.MutationObserver = MutationObserver
@@ -74,6 +74,7 @@ describe('CommentForm.vue', () => {
it('calls `clear` method when the cancel button is clicked', async () => {
wrapper.vm.updateEditorContent('ok')
+ await Vue.nextTick()
await wrapper.find('[data-test="cancel-button"]').trigger('submit')
expect(cancelMethodSpy).toHaveBeenCalledTimes(1)
})
diff --git a/webapp/components/ContributionForm/ContributionForm.spec.js b/webapp/components/ContributionForm/ContributionForm.spec.js
index 7bcaa8212..b2ce7d530 100644
--- a/webapp/components/ContributionForm/ContributionForm.spec.js
+++ b/webapp/components/ContributionForm/ContributionForm.spec.js
@@ -1,6 +1,7 @@
import { config, mount } from '@vue/test-utils'
import ContributionForm from './ContributionForm.vue'
+import Vue from 'vue'
import Vuex from 'vuex'
import PostMutations from '~/graphql/PostMutations.js'
import CategoriesSelect from '~/components/CategoriesSelect/CategoriesSelect'
@@ -147,31 +148,31 @@ describe('ContributionForm.vue', () => {
dataPrivacyButton.trigger('click')
})
- it('title should not be empty', async () => {
+ it('title cannot be empty', async () => {
postTitleInput.setValue('')
wrapper.find('form').trigger('submit')
expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
})
- it('title should not be too long', async () => {
+ it('title cannot be too long', async () => {
postTitleInput.setValue(postTitleTooLong)
wrapper.find('form').trigger('submit')
expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
})
- it('title should not be too short', async () => {
+ it('title cannot be too short', async () => {
postTitleInput.setValue(postTitleTooShort)
wrapper.find('form').trigger('submit')
expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
})
- it('content should not be empty', async () => {
+ it('content cannot be empty', async () => {
await wrapper.vm.updateEditorContent('')
await wrapper.find('form').trigger('submit')
expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
})
- it('should have at least one category', async () => {
+ it('has at least one category', async () => {
dataPrivacyButton = await wrapper
.find(CategoriesSelect)
.find('[data-test="category-buttons-cat12"]')
@@ -180,8 +181,9 @@ describe('ContributionForm.vue', () => {
expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
})
- it('should have not have more than three categories', async () => {
+ it('has no more than three categories', async () => {
wrapper.vm.form.categoryIds = ['cat4', 'cat9', 'cat15', 'cat27']
+ await Vue.nextTick()
wrapper.find('form').trigger('submit')
expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
})
@@ -209,10 +211,12 @@ describe('ContributionForm.vue', () => {
wrapper.find(CategoriesSelect).setData({ categories })
englishLanguage = wrapper.findAll('li').filter(language => language.text() === 'English')
englishLanguage.trigger('click')
+ await Vue.nextTick()
dataPrivacyButton = await wrapper
.find(CategoriesSelect)
.find('[data-test="category-buttons-cat12"]')
dataPrivacyButton.trigger('click')
+ await Vue.nextTick()
})
it('creates a post with valid title, content, and at least one category', async () => {
@@ -278,10 +282,12 @@ describe('ContributionForm.vue', () => {
wrapper.find(CategoriesSelect).setData({ categories })
englishLanguage = wrapper.findAll('li').filter(language => language.text() === 'English')
englishLanguage.trigger('click')
+ await Vue.nextTick()
dataPrivacyButton = await wrapper
.find(CategoriesSelect)
.find('[data-test="category-buttons-cat12"]')
dataPrivacyButton.trigger('click')
+ await Vue.nextTick()
})
it('shows an error toaster when apollo mutation rejects', async () => {
@@ -370,6 +376,7 @@ describe('ContributionForm.vue', () => {
it('supports updating categories', async () => {
expectedParams.variables.categoryIds.push('cat3')
wrapper.find(CategoriesSelect).setData({ categories })
+ await Vue.nextTick()
const healthWellbeingButton = await wrapper
.find(CategoriesSelect)
.find('[data-test="category-buttons-cat3"]')
diff --git a/webapp/components/DeleteData/DeleteData.spec.js b/webapp/components/DeleteData/DeleteData.spec.js
index 484fd5492..3529c1b7b 100644
--- a/webapp/components/DeleteData/DeleteData.spec.js
+++ b/webapp/components/DeleteData/DeleteData.spec.js
@@ -1,6 +1,6 @@
import { mount } from '@vue/test-utils'
import DeleteData from './DeleteData.vue'
-
+import Vue from 'vue'
import Vuex from 'vuex'
const localVue = global.localVue
@@ -168,6 +168,7 @@ describe('DeleteData.vue', () => {
it('shows an error toaster when the mutation rejects', async () => {
enableDeletionInput = wrapper.find('.enable-deletion-input input')
enableDeletionInput.setValue(deleteAccountName)
+ await Vue.nextTick()
deleteAccountBtn = wrapper.find('[data-test="delete-button"]')
await deleteAccountBtn.trigger('click')
// second submission causes mutation to reject
diff --git a/webapp/components/MasonryGrid/MasonryGrid.spec.js b/webapp/components/MasonryGrid/MasonryGrid.spec.js
index b42b9b221..00e7859d8 100644
--- a/webapp/components/MasonryGrid/MasonryGrid.spec.js
+++ b/webapp/components/MasonryGrid/MasonryGrid.spec.js
@@ -1,5 +1,5 @@
import { mount } from '@vue/test-utils'
-
+import Vue from 'vue'
import MasonryGrid from './MasonryGrid'
const localVue = global.localVue
@@ -13,29 +13,29 @@ describe('MasonryGrid', () => {
masonryGridItem = wrapper.vm.$children[0]
})
- it('adds the "reset-grid-height" class when itemsCalculating is more than 0', () => {
+ it('adds the "reset-grid-height" class when itemsCalculating is more than 0', async () => {
wrapper.setData({ itemsCalculating: 1 })
-
+ await Vue.nextTick()
expect(wrapper.classes()).toContain('reset-grid-height')
})
- it('removes the "reset-grid-height" class when itemsCalculating is 0', () => {
+ it('removes the "reset-grid-height" class when itemsCalculating is 0', async () => {
wrapper.setData({ itemsCalculating: 0 })
-
+ await Vue.nextTick()
expect(wrapper.classes()).not.toContain('reset-grid-height')
})
- it('adds 1 to itemsCalculating when a child emits "calculating-item-height"', () => {
+ it('adds 1 to itemsCalculating when a child emits "calculating-item-height"', async () => {
wrapper.setData({ itemsCalculating: 0 })
masonryGridItem.$emit('calculating-item-height')
-
+ await Vue.nextTick()
expect(wrapper.vm.itemsCalculating).toBe(1)
})
- it('subtracts 1 from itemsCalculating when a child emits "finished-calculating-item-height"', () => {
+ it('subtracts 1 from itemsCalculating when a child emits "finished-calculating-item-height"', async () => {
wrapper.setData({ itemsCalculating: 2 })
masonryGridItem.$emit('finished-calculating-item-height')
-
+ await Vue.nextTick()
expect(wrapper.vm.itemsCalculating).toBe(1)
})
})
diff --git a/webapp/components/Modal.spec.js b/webapp/components/Modal.spec.js
index 2dae4285a..c309d5684 100644
--- a/webapp/components/Modal.spec.js
+++ b/webapp/components/Modal.spec.js
@@ -5,6 +5,7 @@ import DisableModal from './Modal/DisableModal.vue'
import ReportModal from './Modal/ReportModal.vue'
import Vuex from 'vuex'
import { getters, mutations } from '../store/modal'
+import Vue from 'vue'
const localVue = global.localVue
@@ -89,8 +90,9 @@ describe('Modal.vue', () => {
})
describe('child component emits close', () => {
- it('turns empty', () => {
+ it('turns empty', async () => {
wrapper.find(DisableModal).vm.$emit('close')
+ await Vue.nextTick()
expect(wrapper.contains(DisableModal)).toBe(false)
})
})
diff --git a/webapp/components/Modal/ReportModal.spec.js b/webapp/components/Modal/ReportModal.spec.js
index b151f3c7b..de95cce99 100644
--- a/webapp/components/Modal/ReportModal.spec.js
+++ b/webapp/components/Modal/ReportModal.spec.js
@@ -1,5 +1,6 @@
import { config, shallowMount, mount } from '@vue/test-utils'
import ReportModal from './ReportModal.vue'
+import Vue from 'vue'
const localVue = global.localVue
@@ -151,9 +152,11 @@ describe('ReportModal.vue', () => {
})
describe('click confirm button', () => {
- beforeEach(() => {
+ beforeEach(async () => {
wrapper.find('.ds-radio-option-label').trigger('click')
+ await Vue.nextTick()
wrapper.find('button.confirm').trigger('click')
+ await Vue.nextTick()
})
it('calls report mutation', () => {
diff --git a/webapp/components/PageFooter/PageFooter.vue b/webapp/components/PageFooter/PageFooter.vue
index e01aae817..fc497bdf5 100644
--- a/webapp/components/PageFooter/PageFooter.vue
+++ b/webapp/components/PageFooter/PageFooter.vue
@@ -18,12 +18,23 @@
{{ $t('site.faq') }}
-
-
- {{ $t('site.changelog') }}
+
+ {{ version }}
+
+