From 91d797dcfa5817dbfa5eae6d2fb4228b4522b284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 22 Aug 2022 12:14:54 +0200 Subject: [PATCH] Copy profile Vue pages for the group profile --- webapp/pages/group/_id.spec.js | 33 ++ webapp/pages/group/_id.vue | 34 ++ webapp/pages/group/_id/_slug.spec.js | 95 ++++++ webapp/pages/group/_id/_slug.vue | 443 +++++++++++++++++++++++++++ 4 files changed, 605 insertions(+) create mode 100644 webapp/pages/group/_id.spec.js create mode 100644 webapp/pages/group/_id.vue create mode 100644 webapp/pages/group/_id/_slug.spec.js create mode 100644 webapp/pages/group/_id/_slug.vue diff --git a/webapp/pages/group/_id.spec.js b/webapp/pages/group/_id.spec.js new file mode 100644 index 000000000..aab216569 --- /dev/null +++ b/webapp/pages/group/_id.spec.js @@ -0,0 +1,33 @@ +import { config, mount } from '@vue/test-utils' +import _id from './_id.vue' + +const localVue = global.localVue + +config.stubs['nuxt-child'] = '' + +describe('Profile _id.vue', () => { + let wrapper + let Wrapper + let mocks + + beforeEach(() => { + mocks = {} + }) + + describe('mount', () => { + Wrapper = () => { + return mount(_id, { + mocks, + localVue, + }) + } + + beforeEach(() => { + wrapper = Wrapper() + }) + + it('renders', () => { + expect(wrapper.findAll('.nuxt-child')).toHaveLength(1) + }) + }) +}) diff --git a/webapp/pages/group/_id.vue b/webapp/pages/group/_id.vue new file mode 100644 index 000000000..b9bbef83e --- /dev/null +++ b/webapp/pages/group/_id.vue @@ -0,0 +1,34 @@ + + + diff --git a/webapp/pages/group/_id/_slug.spec.js b/webapp/pages/group/_id/_slug.spec.js new file mode 100644 index 000000000..477174485 --- /dev/null +++ b/webapp/pages/group/_id/_slug.spec.js @@ -0,0 +1,95 @@ +import { config, mount } from '@vue/test-utils' +import ProfileSlug from './_slug.vue' + +const localVue = global.localVue + +localVue.filter('date', (d) => d) + +config.stubs['client-only'] = '' +config.stubs['v-popover'] = '' +config.stubs['nuxt-link'] = '' +config.stubs['infinite-loading'] = '' +config.stubs['follow-list'] = '' + +describe('ProfileSlug', () => { + let wrapper + let Wrapper + let mocks + + beforeEach(() => { + mocks = { + post: { + id: 'p23', + name: 'It is a post', + }, + $t: jest.fn(), + // If you're mocking router, then don't use VueRouter with localVue: https://vue-test-utils.vuejs.org/guides/using-with-vue-router.html + $route: { + params: { + id: '4711', + slug: 'john-doe', + }, + }, + $router: { + history: { + push: jest.fn(), + }, + }, + $toast: { + success: jest.fn(), + error: jest.fn(), + }, + $apollo: { + loading: false, + mutate: jest.fn().mockResolvedValue(), + }, + } + }) + + describe('mount', () => { + Wrapper = () => { + return mount(ProfileSlug, { + mocks, + localVue, + }) + } + + describe('given an authenticated user', () => { + beforeEach(() => { + mocks.$filters = { + removeLinks: (c) => c, + truncate: (a) => a, + } + mocks.$store = { + getters: { + 'auth/isModerator': () => false, + 'auth/user': { + id: 'u23', + }, + }, + } + }) + + describe('given a user for the profile', () => { + beforeEach(() => { + wrapper = Wrapper() + wrapper.setData({ + User: [ + { + id: 'u3', + name: 'Bob the builder', + contributionsCount: 6, + shoutedCount: 7, + commentedCount: 8, + }, + ], + }) + }) + + it('displays name of the user', () => { + expect(wrapper.text()).toContain('Bob the builder') + }) + }) + }) + }) +}) diff --git a/webapp/pages/group/_id/_slug.vue b/webapp/pages/group/_id/_slug.vue new file mode 100644 index 000000000..4fef7d3aa --- /dev/null +++ b/webapp/pages/group/_id/_slug.vue @@ -0,0 +1,443 @@ + + + + +