Skip to content

Commit abd7621

Browse files
committed
fix: api should be consistent with react-testing-library
fixes: #24
1 parent 931fff6 commit abd7621

File tree

15 files changed

+94
-79
lines changed

15 files changed

+94
-79
lines changed

pure.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './types/pure'

src/__tests__/act.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import '@testing-library/jest-dom/extend-expect'
2-
32
import { createRef, h } from 'preact'
43
import { useEffect, useState } from 'preact/hooks'
5-
64
import { fireEvent, render } from '..'
75

86
test('render calls useEffect immediately', () => {

src/__tests__/auto-cleanup.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { h } from 'preact'
2-
32
import { render } from '..'
43

54
// This just verifies that by importing PTL in an

src/__tests__/cleanup.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import '@testing-library/jest-dom/extend-expect'
2-
32
import { Component, h } from 'preact'
4-
53
import { cleanup, render } from '..'
64

75
test('cleans up the document', () => {

src/__tests__/debug.js

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
/* eslint-disable no-console */
22

33
import '@testing-library/jest-dom/extend-expect'
4-
5-
import { h } from 'preact'
6-
7-
import { render } from '..'
4+
import { h, Fragment } from 'preact'
5+
import { screen, render } from '..'
86

97
beforeEach(() => {
108
jest.spyOn(console, 'log').mockImplementation(() => {})
@@ -24,3 +22,33 @@ test('debug pretty prints the container', () => {
2422
expect(console.log).toHaveBeenCalledTimes(1)
2523
expect(console.log).toHaveBeenCalledWith(expect.stringContaining('Hello World'))
2624
})
25+
26+
test('debug pretty prints multiple containers', () => {
27+
const HelloWorld = () => (
28+
<Fragment>
29+
<h1 data-testid="testId">Hello World</h1>
30+
<h1 data-testid="testId">Hello World</h1>
31+
</Fragment>
32+
)
33+
34+
const { debug } = render(<HelloWorld />)
35+
const multipleElements = screen.getAllByTestId('testId')
36+
debug(multipleElements)
37+
expect(console.log).toHaveBeenCalledTimes(2)
38+
expect(console.log).toHaveBeenCalledWith(
39+
expect.stringContaining('Hello World')
40+
)
41+
})
42+
43+
test('allows same arguments as prettyDOM', () => {
44+
const HelloWorld = () => <h1>Hello World</h1>
45+
const { debug, container } = render(<HelloWorld />)
46+
debug(container, 6, { highlight: false })
47+
expect(console.log).toHaveBeenCalledTimes(1)
48+
expect(console.log.mock.calls[0]).toMatchInlineSnapshot(`
49+
Array [
50+
"<div>
51+
...",
52+
]
53+
`)
54+
})

src/__tests__/end-to-end.js

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1+
import '@testing-library/jest-dom/extend-expect'
12
import { Component, h } from 'preact'
2-
3-
import { render, waitFor } from '..' // eslint-disable-line import/named
3+
import { screen, render, waitForElementToBeRemoved } from '..'
44

55
const fetchAMessage = () => new Promise((resolve) => {
66
// we are using random timeout here to simulate a real-time example
@@ -15,15 +15,15 @@ const fetchAMessage = () => new Promise((resolve) => {
1515
class ComponentWithLoader extends Component {
1616
state = { loading: true }
1717

18-
async componentDidMount () {
19-
const data = await fetchAMessage()
20-
21-
this.setState({data, loading: false}) // eslint-disable-line
18+
componentDidMount () {
19+
fetchAMessage().then(data => {
20+
this.setState({ data, loading: false })
21+
})
2222
}
2323

2424
render () {
2525
if (this.state.loading) {
26-
return <div>Loading...</div>
26+
return (<div>Loading...</div>)
2727
}
2828

2929
return (
@@ -35,11 +35,8 @@ class ComponentWithLoader extends Component {
3535
}
3636

3737
test('it waits for the data to be loaded', async () => {
38-
const { queryByText, queryByTestId } = render(<ComponentWithLoader />)
39-
40-
expect(queryByText('Loading...')).toBeTruthy()
41-
42-
await waitFor(() => expect(queryByText('Loading...')).toBeNull())
43-
44-
expect(queryByTestId('message').textContent).toMatch(/Hello World/)
38+
render(<ComponentWithLoader />)
39+
const loading = () => screen.getByText('Loading...')
40+
await waitForElementToBeRemoved(loading)
41+
expect(screen.getByTestId('message')).toHaveTextContent(/Hello World/)
4542
})

src/__tests__/events.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { createRef, h } from 'preact'
2-
32
import { fireEvent, render } from '..'
43

54
const eventTypes = [

src/__tests__/multi-base.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { h } from 'preact'
2-
32
import { render } from '..'
43

54
// These are created once per test suite and reused for each case

src/__tests__/render.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import '@testing-library/jest-dom/extend-expect'
2-
32
import { Component, createRef, h } from 'preact'
43
import Portal from 'preact-portal'
5-
64
import { render } from '..'
75

86
test('renders div into document', () => {

src/__tests__/rerender.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import '@testing-library/jest-dom/extend-expect'
2-
32
import { h } from 'preact'
4-
53
import { render } from '..'
64

75
test('rerender will re-render the element', () => {

0 commit comments

Comments
 (0)