Skip to content

Commit 325d59e

Browse files
committed
formatting
1 parent 036fbc0 commit 325d59e

13 files changed

+362
-373
lines changed

.github/workflows/pkg-pr-new-publish.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ on:
44
pull_request:
55
push:
66
branches:
7-
- "**"
7+
- '**'
88
tags:
9-
- "!**"
9+
- '!**'
1010

1111
jobs:
1212
prerelease:

src/assertable.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { RenderStream } from "./renderStream/createRenderStream.js";
1+
import {RenderStream} from './renderStream/createRenderStream.js'
22

33
export const assertableSymbol = Symbol.for(
4-
"@testing-library/react-render-stream:assertable"
5-
);
4+
'@testing-library/react-render-stream:assertable',
5+
)
66

77
/**
88
* A function or object that can be used in assertions, like e.g.
@@ -13,14 +13,14 @@ export const assertableSymbol = Symbol.for(
1313
```
1414
*/
1515
export type Assertable = {
16-
[assertableSymbol]: RenderStream<any>;
17-
};
16+
[assertableSymbol]: RenderStream<any>
17+
}
1818

1919
export function markAssertable<T extends {}>(
2020
assertable: T,
21-
stream: RenderStream<any>
21+
stream: RenderStream<any>,
2222
): T & Assertable {
2323
return Object.assign(assertable, {
2424
[assertableSymbol]: stream,
25-
});
25+
})
2626
}

src/index.ts

+8-8
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ export type {
33
RenderStream,
44
RenderStreamWithRenderFn,
55
RenderStreamOptions,
6-
} from "./renderStream/createRenderStream.js";
6+
} from './renderStream/createRenderStream.js'
77
export {
88
createRenderStream,
99
useTrackRenders,
1010
WaitForRenderTimeoutError,
11-
} from "./renderStream/createRenderStream.js";
11+
} from './renderStream/createRenderStream.js'
1212

13-
export type { SyncScreen } from "./renderStream/Render.js";
13+
export type {SyncScreen} from './renderStream/Render.js'
1414

15-
export { renderToRenderStream } from "./renderToRenderStream.js";
16-
export type { RenderStreamWithRenderResult } from "./renderToRenderStream.js";
17-
export { renderHookToSnapshotStream } from "./renderHookToSnapshotStream.js";
18-
export type { SnapshotStream } from "./renderHookToSnapshotStream.js";
15+
export {renderToRenderStream} from './renderToRenderStream.js'
16+
export type {RenderStreamWithRenderResult} from './renderToRenderStream.js'
17+
export {renderHookToSnapshotStream} from './renderHookToSnapshotStream.js'
18+
export type {SnapshotStream} from './renderHookToSnapshotStream.js'
1919

20-
export type { Assertable } from "./assertable.js";
20+
export type {Assertable} from './assertable.js'

src/jest/index.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { expect } from "@jest/globals";
2-
import { toRerender, toRenderExactlyTimes } from "./renderStreamMatchers.js";
3-
import type { RenderStreamMatchers } from "./renderStreamMatchers.js";
1+
import {expect} from '@jest/globals'
2+
import {toRerender, toRenderExactlyTimes} from './renderStreamMatchers.js'
3+
import type {RenderStreamMatchers} from './renderStreamMatchers.js'
44

55
expect.extend({
66
toRerender,
77
toRenderExactlyTimes,
8-
});
8+
})
99

1010
declare global {
1111
namespace jest {

src/jest/renderStreamMatchers.ts

+37-37
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
1-
import type { MatcherFunction } from "expect";
2-
import { WaitForRenderTimeoutError } from "@testing-library/react-render-stream";
1+
import type {MatcherFunction} from 'expect'
2+
import {WaitForRenderTimeoutError} from '@testing-library/react-render-stream'
33
import type {
44
Assertable,
55
NextRenderOptions,
66
RenderStream,
7-
} from "@testing-library/react-render-stream";
7+
} from '@testing-library/react-render-stream'
88
// explicitly imported the symbol from the internal file
99
// this will bundle the `Symbol.for` call twice, but we keep it private
10-
import { assertableSymbol } from "../assertable.js";
10+
import {assertableSymbol} from '../assertable.js'
1111

1212
export interface RenderStreamMatchers<R = void, T = {}> {
1313
toRerender: T extends RenderStream<any> | Assertable
1414
? (options?: NextRenderOptions) => Promise<R>
1515
: {
16-
error: "matcher needs to be called on a `takeRender` function, `takeSnapshot` function or `RenderStream` instance";
17-
};
16+
error: 'matcher needs to be called on a `takeRender` function, `takeSnapshot` function or `RenderStream` instance'
17+
}
1818

1919
toRenderExactlyTimes: T extends RenderStream<any> | Assertable
2020
? (count: number, options?: NextRenderOptions) => Promise<R>
2121
: {
22-
error: "matcher needs to be called on a `takeRender` function, `takeSnapshot` function or `RenderStream` instance";
23-
};
22+
error: 'matcher needs to be called on a `takeRender` function, `takeSnapshot` function or `RenderStream` instance'
23+
}
2424
}
2525

2626
export const toRerender: MatcherFunction<[options?: NextRenderOptions]> =
2727
async function (actual, options) {
28-
const _stream = actual as RenderStream<any> | Assertable;
28+
const _stream = actual as RenderStream<any> | Assertable
2929
const stream =
30-
assertableSymbol in _stream ? _stream[assertableSymbol] : _stream;
31-
const hint = this.utils.matcherHint("toRerender");
32-
let pass = true;
30+
assertableSymbol in _stream ? _stream[assertableSymbol] : _stream
31+
const hint = this.utils.matcherHint('toRerender')
32+
let pass = true
3333
try {
34-
await stream.peekRender({ timeout: 100, ...options });
34+
await stream.peekRender({timeout: 100, ...options})
3535
} catch (e) {
3636
if (e instanceof WaitForRenderTimeoutError) {
37-
pass = false;
37+
pass = false
3838
} else {
39-
throw e;
39+
throw e
4040
}
4141
}
4242

@@ -45,60 +45,60 @@ export const toRerender: MatcherFunction<[options?: NextRenderOptions]> =
4545
message() {
4646
return (
4747
hint +
48-
`\n\nExpected component to${pass ? " not" : ""} rerender, ` +
49-
`but it did${pass ? "" : " not"}.`
50-
);
48+
`\n\nExpected component to${pass ? ' not' : ''} rerender, ` +
49+
`but it did${pass ? '' : ' not'}.`
50+
)
5151
},
52-
};
53-
};
52+
}
53+
}
5454

5555
/** to be thrown to "break" test execution and fail it */
56-
const failed = {};
56+
const failed = {}
5757

5858
export const toRenderExactlyTimes: MatcherFunction<
5959
[times: number, options?: NextRenderOptions]
6060
> = async function (actual, times, optionsPerRender) {
61-
const _stream = actual as RenderStream<any> | Assertable;
61+
const _stream = actual as RenderStream<any> | Assertable
6262
const stream =
63-
assertableSymbol in _stream ? _stream[assertableSymbol] : _stream;
64-
const options = { timeout: 100, ...optionsPerRender };
65-
const hint = this.utils.matcherHint("toRenderExactlyTimes");
66-
let pass = true;
63+
assertableSymbol in _stream ? _stream[assertableSymbol] : _stream
64+
const options = {timeout: 100, ...optionsPerRender}
65+
const hint = this.utils.matcherHint('toRenderExactlyTimes')
66+
let pass = true
6767
try {
6868
if (stream.totalRenderCount() > times) {
69-
throw failed;
69+
throw failed
7070
}
7171
try {
7272
while (stream.totalRenderCount() < times) {
73-
await stream.waitForNextRender(options);
73+
await stream.waitForNextRender(options)
7474
}
7575
} catch (e) {
7676
// timeouts here should just fail the test, rethrow other errors
77-
throw e instanceof WaitForRenderTimeoutError ? failed : e;
77+
throw e instanceof WaitForRenderTimeoutError ? failed : e
7878
}
7979
try {
80-
await stream.waitForNextRender(options);
80+
await stream.waitForNextRender(options)
8181
} catch (e) {
8282
// we are expecting a timeout here, so swallow that error, rethrow others
8383
if (!(e instanceof WaitForRenderTimeoutError)) {
84-
throw e;
84+
throw e
8585
}
8686
}
8787
} catch (e) {
8888
if (e === failed) {
89-
pass = false;
89+
pass = false
9090
} else {
91-
throw e;
91+
throw e
9292
}
9393
}
9494
return {
9595
pass,
9696
message() {
9797
return (
9898
hint +
99-
` Expected component to${pass ? " not" : ""} render exactly ${times}.` +
99+
` Expected component to${pass ? ' not' : ''} render exactly ${times}.` +
100100
` It rendered ${stream.totalRenderCount()} times.`
101-
);
101+
)
102102
},
103-
};
104-
};
103+
}
104+
}

src/renderHookToSnapshotStream.tsx

+31-31
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,88 @@
1-
import { RenderHookOptions } from "@testing-library/react";
2-
import { createRenderStream } from "./renderStream/createRenderStream.js";
3-
import type { NextRenderOptions } from "./renderStream/createRenderStream.js";
1+
import {RenderHookOptions} from '@testing-library/react'
2+
import {createRenderStream} from './renderStream/createRenderStream.js'
3+
import type {NextRenderOptions} from './renderStream/createRenderStream.js'
44

5-
import { Render } from "./renderStream/Render.js";
6-
import { createElement } from "rehackt";
7-
import { Assertable, assertableSymbol, markAssertable } from "./assertable.js";
5+
import {Render} from './renderStream/Render.js'
6+
import {createElement} from 'rehackt'
7+
import {Assertable, assertableSymbol, markAssertable} from './assertable.js'
88

99
export interface SnapshotStream<Snapshot, Props> extends Assertable {
1010
/**
1111
* An array of all renders that have happened so far.
1212
* Errors thrown during component render will be captured here, too.
1313
*/
1414
renders: Array<
15-
| Render<{ value: Snapshot }>
16-
| { phase: "snapshotError"; count: number; error: unknown }
17-
>;
15+
| Render<{value: Snapshot}>
16+
| {phase: 'snapshotError'; count: number; error: unknown}
17+
>
1818
/**
1919
* Peeks the next render from the current iterator position, without advancing the iterator.
2020
* If no render has happened yet, it will wait for the next render to happen.
2121
* @throws {WaitForRenderTimeoutError} if no render happens within the timeout
2222
*/
23-
peekSnapshot(options?: NextRenderOptions): Promise<Snapshot>;
23+
peekSnapshot(options?: NextRenderOptions): Promise<Snapshot>
2424
/**
2525
* Iterates to the next render and returns it.
2626
* If no render has happened yet, it will wait for the next render to happen.
2727
* @throws {WaitForRenderTimeoutError} if no render happens within the timeout
2828
*/
2929
takeSnapshot: Assertable &
30-
((options?: NextRenderOptions) => Promise<Snapshot>);
30+
((options?: NextRenderOptions) => Promise<Snapshot>)
3131
/**
3232
* Returns the total number of renders.
3333
*/
34-
totalSnapshotCount(): number;
34+
totalSnapshotCount(): number
3535
/**
3636
* Returns the current render.
3737
* @throws {Error} if no render has happened yet
3838
*/
39-
getCurrentSnapshot(): Snapshot;
39+
getCurrentSnapshot(): Snapshot
4040
/**
4141
* Waits for the next render to happen.
4242
* Does not advance the render iterator.
4343
*/
44-
waitForNextSnapshot(options?: NextRenderOptions): Promise<Snapshot>;
45-
rerender: (rerenderCallbackProps: Props) => void;
46-
unmount: () => void;
44+
waitForNextSnapshot(options?: NextRenderOptions): Promise<Snapshot>
45+
rerender: (rerenderCallbackProps: Props) => void
46+
unmount: () => void
4747
}
4848

4949
export function renderHookToSnapshotStream<ReturnValue, Props extends {}>(
5050
renderCallback: (props: Props) => ReturnValue,
51-
{ initialProps, ...options }: RenderHookOptions<Props> = {}
51+
{initialProps, ...options}: RenderHookOptions<Props> = {},
5252
): SnapshotStream<ReturnValue, Props> {
53-
const { render, ...stream } = createRenderStream<{ value: ReturnValue }>();
53+
const {render, ...stream} = createRenderStream<{value: ReturnValue}>()
5454

55-
const HookComponent: React.FC<Props> = (props) => {
56-
stream.replaceSnapshot({ value: renderCallback(props) });
57-
return null;
58-
};
55+
const HookComponent: React.FC<Props> = props => {
56+
stream.replaceSnapshot({value: renderCallback(props)})
57+
return null
58+
}
5959

60-
const { rerender: baseRerender, unmount } = render(
60+
const {rerender: baseRerender, unmount} = render(
6161
createElement(HookComponent, initialProps),
62-
options
63-
);
62+
options,
63+
)
6464

6565
function rerender(rerenderCallbackProps: Props) {
66-
return baseRerender(createElement(HookComponent, rerenderCallbackProps));
66+
return baseRerender(createElement(HookComponent, rerenderCallbackProps))
6767
}
6868

6969
return {
7070
[assertableSymbol]: stream,
7171
renders: stream.renders,
7272
totalSnapshotCount: stream.totalRenderCount,
7373
async peekSnapshot(options) {
74-
return (await stream.peekRender(options)).snapshot.value;
74+
return (await stream.peekRender(options)).snapshot.value
7575
},
7676
takeSnapshot: markAssertable(async function takeSnapshot(options) {
77-
return (await stream.takeRender(options)).snapshot.value;
77+
return (await stream.takeRender(options)).snapshot.value
7878
}, stream),
7979
getCurrentSnapshot() {
80-
return stream.getCurrentRender().snapshot.value;
80+
return stream.getCurrentRender().snapshot.value
8181
},
8282
async waitForNextSnapshot(options) {
83-
return (await stream.waitForNextRender(options)).snapshot.value;
83+
return (await stream.waitForNextRender(options)).snapshot.value
8484
},
8585
rerender,
8686
unmount,
87-
};
87+
}
8888
}

0 commit comments

Comments
 (0)