diff --git a/backend/src/schema/resolvers/embeds/findProvider.js b/backend/src/schema/resolvers/embeds/findProvider.js
index 4742935b7..a4240895f 100644
--- a/backend/src/schema/resolvers/embeds/findProvider.js
+++ b/backend/src/schema/resolvers/embeds/findProvider.js
@@ -2,10 +2,7 @@ import fs from 'fs'
import path from 'path'
import minimatch from 'minimatch'
-let oEmbedProvidersFile = fs.readFileSync(
- path.join(__dirname, './providers.json'),
- 'utf8',
-)
+let oEmbedProvidersFile = fs.readFileSync(path.join(__dirname, './providers.json'), 'utf8')
// some providers allow a format parameter
// we need JSON
diff --git a/webapp/components/Embed/EmbedComponent.spec.js b/webapp/components/Embed/EmbedComponent.spec.js
index b4fbe6a60..5ad8dd324 100644
--- a/webapp/components/Embed/EmbedComponent.spec.js
+++ b/webapp/components/Embed/EmbedComponent.spec.js
@@ -3,7 +3,7 @@ import Vuex from 'vuex'
import Styleguide from '@human-connection/styleguide'
import EmbedComponent from './EmbedComponent'
-let Wrapper, wrapper, propsData, getters, mocks
+let wrapper, propsData, getters, mocks
const someUrl = 'https://www.youtube.com/watch?v=qkdXAtO40Fo'
const localVue = createLocalVue()
@@ -11,9 +11,25 @@ localVue.use(Vuex)
localVue.use(Styleguide)
describe('EmbedComponent.vue', () => {
+ const Wrapper = () => {
+ const store = new Vuex.Store({
+ getters,
+ })
+ return mount(EmbedComponent, { propsData, localVue, store, mocks })
+ }
+
beforeEach(() => {
mocks = {
$t: a => a,
+ $apollo: {
+ mutate: jest
+ .fn()
+ .mockResolvedValueOnce({ data: { UpdateUser: { allowEmbedIframes: true } } }),
+ },
+ $toast: {
+ success: jest.fn(),
+ error: jest.fn(),
+ },
}
propsData = {}
getters = {
@@ -21,12 +37,6 @@ describe('EmbedComponent.vue', () => {
return { id: 'u5', allowEmbedIframes: false }
},
}
- Wrapper = ({ propsData }) => {
- const store = new Vuex.Store({
- getters,
- })
- return mount(EmbedComponent, { propsData, localVue, store, mocks })
- }
})
describe('given a href only for a link ', () => {
@@ -48,7 +58,7 @@ describe('EmbedComponent.vue', () => {
sources: ['resource', 'oembed'],
html: null,
}
- wrapper = Wrapper({ propsData })
+ wrapper = Wrapper()
})
it('shows the title', () => {
@@ -64,12 +74,8 @@ describe('EmbedComponent.vue', () => {
})
it('shows preview Images for link', () => {
- expect(wrapper.find('.embed-preview-image--clickable')).toEqual({
- selector: '.embed-preview-image--clickable',
- })
+ expect(wrapper.find('.embed-preview-image').exists()).toBe(true)
})
-
-
})
describe('given a href with embed html', () => {
@@ -81,7 +87,7 @@ describe('EmbedComponent.vue', () => {
description:
'She’s incapable of controlling her limbs when her kitty is around. The obsession grows every day. Ps. That’s a sleep sack she’s in. Not a starfish outfit. Al...',
}
- wrapper = Wrapper({ propsData })
+ wrapper = Wrapper()
})
it('show the title', () => {
@@ -94,67 +100,107 @@ describe('EmbedComponent.vue', () => {
)
})
- describe('onEmbed returned embed data with html', () => {
- beforeEach(() => {
- propsData.embedData = {
- __typename: 'Embed',
- type: 'video',
- title: 'Baby Loves Cat',
- author: 'Merkley Family',
- publisher: 'YouTube',
- date: '2015-08-16T00:00:00.000Z',
- description:
- 'She’s incapable of controlling her limbs when her kitty is around. The obsession grows every day. Ps. That’s a sleep sack she’s in. Not a starfish outfit. Al...',
- url: someUrl,
- image: 'https://i.ytimg.com/vi/qkdXAtO40Fo/maxresdefault.jpg',
- audio: null,
- video: null,
- lang: 'de',
- sources: ['resource', 'oembed'],
- html:
- '',
- }
- wrapper = Wrapper({ propsData })
- })
+ describe('onEmbed returned embed data with html', () => {
+ beforeEach(() => {
+ propsData.embedData = {
+ __typename: 'Embed',
+ type: 'video',
+ title: 'Baby Loves Cat',
+ author: 'Merkley Family',
+ publisher: 'YouTube',
+ date: '2015-08-16T00:00:00.000Z',
+ description:
+ 'She’s incapable of controlling her limbs when her kitty is around. The obsession grows every day. Ps. That’s a sleep sack she’s in. Not a starfish outfit. Al...',
+ url: someUrl,
+ image: 'https://i.ytimg.com/vi/qkdXAtO40Fo/maxresdefault.jpg',
+ audio: null,
+ video: null,
+ lang: 'de',
+ sources: ['resource', 'oembed'],
+ html:
+ '',
+ }
+ wrapper = Wrapper()
+ })
- it('shows a simple link when a user closes the embed preview', () => {
- wrapper.find('.embed-close-button').trigger('click')
- expect(wrapper.vm.showLinkOnly).toBe(true)
- })
+ it('shows a simple link when a user closes the embed preview', () => {
+ wrapper.find('.embed-close-button').trigger('click')
+ expect(wrapper.vm.showLinkOnly).toBe(true)
+ })
- it('opens the data privacy overlay when a user clicks on the preview image', () => {
- wrapper.find('.embed-preview-image--clickable').trigger('click')
- expect(wrapper.vm.showOverlay).toBe(true)
- })
+ it('opens the data privacy overlay when a user clicks on the preview image', () => {
+ wrapper.find('.embed-preview-image--clickable').trigger('click')
+ expect(wrapper.vm.showOverlay).toBe(true)
+ })
- it("click show iframe, but don't select to change setting permanetly", () => {
- wrapper.setData({ showOverlay: true })
- wrapper.find('.ds-button-primary').trigger('click')
- expect(wrapper.vm.showEmbed).toBe(true)
- expect(wrapper.vm.checkedAlwaysAllowEmbeds).toBe(false)
- })
+ describe('shows iframe', () => {
+ beforeEach(() => {
+ wrapper.setData({ showOverlay: true })
+ })
- it('click show iframe and change setting permanetly', () => {
- wrapper.setData({ showOverlay: true })
- wrapper.find('input[type=checkbox]').trigger('click')
- wrapper.find('.ds-button-primary').trigger('click')
- expect(wrapper.vm.showEmbed).toBe(true)
- expect(wrapper.vm.checkedAlwaysAllowEmbeds).toBe(true)
- })
+ it('when user agress', () => {
+ wrapper.find('.ds-button-primary').trigger('click')
+ expect(wrapper.vm.showEmbed).toBe(true)
+ })
- it('click cancel do not show iframe', () => {
- wrapper.setData({ showOverlay: true })
- wrapper.find('.ds-button-ghost').trigger('click')
- expect(wrapper.vm.showOverlay).toBe(false)
- expect(wrapper.vm.showEmbed).toBe(false)
- })
+ it('does not show iframe when user clicks to cancel', () => {
+ wrapper.find('.ds-button-ghost').trigger('click')
+ expect(wrapper.vm.showEmbed).toBe(false)
+ })
- it('show only iframe if allowEmbedIframes true', () => {
- wrapper.setData({ allowEmbedIframes: true })
- expect(wrapper.find('.embed-html')).toEqual({ selector: '.embed-html' })
- expect(wrapper.find('.embed-preview-image--clickable')).toEqual({})
+ describe("doesn't set permanently", () => {
+ beforeEach(() => {
+ wrapper.find('.ds-button-primary').trigger('click')
+ })
+
+ it("if user doesn't give consent", () => {
+ expect(wrapper.vm.checkedAlwaysAllowEmbeds).toBe(false)
+ })
+
+ it("doesn't update the user's profile", () => {
+ expect(mocks.$apollo.mutate).not.toHaveBeenCalled()
+ })
+ })
+
+ describe('sets permanently', () => {
+ beforeEach(() => {
+ wrapper.find('input[type=checkbox]').trigger('click')
+ wrapper.find('.ds-button-primary').trigger('click')
+ })
+
+ it('changes setting permanetly when user requests', () => {
+ expect(wrapper.vm.checkedAlwaysAllowEmbeds).toBe(true)
+ })
+
+ it("updates the user's profile", () => {
+ expect(mocks.$apollo.mutate).toHaveBeenCalledTimes(1)
+ })
+ })
+ })
+
+ describe('immediately shows', () => {
+ beforeEach(() => {
+ getters = {
+ 'auth/user': () => {
+ return { id: 'u5', allowEmbedIframes: true }
+ },
+ }
+ wrapper = Wrapper()
+ })
+
+ it('sets showEmbed to true', () => {
+ expect(wrapper.vm.showEmbed).toBe(true)
+ })
+
+ it('the iframe returned from oEmbed', () => {
+ expect(wrapper.find('iframe').html()).toEqual(propsData.embedData.html)
+ })
+
+ it('does not display image to click', () => {
+ expect(wrapper.find('.embed-preview-image--clickable').exists()).toBe(false)
+ })
+ })
})
})
- })
})
-})
\ No newline at end of file
+})
diff --git a/webapp/components/Embed/EmbedComponent.vue b/webapp/components/Embed/EmbedComponent.vue
index 5dc8ad00c..7831c1de1 100644
--- a/webapp/components/Embed/EmbedComponent.vue
+++ b/webapp/components/Embed/EmbedComponent.vue
@@ -145,6 +145,7 @@ export default {
this.$toast.success(this.$t('contribution.success'))
this.showEmbed = this.currentUser.allowEmbedIframes
} catch (err) {
+ console.log(err)
this.$toast.error(err.message)
}
},