From 08c2e5d708754a4b22e784d903ac140f26c51191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Wed, 27 Mar 2019 13:56:28 +0100 Subject: [PATCH 1/4] I was able to save an empty string as social media --- backend/src/resolvers/user_management.spec.js | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/backend/src/resolvers/user_management.spec.js b/backend/src/resolvers/user_management.spec.js index 1c21adac1..a6ef48ee5 100644 --- a/backend/src/resolvers/user_management.spec.js +++ b/backend/src/resolvers/user_management.spec.js @@ -309,3 +309,30 @@ describe('change password', () => { }) }) }) + +describe('addSocialMedia', () => { + let client + let headers + const mutation = ` + mutation($url: String!) { + addSocialMedia(url: $url) + } + ` + + describe('authenticated', () => { + beforeEach(async () => { + headers = await login({ email: 'test@example.org', password: '1234' }) + client = new GraphQLClient(host, { headers }) + }) + + it('rejects empty string', async () => { + const variables = { url: '' } + await expect(client.request(mutation, variables)).rejects.toThrow('Input is not a URL') + }) + + it('validates URLs', async () => { + const variables = { url: 'not-a-url' } + await expect(client.request(mutation, variables)).rejects.toThrow('Input is not a URL') + }) + }) +}) From 8fb9ebd2b5ba5dcd6e23755ce0d808610564e28f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Wed, 27 Mar 2019 14:07:24 +0100 Subject: [PATCH 2/4] Expose bug: Server-side render error --- webapp/pages/settings/my-social-media.spec.js | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 webapp/pages/settings/my-social-media.spec.js diff --git a/webapp/pages/settings/my-social-media.spec.js b/webapp/pages/settings/my-social-media.spec.js new file mode 100644 index 000000000..b3e198a6f --- /dev/null +++ b/webapp/pages/settings/my-social-media.spec.js @@ -0,0 +1,60 @@ +import { shallowMount, mount, createLocalVue } from '@vue/test-utils' +import MySocialMedia from './my-social-media.vue' +import Vue from 'vue' +import Vuex from 'vuex' +import Styleguide from '@human-connection/styleguide' + +const localVue = createLocalVue() + +localVue.use(Vuex) +localVue.use(Styleguide) + +describe('my-social-media.vue', () => { + let wrapper + let Wrapper + let store + let mocks + let getters + + beforeEach(() => { + mocks = { + $t: jest.fn() + } + getters = { + 'auth/user': () => { + return {} + } + } + }) + + describe('shallowMount', () => { + const Wrapper = () => { + store = new Vuex.Store({ + getters + }) + return shallowMount(MySocialMedia, { store, mocks, localVue }) + } + + it('renders', () => { + wrapper = Wrapper() + expect(wrapper.contains('div')).toBe(true) + }) + + describe('given currentUser has social media accounts', () => { + beforeEach(() => { + getters = { + 'auth/user': () => { + return { + socialMedia: [''] + } + } + } + }) + + it('renders', () => { + wrapper = Wrapper() + expect(wrapper.contains('div')).toBe(true) + }) + }) + }) +}) From 9de652c631e5630ee819452e317e75c819241a70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Wed, 27 Mar 2019 14:16:00 +0100 Subject: [PATCH 3/4] Fix render error bug :raised_hands: @mattwr18 --- webapp/pages/settings/my-social-media.vue | 25 ++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/webapp/pages/settings/my-social-media.vue b/webapp/pages/settings/my-social-media.vue index 6bccd9949..1552c5512 100644 --- a/webapp/pages/settings/my-social-media.vue +++ b/webapp/pages/settings/my-social-media.vue @@ -18,19 +18,19 @@ -
@@ -51,7 +51,18 @@ export default { computed: { ...mapGetters({ currentUser: 'auth/user' - }) + }), + socialMediaLinks() { + const { socialMedia = [] } = this.currentUser + return socialMedia.map(url => { + const matches = url.match( + /^(?:https?:\/\/)?(?:[^@\n])?(?:www\.)?([^:\/\n?]+)/g + ) + const [domain] = matches || [] + const favicon = domain ? `${domain}/favicon.ico` : null + return { url, favicon } + }) + } }, methods: { handleAddSocialMedia() { From 209b63715fa65c8f08655874e1da514928a74421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Wed, 27 Mar 2019 14:28:20 +0100 Subject: [PATCH 4/4] Show social media links as list --- webapp/pages/settings/my-social-media.vue | 38 ++++++++++++----------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/webapp/pages/settings/my-social-media.vue b/webapp/pages/settings/my-social-media.vue index 1552c5512..201c0759f 100644 --- a/webapp/pages/settings/my-social-media.vue +++ b/webapp/pages/settings/my-social-media.vue @@ -1,5 +1,25 @@