feat: add rerender as an alias for update (#149)

<!-- Please provide enough information so that others can review your pull request. -->
<!-- Keep pull requests small and focused on a single change. -->

### Summary

Users of `react-testing-library` use `rerender` wording instead of `update`. Let's make it easier for them by aliasing it.
See: https://testing-library.com/docs/react-testing-library/api#rerender

### Test plan

Added cases for JS tests and TS typings
This commit is contained in:
Michał Pierzchała
2019-04-14 10:09:46 +02:00
committed by Kacper Wiszczuk
parent 488a2ca5cc
commit 439db6c823
5 changed files with 9 additions and 3 deletions
+2
View File
@@ -98,6 +98,8 @@ A method returning an array of `ReactTestInstance`s with matching a React compon
### `update: (element: React.Element<any>) => void`
_Also available under `rerender` alias_
Re-render the in-memory tree with a new root element. This simulates a React update at the root. If the new element has the same type and key as the previous element, the tree will be updated; otherwise, it will re-mount a new tree. This is useful when testing for `componentDidUpdate` behavior, by passing updated props to the component.
[Example code](https://github.com/callstack/react-native-testing-library/blob/f96d782d26dd4815dbfd01de6ef7a647efd1f693/src/__tests__/act.test.js#L31-L37)
+3 -2
View File
@@ -237,14 +237,15 @@ test('getAllByProp, queryAllByProps', () => {
test('update', () => {
const fn = jest.fn();
const { getByName, update } = render(<Banana onUpdate={fn} />);
const { getByName, update, rerender } = render(<Banana onUpdate={fn} />);
const button = getByName('Button');
button.props.onPress();
update(<Banana onUpdate={fn} />);
rerender(<Banana onUpdate={fn} />);
expect(fn).toHaveBeenCalledTimes(2);
expect(fn).toHaveBeenCalledTimes(3);
});
test('unmount', () => {
+1
View File
@@ -27,6 +27,7 @@ export default function render(
...getByAPI(instance),
...queryByAPI(instance),
update: updateWithAct(renderer),
rerender: updateWithAct(renderer), // alias for `update`
unmount: renderer.unmount,
toJSON: renderer.toJSON,
debug: debug(instance, renderer),
+1
View File
@@ -99,6 +99,7 @@ const debugFn = tree.debug();
const debugFnWithMessage = tree.debug('my message');
tree.update(<View />);
tree.rerender(<View />);
tree.unmount();
// fireEvent API tests
+1
View File
@@ -43,6 +43,7 @@ export interface RenderOptions {
export interface RenderAPI extends GetByAPI, QueryByAPI {
update(nextElement: React.ReactElement<any>): void;
rerender(nextElement: React.ReactElement<any>): void;
unmount(nextElement?: React.ReactElement<any>): void;
toJSON(): ReactTestRendererJSON | null;
debug(message?: string): void;