Sketch a test for a custom image component

@tansaku @aonomike I hope this clarifies the task.

When you're done, feel free to use this component wherever we use
`<img>` in `/webapp/`.
This commit is contained in:
Robert Schäfer 2019-04-23 19:35:41 +02:00
parent 98ad101549
commit 5978adff68
2 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,23 @@
<template>
<img
v-bind="imageProps"
:src="imageSrc"
>
</template>
<script>
export default {
props: {
imageProps: {
type: Object,
required: true
}
},
computed: {
imageSrc() {
// TODO implement
return 'this should be an image source attribute'
}
}
}
</script>

View File

@ -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'
)
})
})
})