Skip to content

Commit 415616f

Browse files
RoystonSKent C. Dodds
authored and
Kent C. Dodds
committed
docs: fix up custom render + rerender samples (#226)
The get/query methods in the "how to override data-testid" sample were not `.bind`ing correctly; I've replaced them with arrow functions as suggested. They were also passing in `container`, which wasn't correct. Also, a `rerender` implementation is needed in such a custom renderer, so I've added one to the sample. I've also fixed up the separate custom rerender sample as it a) incorrectly advertised an options parameter, and b) didn't pass along the original baseElement. For: #225
1 parent 11a41ce commit 415616f

File tree

2 files changed

+45
-25
lines changed

2 files changed

+45
-25
lines changed

.all-contributorsrc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,17 @@
595595
"contributions": [
596596
"doc"
597597
]
598+
},
599+
{
600+
"login": "RoystonS",
601+
"name": "Royston Shufflebotham",
602+
"avatar_url": "https://avatars0.githubusercontent.com/u/19773?v=4",
603+
"profile": "https://github.com/RoystonS",
604+
"contributions": [
605+
"bug",
606+
"doc",
607+
"example"
608+
]
598609
}
599610
]
600611
}

README.md

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,20 @@
1010

1111
<hr />
1212

13+
<!-- prettier-ignore-start -->
1314
[![Build Status][build-badge]][build]
1415
[![Code Coverage][coverage-badge]][coverage]
1516
[![version][version-badge]][package] [![downloads][downloads-badge]][npmtrends]
1617
[![MIT License][license-badge]][license]
1718

18-
[![All Contributors](https://img.shields.io/badge/all_contributors-61-orange.svg?style=flat-square)](#contributors)
19+
[![All Contributors](https://img.shields.io/badge/all_contributors-62-orange.svg?style=flat-square)](#contributors)
1920
[![PRs Welcome][prs-badge]][prs] [![Code of Conduct][coc-badge]][coc]
2021
[![Join the community on Spectrum][spectrum-badge]][spectrum]
2122

2223
[![Watch on GitHub][github-watch-badge]][github-watch]
2324
[![Star on GitHub][github-star-badge]][github-star]
2425
[![Tweet][twitter-badge]][twitter]
26+
<!-- prettier-ignore-end -->
2527

2628
<div align="center">
2729
<a href="https://testingjavascript.com">
@@ -317,12 +319,15 @@ return value of the customRender.
317319
```js
318320
// test-utils.js
319321

320-
const customRender = (node, options) => {
321-
const rendered = render(<div>{node}</div>, options)
322+
const customRender = (ui, options) => {
323+
const rendered = render(<div>{ui}</div>, options)
322324
return {
323325
...rendered,
324-
rerender: (ui, options) =>
325-
customRender(ui, {container: rendered.container, ...options}),
326+
rerender: newUi =>
327+
customRender(newUi, {
328+
container: rendered.container,
329+
baseElement: rendered.baseElement,
330+
}),
326331
}
327332
}
328333
```
@@ -620,25 +625,23 @@ change. This follows the precedent set by
620625
[React Native Web](https://github.com/kentcdodds/react-testing-library/issues/1)
621626
which uses a `testID` prop which emits a `data-testid` attribute on the element.
622627
628+
<!-- prettier-ignore-start -->
623629
[#76](https://github.com/kentcdodds/dom-testing-library/issues/76#issuecomment-406321122)
624630
[#128](https://github.com/kentcdodds/dom-testing-library/issues/128)
625631
[#204](https://github.com/kentcdodds/react-testing-library/issues/204).
632+
<!-- prettier-ignore-end -->
626633
627634
What you can do is to create a [custom render](#custom-render) that overwrites
628-
`getByTestId`:
635+
`getByTestId` and related methods, and also `rerender`:
629636
630637
```js
631638
// test-utils.js
632639
import {render, queryHelpers} from 'react-testing-library'
633640

634-
export const queryByTestId = queryHelpers.queryByAttribute.bind(
635-
null,
636-
'data-test-id',
637-
)
638-
export const queryAllByTestId = queryHelpers.queryAllByAttribute.bind(
639-
null,
640-
'data-test-id',
641-
)
641+
export const queryByTestId = (...rest) =>
642+
queryHelpers.queryByAttribute('data-test-id', ...rest)
643+
export const queryAllByTestId = (...rest) =>
644+
queryHelpers.queryAllByAttribute('data-test-id', ...rest)
642645

643646
export function getAllByTestId(container, id, ...rest) {
644647
const els = queryAllByTestId(container, id, ...rest)
@@ -651,19 +654,25 @@ export function getAllByTestId(container, id, ...rest) {
651654
return els
652655
}
653656

654-
export function getByTestId(...args) {
655-
return queryHelpers.firstResultOrNull(getAllByTestId, ...args)
656-
}
657+
export const getByTestId = (...rest) =>
658+
queryHelpers.firstResultOrNull(getAllByTestId, ...rest)
657659

658-
const customRender = (container, options) => {
659-
const utils = render(container, options)
660+
const customRender = (ui, options) => {
661+
const rendered = render(ui, options)
660662

661663
return {
662-
...utils,
663-
getByTestId: getByTestId.bind(container),
664-
getAllByTestId: getAllByTestId.bind(container),
665-
queryByTestId: queryByTestId.bind(container),
666-
queryAllByTestId: queryAllByTestId.bind(container),
664+
...rendered,
665+
getByTestId: (...rest) => getByTestId(rendered.container, ...rest),
666+
getAllByTestId: (...rest) => getAllByTestId(rendered.container, ...rest),
667+
queryByTestId: (...rest) => queryByTestId(rendered.container, ...rest),
668+
queryAllByTestId: (...rest) =>
669+
queryAllByTestId(rendered.container, ...rest),
670+
671+
rerender: newUi =>
672+
customRender(newUi, {
673+
container: rendered.container,
674+
baseElement: rendered.baseElement,
675+
}),
667676
}
668677
}
669678

@@ -1378,7 +1387,7 @@ Thanks goes to these people ([emoji key][emojis]):
13781387
| [<img src="https://avatars2.githubusercontent.com/u/5286559?v=4" width="100px;"/><br /><sub><b>Mark Pollmann</b></sub>](https://markpollmann.com/)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=MarkPollmann "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/1213123?v=4" width="100px;"/><br /><sub><b>Ehtesham Kafeel</b></sub>](https://github.com/ehteshamkafeel)<br />[💻](https://github.com/kentcdodds/react-testing-library/commits?author=ehteshamkafeel "Code") [📖](https://github.com/kentcdodds/react-testing-library/commits?author=ehteshamkafeel "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/1493505?v=4" width="100px;"/><br /><sub><b>Julio Pavón</b></sub>](http://jpavon.com)<br />[💻](https://github.com/kentcdodds/react-testing-library/commits?author=jpavon "Code") | [<img src="https://avatars3.githubusercontent.com/u/1765048?v=4" width="100px;"/><br /><sub><b>Duncan L</b></sub>](http://www.duncanleung.com/)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=duncanleung "Documentation") [💡](#example-duncanleung "Examples") | [<img src="https://avatars1.githubusercontent.com/u/700778?v=4" width="100px;"/><br /><sub><b>Tiago Almeida</b></sub>](https://www.linkedin.com/in/tyagow/?locale=en_US)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=tyagow "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/4982001?v=4" width="100px;"/><br /><sub><b>Robert Smith</b></sub>](http://rbrtsmith.com/)<br />[🐛](https://github.com/kentcdodds/react-testing-library/issues?q=author%3Arbrtsmith "Bug reports") | [<img src="https://avatars0.githubusercontent.com/u/1700355?v=4" width="100px;"/><br /><sub><b>Zach Green</b></sub>](https://offbyone.tech)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=zgreen "Documentation") |
13791388
| [<img src="https://avatars3.githubusercontent.com/u/881986?v=4" width="100px;"/><br /><sub><b>dadamssg</b></sub>](https://github.com/dadamssg)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=dadamssg "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/8734097?v=4" width="100px;"/><br /><sub><b>Yazan Aabed</b></sub>](https://www.yaabed.com/)<br />[📝](#blog-YazanAabeed "Blogposts") | [<img src="https://avatars0.githubusercontent.com/u/556258?v=4" width="100px;"/><br /><sub><b>Tim</b></sub>](https://github.com/timbonicus)<br />[🐛](https://github.com/kentcdodds/react-testing-library/issues?q=author%3Atimbonicus "Bug reports") [💻](https://github.com/kentcdodds/react-testing-library/commits?author=timbonicus "Code") [📖](https://github.com/kentcdodds/react-testing-library/commits?author=timbonicus "Documentation") [⚠️](https://github.com/kentcdodds/react-testing-library/commits?author=timbonicus "Tests") | [<img src="https://avatars3.githubusercontent.com/u/6682655?v=4" width="100px;"/><br /><sub><b>Divyanshu Maithani</b></sub>](http://divyanshu.xyz)<br />[✅](#tutorial-divyanshu013 "Tutorials") [📹](#video-divyanshu013 "Videos") | [<img src="https://avatars2.githubusercontent.com/u/9116042?v=4" width="100px;"/><br /><sub><b>Deepak Grover</b></sub>](https://www.linkedin.com/in/metagrover)<br />[✅](#tutorial-metagrover "Tutorials") [📹](#video-metagrover "Videos") | [<img src="https://avatars0.githubusercontent.com/u/16276358?v=4" width="100px;"/><br /><sub><b>Eyal Cohen</b></sub>](https://github.com/eyalcohen4)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=eyalcohen4 "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/7452681?v=4" width="100px;"/><br /><sub><b>Peter Makowski</b></sub>](https://github.com/petermakowski)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=petermakowski "Documentation") |
13801389
| [<img src="https://avatars2.githubusercontent.com/u/20361668?v=4" width="100px;"/><br /><sub><b>Michiel Nuyts</b></sub>](https://github.com/Michielnuyts)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=Michielnuyts "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/1195863?v=4" width="100px;"/><br /><sub><b>Joe Ng'ethe</b></sub>](https://github.com/joeynimu)<br />[💻](https://github.com/kentcdodds/react-testing-library/commits?author=joeynimu "Code") [📖](https://github.com/kentcdodds/react-testing-library/commits?author=joeynimu "Documentation") | [<img src="https://avatars3.githubusercontent.com/u/19998290?v=4" width="100px;"/><br /><sub><b>Kate</b></sub>](https://github.com/Enikol)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=Enikol "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/11980217?v=4" width="100px;"/><br /><sub><b>Sean</b></sub>](http://www.seanrparker.com)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=SeanRParker "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/17031?v=4" width="100px;"/><br /><sub><b>James Long</b></sub>](http://jlongster.com)<br />[🤔](#ideas-jlongster "Ideas, Planning, & Feedback") [📦](#platform-jlongster "Packaging/porting to new platform") | [<img src="https://avatars1.githubusercontent.com/u/10118777?v=4" width="100px;"/><br /><sub><b>Herb Hagely</b></sub>](https://github.com/hhagely)<br />[💡](#example-hhagely "Examples") | [<img src="https://avatars2.githubusercontent.com/u/5779538?v=4" width="100px;"/><br /><sub><b>Alex Wendte</b></sub>](http://www.wendtedesigns.com/)<br />[💡](#example-themostcolm "Examples") |
1381-
| [<img src="https://avatars0.githubusercontent.com/u/6998954?v=4" width="100px;"/><br /><sub><b>Monica Powell</b></sub>](http://www.aboutmonica.com)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=M0nica "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/2699953?v=4" width="100px;"/><br /><sub><b>Vitaly Sivkov</b></sub>](http://sivkoff.com)<br />[💻](https://github.com/kentcdodds/react-testing-library/commits?author=sivkoff "Code") | [<img src="https://avatars3.githubusercontent.com/u/7049?v=4" width="100px;"/><br /><sub><b>Weyert de Boer</b></sub>](https://github.com/weyert)<br />[🤔](#ideas-weyert "Ideas, Planning, & Feedback") [👀](#review-weyert "Reviewed Pull Requests") | [<img src="https://avatars3.githubusercontent.com/u/13613037?v=4" width="100px;"/><br /><sub><b>EstebanMarin</b></sub>](https://github.com/EstebanMarin)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=EstebanMarin "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/13953703?v=4" width="100px;"/><br /><sub><b>Victor Martins</b></sub>](https://github.com/vctormb)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=vctormb "Documentation") |
1390+
| [<img src="https://avatars0.githubusercontent.com/u/6998954?v=4" width="100px;"/><br /><sub><b>Monica Powell</b></sub>](http://www.aboutmonica.com)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=M0nica "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/2699953?v=4" width="100px;"/><br /><sub><b>Vitaly Sivkov</b></sub>](http://sivkoff.com)<br />[💻](https://github.com/kentcdodds/react-testing-library/commits?author=sivkoff "Code") | [<img src="https://avatars3.githubusercontent.com/u/7049?v=4" width="100px;"/><br /><sub><b>Weyert de Boer</b></sub>](https://github.com/weyert)<br />[🤔](#ideas-weyert "Ideas, Planning, & Feedback") [👀](#review-weyert "Reviewed Pull Requests") | [<img src="https://avatars3.githubusercontent.com/u/13613037?v=4" width="100px;"/><br /><sub><b>EstebanMarin</b></sub>](https://github.com/EstebanMarin)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=EstebanMarin "Documentation") | [<img src="https://avatars2.githubusercontent.com/u/13953703?v=4" width="100px;"/><br /><sub><b>Victor Martins</b></sub>](https://github.com/vctormb)<br />[📖](https://github.com/kentcdodds/react-testing-library/commits?author=vctormb "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/19773?v=4" width="100px;"/><br /><sub><b>Royston Shufflebotham</b></sub>](https://github.com/RoystonS)<br />[🐛](https://github.com/kentcdodds/react-testing-library/issues?q=author%3ARoystonS "Bug reports") [📖](https://github.com/kentcdodds/react-testing-library/commits?author=RoystonS "Documentation") [💡](#example-RoystonS "Examples") |
13821391
13831392
<!-- ALL-CONTRIBUTORS-LIST:END -->
13841393

0 commit comments

Comments
 (0)