From 0a35e63897ebfdbbb60838d2538d555f97a32f30 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 5 Mar 2017 19:07:48 +0100 Subject: [PATCH] Client: Guild page and mix changes (#8533) * update deps * add guilds page * improve karma conf, add tests for actions --- npm-shrinkwrap.json | 366 +++++++----------- package.json | 1 + test/client/unit/index.js | 13 +- test/client/unit/karma.conf.js | 2 +- .../specs/filters/{floor.spec.js => floor.js} | 0 .../specs/filters/{round.spec.js => round.js} | 0 .../{deepFreeze.spec.js => deepFreeze.js} | 0 ...psUtilities.spec.js => groupsUtilities.js} | 0 .../specs/plugins/{i18n.spec.js => i18n.js} | 0 .../client/unit/specs/store/actions/guilds.js | 17 + test/client/unit/specs/store/actions/tasks.js | 14 + test/client/unit/specs/store/actions/user.js | 14 + .../getters/userGems.js} | 0 .../specs/{store.spec.js => store/store.js} | 0 .../assets/less/semantic-ui/semantic.less | 2 +- .../guilds/discovery/publicGuildItem.vue | 3 +- .../client/components/social/guilds/guild.vue | 68 ++++ website/client/router.js | 7 + website/client/store/actions/guilds.js | 2 +- 19 files changed, 282 insertions(+), 227 deletions(-) rename test/client/unit/specs/filters/{floor.spec.js => floor.js} (100%) rename test/client/unit/specs/filters/{round.spec.js => round.js} (100%) rename test/client/unit/specs/libs/{deepFreeze.spec.js => deepFreeze.js} (100%) rename test/client/unit/specs/mixins/{groupsUtilities.spec.js => groupsUtilities.js} (100%) rename test/client/unit/specs/plugins/{i18n.spec.js => i18n.js} (100%) create mode 100644 test/client/unit/specs/store/actions/guilds.js create mode 100644 test/client/unit/specs/store/actions/tasks.js create mode 100644 test/client/unit/specs/store/actions/user.js rename test/client/unit/specs/{getters/userGems.spec.js => store/getters/userGems.js} (100%) rename test/client/unit/specs/{store.spec.js => store/store.js} (100%) create mode 100644 website/client/components/social/guilds/guild.vue diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index a889fb83c2..4a51bbbe85 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -18,21 +18,14 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz" }, "acorn": { - "version": "1.2.2", - "from": "acorn@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz" + "version": "4.0.11", + "from": "acorn@>=4.0.3 <5.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz" }, "acorn-dynamic-import": { - "version": "2.0.1", + "version": "2.0.2", "from": "acorn-dynamic-import@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.1.tgz", - "dependencies": { - "acorn": { - "version": "4.0.11", - "from": "acorn@>=4.0.3 <5.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz" - } - } + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz" }, "acorn-globals": { "version": "1.0.9", @@ -83,16 +76,9 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz" }, "ajv": { - "version": "4.11.3", - "from": "ajv@>=4.11.2 <5.0.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.3.tgz", - "dependencies": { - "json-stable-stringify": { - "version": "1.0.1", - "from": "json-stable-stringify@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" - } - } + "version": "4.11.4", + "from": "ajv@>=4.9.1 <5.0.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.4.tgz" }, "ajv-keywords": { "version": "1.5.1", @@ -462,9 +448,9 @@ "dev": true }, "astw": { - "version": "2.0.0", + "version": "2.2.0", "from": "astw@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/astw/-/astw-2.0.0.tgz" + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz" }, "async": { "version": "1.5.2", @@ -969,9 +955,9 @@ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" }, "bluebird": { - "version": "3.4.7", + "version": "3.5.0", "from": "bluebird@>=3.3.5 <4.0.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz" }, "bn.js": { "version": "4.11.6", @@ -979,14 +965,14 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" }, "body-parser": { - "version": "1.16.1", + "version": "1.17.0", "from": "body-parser@>=1.15.0 <2.0.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.16.1.tgz", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.0.tgz", "dependencies": { "qs": { - "version": "6.2.1", - "from": "qs@6.2.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz" + "version": "6.3.1", + "from": "qs@6.3.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.1.tgz" } } }, @@ -1532,9 +1518,9 @@ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz" }, "browserslist": { - "version": "1.7.5", + "version": "1.7.6", "from": "browserslist@>=1.7.5 <2.0.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.5.tgz" + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.6.tgz" }, "bson": { "version": "1.0.4", @@ -1659,9 +1645,9 @@ } }, "caniuse-db": { - "version": "1.0.30000628", + "version": "1.0.30000632", "from": "caniuse-db@>=1.0.30000628 <2.0.0", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000628.tgz" + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000632.tgz" }, "capture-stack-trace": { "version": "1.0.0", @@ -2314,27 +2300,15 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz" }, "cross-env": { - "version": "3.1.4", + "version": "3.2.3", "from": "cross-env@>=3.1.4 <4.0.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-3.1.4.tgz", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-3.2.3.tgz", "dev": true, "dependencies": { - "cross-spawn": { - "version": "3.0.1", - "from": "cross-spawn@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "dev": true - }, - "lru-cache": { - "version": "4.0.2", - "from": "lru-cache@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz", - "dev": true - }, - "which": { - "version": "1.2.12", - "from": "which@>=1.2.9 <2.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.12.tgz", + "is-windows": { + "version": "1.0.0", + "from": "is-windows@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.0.tgz", "dev": true } } @@ -2482,15 +2456,10 @@ "from": "cwise@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/cwise/-/cwise-1.0.9.tgz", "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, "uglify-js": { - "version": "2.8.0", + "version": "2.8.7", "from": "uglify-js@>=2.6.0 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.0.tgz" + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.7.tgz" } } }, @@ -2625,11 +2594,6 @@ "from": "isarray@0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, - "json-stable-stringify": { - "version": "1.0.1", - "from": "json-stable-stringify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" - }, "ordered-read-streams": { "version": "0.3.0", "from": "ordered-read-streams@>=0.3.0 <0.4.0", @@ -2986,16 +2950,9 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz" }, "detective": { - "version": "4.3.2", + "version": "4.5.0", "from": "detective@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-4.3.2.tgz", - "dependencies": { - "acorn": { - "version": "3.3.0", - "from": "acorn@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" - } - } + "resolved": "https://registry.npmjs.org/detective/-/detective-4.5.0.tgz" }, "di": { "version": "0.0.1", @@ -3137,11 +3094,6 @@ "from": "isarray@0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, - "json-stable-stringify": { - "version": "1.0.1", - "from": "json-stable-stringify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" - }, "ordered-read-streams": { "version": "0.3.0", "from": "ordered-read-streams@>=0.3.0 <0.4.0", @@ -3234,9 +3186,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.2.4", - "from": "electron-to-chromium@>=1.2.3 <2.0.0", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.2.4.tgz" + "version": "1.2.5", + "from": "electron-to-chromium@>=1.2.5 <2.0.0", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.2.5.tgz" }, "elliptic": { "version": "6.4.0", @@ -3327,9 +3279,9 @@ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz" }, "error-ex": { - "version": "1.3.0", + "version": "1.3.1", "from": "error-ex@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz" + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz" }, "es5-ext": { "version": "0.10.12", @@ -3433,9 +3385,9 @@ } }, "eslint": { - "version": "3.16.1", + "version": "3.17.0", "from": "eslint@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.16.1.tgz", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.17.0.tgz", "dev": true, "dependencies": { "cli-cursor": { @@ -3456,12 +3408,6 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", "dev": true }, - "json-stable-stringify": { - "version": "1.0.1", - "from": "json-stable-stringify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "dev": true - }, "mute-stream": { "version": "0.0.5", "from": "mute-stream@0.0.5", @@ -3759,6 +3705,11 @@ "from": "express-validator@>=2.18.0 <3.0.0", "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-2.21.0.tgz", "dependencies": { + "bluebird": { + "version": "3.4.7", + "from": "bluebird@>=3.4.0 <3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz" + }, "lodash": { "version": "4.16.6", "from": "lodash@>=4.16.0 <4.17.0", @@ -3787,9 +3738,9 @@ "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz" }, "extract-text-webpack-plugin": { - "version": "2.0.0", + "version": "2.1.0", "from": "extract-text-webpack-plugin@>=2.0.0-rc.3 <3.0.0", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.0.0.tgz", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.0.tgz", "dependencies": { "async": { "version": "2.1.5", @@ -3845,6 +3796,11 @@ "from": "falafel@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/falafel/-/falafel-1.2.0.tgz", "dependencies": { + "acorn": { + "version": "1.2.2", + "from": "acorn@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz" + }, "isarray": { "version": "0.0.1", "from": "isarray@0.0.1", @@ -5374,11 +5330,6 @@ "from": "ansi-styles@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz" }, - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, "chalk": { "version": "0.5.1", "from": "chalk@>=0.5.1 <0.6.0", @@ -5452,9 +5403,9 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" }, "uglify-js": { - "version": "2.8.0", + "version": "2.8.7", "from": "uglify-js@>=2.4.0 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.0.tgz" + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.7.tgz" } } }, @@ -5734,11 +5685,6 @@ "from": "gulp-sourcemaps@>=1.6.0 <2.0.0", "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.11.1.tgz", "dependencies": { - "acorn": { - "version": "4.0.11", - "from": "acorn@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz" - }, "vinyl": { "version": "1.2.0", "from": "vinyl@>=1.0.0 <2.0.0", @@ -5960,6 +5906,11 @@ "from": "handlebars-layouts@>=1.1.0 <1.2.0", "resolved": "https://registry.npmjs.org/handlebars-layouts/-/handlebars-layouts-1.1.0.tgz" }, + "har-schema": { + "version": "1.0.5", + "from": "har-schema@>=1.0.5 <2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz" + }, "har-validator": { "version": "2.0.6", "from": "har-validator@>=2.0.6 <2.1.0", @@ -6091,20 +6042,15 @@ "from": "html-minifier@>=3.2.3 <4.0.0", "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.4.0.tgz", "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, "clean-css": { "version": "4.0.8", "from": "clean-css@>=4.0.0 <4.1.0", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.0.8.tgz" }, "uglify-js": { - "version": "2.8.0", + "version": "2.8.7", "from": "uglify-js@>=2.8.0 <2.9.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.0.tgz" + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.7.tgz" } } }, @@ -6141,9 +6087,9 @@ } }, "http-errors": { - "version": "1.5.1", - "from": "http-errors@>=1.5.1 <1.6.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz" + "version": "1.6.1", + "from": "http-errors@>=1.6.1 <1.7.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz" }, "http-proxy": { "version": "1.16.2", @@ -6158,9 +6104,9 @@ "dev": true }, "http-proxy-middleware": { - "version": "0.17.3", + "version": "0.17.4", "from": "http-proxy-middleware@>=0.17.0 <0.18.0", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.3.tgz", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", "dev": true, "dependencies": { "is-extglob": { @@ -6302,11 +6248,6 @@ "from": "isarray@0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, - "json-stable-stringify": { - "version": "1.0.1", - "from": "json-stable-stringify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" - }, "ordered-read-streams": { "version": "0.3.0", "from": "ordered-read-streams@>=0.3.0 <0.4.0", @@ -6645,9 +6586,9 @@ "resolved": "https://registry.npmjs.org/iota-array/-/iota-array-1.0.0.tgz" }, "ip": { - "version": "1.1.4", + "version": "1.1.5", "from": "ip@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.4.tgz" + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz" }, "ip-regex": { "version": "1.0.3", @@ -6713,14 +6654,7 @@ "is-expression": { "version": "3.0.0", "from": "is-expression@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", - "dependencies": { - "acorn": { - "version": "4.0.11", - "from": "acorn@>=4.0.2 <4.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz" - } - } + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz" }, "is-extendable": { "version": "0.1.1", @@ -7043,19 +6977,12 @@ "dev": true }, "uglify-js": { - "version": "2.8.0", + "version": "2.8.7", "from": "uglify-js@>=2.6.0 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.0.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.7.tgz", "dev": true, "optional": true, "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "dev": true, - "optional": true - }, "source-map": { "version": "0.5.6", "from": "source-map@~0.5.1", @@ -7104,11 +7031,6 @@ "from": "jade@>=1.11.0 <1.12.0", "resolved": "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz", "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, "clean-css": { "version": "3.4.25", "from": "clean-css@>=3.1.9 <4.0.0", @@ -7132,9 +7054,9 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz" }, "uglify-js": { - "version": "2.8.0", + "version": "2.8.7", "from": "uglify-js@>=2.4.19 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.0.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.7.tgz", "dependencies": { "source-map": { "version": "0.5.6", @@ -7225,9 +7147,9 @@ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz" }, "js-yaml": { - "version": "3.8.1", + "version": "3.8.2", "from": "js-yaml@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.1.tgz", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.2.tgz", "dependencies": { "esprima": { "version": "3.1.3", @@ -7268,9 +7190,9 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz" }, "json-stable-stringify": { - "version": "0.0.1", - "from": "json-stable-stringify@>=0.0.0 <0.1.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz" + "version": "1.0.1", + "from": "json-stable-stringify@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" }, "json-stringify-safe": { "version": "5.0.1", @@ -7493,20 +7415,11 @@ "dev": true }, "uglify-js": { - "version": "2.8.0", + "version": "2.8.7", "from": "uglify-js@>=2.6.0 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.0.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.7.tgz", "dev": true, - "optional": true, - "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "dev": true, - "optional": true - } - } + "optional": true }, "which": { "version": "1.2.12", @@ -7554,6 +7467,12 @@ "resolved": "https://registry.npmjs.org/karma-sinon-chai/-/karma-sinon-chai-1.2.4.tgz", "dev": true }, + "karma-sinon-stub-promise": { + "version": "1.0.0", + "from": "karma-sinon-stub-promise@latest", + "resolved": "https://registry.npmjs.org/karma-sinon-stub-promise/-/karma-sinon-stub-promise-1.0.0.tgz", + "dev": true + }, "karma-sourcemap-loader": { "version": "0.3.7", "from": "karma-sourcemap-loader@>=0.3.7 <0.4.0", @@ -7741,12 +7660,6 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "dev": true }, - "json-stable-stringify": { - "version": "1.0.1", - "from": "json-stable-stringify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "dev": true - }, "ordered-read-streams": { "version": "0.3.0", "from": "ordered-read-streams@>=0.3.0 <0.4.0", @@ -9003,6 +8916,11 @@ "from": "node-pre-gyp@0.6.32", "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.32.tgz", "dependencies": { + "caseless": { + "version": "0.12.0", + "from": "caseless@>=0.12.0 <0.13.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + }, "form-data": { "version": "2.1.2", "from": "form-data@>=2.1.1 <2.2.0", @@ -9013,15 +8931,20 @@ "from": "glob@>=7.0.5 <8.0.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz" }, + "har-validator": { + "version": "4.2.1", + "from": "har-validator@>=4.2.0 <4.3.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz" + }, "qs": { "version": "6.3.1", "from": "qs@>=6.3.0 <6.4.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.1.tgz" }, "request": { - "version": "2.79.0", + "version": "2.80.0", "from": "request@>=2.79.0 <3.0.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz" + "resolved": "https://registry.npmjs.org/request/-/request-2.80.0.tgz" }, "rimraf": { "version": "2.5.4", @@ -9287,9 +9210,9 @@ "dev": true }, "object-hash": { - "version": "1.1.5", + "version": "1.1.7", "from": "object-hash@>=1.1.4 <2.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.1.5.tgz", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.1.7.tgz", "dev": true }, "object-inspect": { @@ -9727,6 +9650,11 @@ "from": "pend@>=1.2.0 <1.3.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" }, + "performance-now": { + "version": "0.2.0", + "from": "performance-now@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz" + }, "phantom-bridge": { "version": "2.0.1", "from": "phantom-bridge@>=2.0.0 <3.0.0", @@ -10276,7 +10204,7 @@ "dependencies": { "acorn": { "version": "4.0.11", - "from": "acorn@>=4.0.4 <5.0.0", + "from": "acorn@^4.0.4", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz" } } @@ -10303,11 +10231,6 @@ "from": "asap@>=2.0.3 <2.1.0", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.5.tgz" }, - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, "clean-css": { "version": "3.4.25", "from": "clean-css@>=3.3.0 <4.0.0", @@ -10334,9 +10257,9 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz" }, "uglify-js": { - "version": "2.8.0", + "version": "2.8.7", "from": "uglify-js@>=2.6.1 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.0.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.7.tgz", "dependencies": { "source-map": { "version": "0.5.6", @@ -11049,10 +10972,20 @@ } } }, + "http-errors": { + "version": "1.5.1", + "from": "http-errors@>=1.5.1 <1.6.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz" + }, "mime": { "version": "1.3.4", "from": "mime@1.3.4", "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "setprototypeof": { + "version": "1.0.2", + "from": "setprototypeof@1.0.2", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz" } } }, @@ -11099,9 +11032,9 @@ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" }, "setprototypeof": { - "version": "1.0.2", - "from": "setprototypeof@1.0.2", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz" + "version": "1.0.3", + "from": "setprototypeof@1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz" }, "sha.js": { "version": "2.4.8", @@ -11116,7 +11049,14 @@ "shasum": { "version": "1.0.2", "from": "shasum@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz" + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "dependencies": { + "json-stable-stringify": { + "version": "0.0.1", + "from": "json-stable-stringify@>=0.0.0 <0.1.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz" + } + } }, "shebang-command": { "version": "1.2.0", @@ -11428,9 +11368,9 @@ "optional": true }, "sshpk": { - "version": "1.10.2", + "version": "1.11.0", "from": "sshpk@>=1.7.0 <2.0.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.2.tgz", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.11.0.tgz", "dependencies": { "assert-plus": { "version": "1.0.0", @@ -11820,16 +11760,9 @@ } }, "syntax-error": { - "version": "1.1.6", + "version": "1.3.0", "from": "syntax-error@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.1.6.tgz", - "dependencies": { - "acorn": { - "version": "2.7.0", - "from": "acorn@>=2.7.0 <3.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz" - } - } + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz" }, "table": { "version": "3.8.3", @@ -12727,13 +12660,13 @@ }, "vue-hot-reload-api": { "version": "2.0.11", - "from": "vue-hot-reload-api@>=2.0.1 <3.0.0", + "from": "vue-hot-reload-api@>=2.0.11 <3.0.0", "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.0.11.tgz" }, "vue-loader": { - "version": "11.1.3", + "version": "11.1.4", "from": "vue-loader@>=11.0.0 <12.0.0", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-11.1.3.tgz", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-11.1.4.tgz", "dependencies": { "loader-utils": { "version": "1.0.2", @@ -12801,11 +12734,6 @@ "from": "webpack@>=2.2.1 <3.0.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.2.1.tgz", "dependencies": { - "acorn": { - "version": "4.0.11", - "from": "acorn@>=4.0.4 <5.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz" - }, "async": { "version": "2.1.5", "from": "async@>=2.1.2 <3.0.0", @@ -12822,15 +12750,10 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" }, "uglify-js": { - "version": "2.8.0", + "version": "2.8.7", "from": "uglify-js@>=2.7.5 <3.0.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.0.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.7.tgz", "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, "yargs": { "version": "3.10.0", "from": "yargs@~3.10.0", @@ -12863,12 +12786,6 @@ "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.3.0.tgz", "dev": true, "dependencies": { - "acorn": { - "version": "4.0.11", - "from": "acorn@>=4.0.11 <5.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz", - "dev": true - }, "ejs": { "version": "2.5.6", "from": "ejs@>=2.5.5 <3.0.0", @@ -12958,7 +12875,14 @@ "with": { "version": "4.0.3", "from": "with@>=4.0.0 <4.1.0", - "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz" + "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz", + "dependencies": { + "acorn": { + "version": "1.2.2", + "from": "acorn@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz" + } + } }, "wns": { "version": "0.5.3", diff --git a/package.json b/package.json index 4becb793da..c11718104e 100644 --- a/package.json +++ b/package.json @@ -190,6 +190,7 @@ "karma-mocha-reporter": "^1.1.1", "karma-phantomjs-launcher": "^1.0.0", "karma-sinon-chai": "^1.2.0", + "karma-sinon-stub-promise": "^1.0.0", "karma-sourcemap-loader": "^0.3.7", "karma-spec-reporter": "0.0.24", "karma-webpack": "^2.0.2", diff --git a/test/client/unit/index.js b/test/client/unit/index.js index 998dca4675..3c6194d1bd 100644 --- a/test/client/unit/index.js +++ b/test/client/unit/index.js @@ -2,8 +2,17 @@ // and babel-runtime doesn't affect external libraries require('babel-polyfill'); -// require all test files (files that ends with .spec.js) -let testsContext = require.context('./specs', true, /\.spec$/); +// Automatically setup SinonJS' sandbox for each test +beforeEach(() => { + global.sandbox = sinon.sandbox.create(); +}); + +afterEach(() => { + global.sandbox.restore(); +}); + +// require all test files +let testsContext = require.context('./specs', true, /\.js$/); testsContext.keys().forEach(testsContext); // require all .vue and .js files except main.js for coverage. diff --git a/test/client/unit/karma.conf.js b/test/client/unit/karma.conf.js index 4fa094a3d3..7492020472 100644 --- a/test/client/unit/karma.conf.js +++ b/test/client/unit/karma.conf.js @@ -17,7 +17,7 @@ module.exports = function (config) { // http://karma-runner.github.io/0.13/config/browsers.html // 2. add it to the `browsers` array below. browsers: ['PhantomJS'], - frameworks: ['mocha', 'sinon-chai'], + frameworks: ['mocha', 'sinon-stub-promise', 'sinon-chai', 'chai-as-promised', 'chai'], reporters: ['spec', 'coverage'], files: ['./index.js'], preprocessors: { diff --git a/test/client/unit/specs/filters/floor.spec.js b/test/client/unit/specs/filters/floor.js similarity index 100% rename from test/client/unit/specs/filters/floor.spec.js rename to test/client/unit/specs/filters/floor.js diff --git a/test/client/unit/specs/filters/round.spec.js b/test/client/unit/specs/filters/round.js similarity index 100% rename from test/client/unit/specs/filters/round.spec.js rename to test/client/unit/specs/filters/round.js diff --git a/test/client/unit/specs/libs/deepFreeze.spec.js b/test/client/unit/specs/libs/deepFreeze.js similarity index 100% rename from test/client/unit/specs/libs/deepFreeze.spec.js rename to test/client/unit/specs/libs/deepFreeze.js diff --git a/test/client/unit/specs/mixins/groupsUtilities.spec.js b/test/client/unit/specs/mixins/groupsUtilities.js similarity index 100% rename from test/client/unit/specs/mixins/groupsUtilities.spec.js rename to test/client/unit/specs/mixins/groupsUtilities.js diff --git a/test/client/unit/specs/plugins/i18n.spec.js b/test/client/unit/specs/plugins/i18n.js similarity index 100% rename from test/client/unit/specs/plugins/i18n.spec.js rename to test/client/unit/specs/plugins/i18n.js diff --git a/test/client/unit/specs/store/actions/guilds.js b/test/client/unit/specs/store/actions/guilds.js new file mode 100644 index 0000000000..70f3a4f1d3 --- /dev/null +++ b/test/client/unit/specs/store/actions/guilds.js @@ -0,0 +1,17 @@ +import { fetchAll as fetchAllGuilds } from 'client/store/actions/guilds'; +import axios from 'axios'; +import store from 'client/store'; + +describe('guilds actions', () => { + it('fetchAll', async () => { + const guilds = [{_id: 1}]; + sandbox + .stub(axios, 'get') + .withArgs('/api/v3/groups?type=publicGuilds') + .returns(Promise.resolve({data: {data: guilds}})); + + await fetchAllGuilds(store); + + expect(store.state.guilds).to.equal(guilds); + }); +}); \ No newline at end of file diff --git a/test/client/unit/specs/store/actions/tasks.js b/test/client/unit/specs/store/actions/tasks.js new file mode 100644 index 0000000000..b95893da64 --- /dev/null +++ b/test/client/unit/specs/store/actions/tasks.js @@ -0,0 +1,14 @@ +import { fetchUserTasks } from 'client/store/actions/tasks'; +import axios from 'axios'; +import store from 'client/store'; + +describe('tasks actions', () => { + it('fetchUserTasks', async () => { + const tasks = [{_id: 1}]; + sandbox.stub(axios, 'get').withArgs('/api/v3/tasks/user').returns(Promise.resolve({data: {data: tasks}})); + + await fetchUserTasks(store); + + expect(store.state.tasks).to.equal(tasks); + }); +}); \ No newline at end of file diff --git a/test/client/unit/specs/store/actions/user.js b/test/client/unit/specs/store/actions/user.js new file mode 100644 index 0000000000..7ba43194b0 --- /dev/null +++ b/test/client/unit/specs/store/actions/user.js @@ -0,0 +1,14 @@ +import { fetch as fetchUser } from 'client/store/actions/user'; +import axios from 'axios'; +import store from 'client/store'; + +describe('user actions', () => { + it('fetch', async () => { + const user = {_id: 1}; + sandbox.stub(axios, 'get').withArgs('/api/v3/user').returns(Promise.resolve({data: {data: user}})); + + await fetchUser(store); + + expect(store.state.user).to.equal(user); + }); +}); \ No newline at end of file diff --git a/test/client/unit/specs/getters/userGems.spec.js b/test/client/unit/specs/store/getters/userGems.js similarity index 100% rename from test/client/unit/specs/getters/userGems.spec.js rename to test/client/unit/specs/store/getters/userGems.js diff --git a/test/client/unit/specs/store.spec.js b/test/client/unit/specs/store/store.js similarity index 100% rename from test/client/unit/specs/store.spec.js rename to test/client/unit/specs/store/store.js diff --git a/website/client/assets/less/semantic-ui/semantic.less b/website/client/assets/less/semantic-ui/semantic.less index be2f24744d..426fa6d21b 100644 --- a/website/client/assets/less/semantic-ui/semantic.less +++ b/website/client/assets/less/semantic-ui/semantic.less @@ -21,7 +21,7 @@ // & { @import "~semantic-ui-less/definitions/elements/container"; } // & { @import "~semantic-ui-less/definitions/elements/divider"; } // & { @import "~semantic-ui-less/definitions/elements/flag"; } -// & { @import "~semantic-ui-less/definitions/elements/header"; } +& { @import "~semantic-ui-less/definitions/elements/header"; } & { @import "~semantic-ui-less/definitions/elements/icon"; } // & { @import "~semantic-ui-less/definitions/elements/image"; } & { @import "~semantic-ui-less/definitions/elements/input"; } diff --git a/website/client/components/social/guilds/discovery/publicGuildItem.vue b/website/client/components/social/guilds/discovery/publicGuildItem.vue index 03af6ff937..884839345d 100644 --- a/website/client/components/social/guilds/discovery/publicGuildItem.vue +++ b/website/client/components/social/guilds/discovery/publicGuildItem.vue @@ -3,7 +3,8 @@ .ui.right.floated.button(:class="[isMember ? 'red' : 'green']") {{ isMember ? $t('leave') : $t('join') }} .floated // TODO v-once? - h3.ui.header {{ guild.name }} + router-link(:to="{ name: 'guild', params: { guildId: guild._id } }") + h3.ui.header {{ guild.name }} p {{ guild.description }} diff --git a/website/client/components/social/guilds/guild.vue b/website/client/components/social/guilds/guild.vue new file mode 100644 index 0000000000..fd59809d60 --- /dev/null +++ b/website/client/components/social/guilds/guild.vue @@ -0,0 +1,68 @@ + + + diff --git a/website/client/router.js b/website/client/router.js index f3763402e8..63b1c443e9 100644 --- a/website/client/router.js +++ b/website/client/router.js @@ -19,6 +19,7 @@ import TavernPage from './components/social/tavern'; import InboxPage from './components/social/inbox/index'; import InboxConversationPage from './components/social/inbox/conversationPage'; import GuildsDiscoveryPage from './components/social/guilds/discovery/index'; +import GuildPage from './components/social/guilds/guild'; Vue.use(VueRouter); @@ -70,6 +71,12 @@ export default new VueRouter({ path: '', component: GuildsDiscoveryPage, }, + { + name: 'guild', + path: ':guildId', + component: GuildPage, + props: true, + }, ], }, ], diff --git a/website/client/store/actions/guilds.js b/website/client/store/actions/guilds.js index 9e0676957c..bab0d74bd5 100644 --- a/website/client/store/actions/guilds.js +++ b/website/client/store/actions/guilds.js @@ -1,6 +1,6 @@ import axios from 'axios'; export async function fetchAll (store) { - let response = await axios.get('/api/v3/groups?type=publicGuilds'); + let response = await axios.get('/api/v3/groups?type=publicGuilds'); store.state.guilds = response.data.data; } \ No newline at end of file