Skip to content
This repository was archived by the owner on Sep 20, 2024. It is now read-only.

Commit 979bb01

Browse files
committed
test(image): add tests for Image component and fix onerror
1 parent 70e9ae2 commit 979bb01

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

packages/chakra-ui-core/src/CImage/CImage.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ const CImage = {
5555
this.$emit('load', event)
5656
}
5757

58-
image.onError = (event) => {
58+
image.onerror = (event) => {
5959
this.hasLoaded = false
6060
this.$emit('error', event)
6161
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { CImage } from '../..'
2+
import { render, wait, waitMs, screen } from '@/tests/test-utils'
3+
const LOAD_FAILURE_SRC = 'LOAD_FAILURE_SRC'
4+
const LOAD_SUCCESS_SRC = 'LOAD_SUCCESS_SRC'
5+
6+
beforeAll(() => {
7+
process.browser = true // Mock process.browser for CAvatar created()
8+
})
9+
10+
beforeAll(() => {
11+
// Mock Img
12+
// eslint-disable-next-line accessor-pairs
13+
Object.defineProperty(global.Image.prototype, 'src', {
14+
set (src) {
15+
if (src === LOAD_FAILURE_SRC) {
16+
setTimeout(() => this.onerror(new Error('mocked error')))
17+
} else if (src === LOAD_SUCCESS_SRC) {
18+
setTimeout(() => this.onload())
19+
}
20+
}
21+
})
22+
})
23+
24+
const renderComponent = (props) => {
25+
const base = {
26+
components: { CImage },
27+
template: '<CImage alt="Mesut Koca" data-testid="avatar" src="LOAD_SUCCESS_SRC"></CImage>',
28+
...props
29+
}
30+
return render(base)
31+
}
32+
33+
it('should render correctly', async () => {
34+
const { asFragment } = renderComponent()
35+
36+
await waitMs() // wait for img.onsuccess to be called.
37+
38+
expect(asFragment()).toMatchSnapshot()
39+
})
40+
41+
it('fallback src works', async () => {
42+
renderComponent({ template: '<CImage alt="Mesut Koca" src="LOAD_FAILURE_SRC" fallback-src="LOAD_FALLBACK_SRC" />' })
43+
44+
await wait(() => {
45+
expect(screen.getByAltText(/Mesut Koca/i)).toHaveAttribute('src', 'LOAD_FALLBACK_SRC')
46+
})
47+
})
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`should render correctly 1`] = `
4+
<DocumentFragment>
5+
<img
6+
alt="Mesut Koca"
7+
class="css-fzcsno"
8+
data-chakra-component="CImage"
9+
data-testid="avatar"
10+
src="LOAD_SUCCESS_SRC"
11+
/>
12+
</DocumentFragment>
13+
`;

0 commit comments

Comments
 (0)