diff --git a/webapp/components/Image/index.vue b/webapp/components/Image/index.vue new file mode 100644 index 000000000..de05c5eda --- /dev/null +++ b/webapp/components/Image/index.vue @@ -0,0 +1,23 @@ + + + diff --git a/webapp/components/Image/spec.js b/webapp/components/Image/spec.js new file mode 100644 index 000000000..cbc4d34cf --- /dev/null +++ b/webapp/components/Image/spec.js @@ -0,0 +1,43 @@ +import { shallowMount } from '@vue/test-utils' +import Image from '.' + +describe('Image', () => { + let propsData = { imageProps: { class: 'hc-badge', src: '' } } + + const Wrapper = () => { + return shallowMount(Image, { propsData }) + } + + it('renders', () => { + expect(Wrapper().is('img')).toBe(true) + }) + + it('passes properties down to `img`', () => { + expect(Wrapper().classes()).toEqual(['hc-badge']) + }) + + describe('given a relative `src`', () => { + beforeEach(() => { + propsData.imageProps.src = '/img/badges/fundraisingbox_de_airship.svg' + }) + + it('adds a prefix to load the image from the backend', () => { + expect(Wrapper().attributes('src')).toBe( + '/api/img/badges/fundraisingbox_de_airship.svg' + ) + }) + }) + + describe('given an absolute `src`', () => { + beforeEach(() => { + propsData.imageProps.src = 'http://lorempixel.com/640/480/animals' + }) + + it('keeps the URL as is', () => { + // e.g. our seeds have absolute image URLs + expect(Wrapper().attributes('src')).toBe( + 'http://lorempixel.com/640/480/animals' + ) + }) + }) +})