Skip to content

Commit 5ae7a80

Browse files
committed
Use jest.fn to count function calls
1 parent a6691c7 commit 5ae7a80

File tree

1 file changed

+22
-26
lines changed

1 file changed

+22
-26
lines changed

packages/components/src/slot-fill/test/observable-map.js

+22-26
Original file line numberDiff line numberDiff line change
@@ -14,42 +14,39 @@ import {
1414
describe( 'ObservableMap', () => {
1515
test( 'should observe individual values', () => {
1616
const map = observableMap();
17-
let notifsFromA = 0;
18-
let notifsFromB = 0;
1917

20-
const unsubA = map.subscribe( 'a', () => {
21-
notifsFromA++;
22-
} );
23-
const unsubB = map.subscribe( 'b', () => {
24-
notifsFromB++;
25-
} );
18+
const listenerA = jest.fn();
19+
const listenerB = jest.fn();
20+
21+
const unsubA = map.subscribe( 'a', listenerA );
22+
const unsubB = map.subscribe( 'b', listenerB );
2623

2724
// check that setting `a` doesn't notify the `b` listener
2825
map.set( 'a', 1 );
29-
expect( notifsFromA ).toBe( 1 );
30-
expect( notifsFromB ).toBe( 0 );
26+
expect( listenerA ).toHaveBeenCalledTimes( 1 );
27+
expect( listenerB ).toHaveBeenCalledTimes( 0 );
3128

3229
// check that setting `b` doesn't notify the `a` listener
3330
map.set( 'b', 2 );
34-
expect( notifsFromA ).toBe( 1 );
35-
expect( notifsFromB ).toBe( 1 );
31+
expect( listenerA ).toHaveBeenCalledTimes( 1 );
32+
expect( listenerB ).toHaveBeenCalledTimes( 1 );
3633

3734
// check that `delete` triggers notifications, too
3835
map.delete( 'a' );
39-
expect( notifsFromA ).toBe( 2 );
40-
expect( notifsFromB ).toBe( 1 );
36+
expect( listenerA ).toHaveBeenCalledTimes( 2 );
37+
expect( listenerB ).toHaveBeenCalledTimes( 1 );
4138

4239
// check that the subscription survived the `delete`
4340
map.set( 'a', 2 );
44-
expect( notifsFromA ).toBe( 3 );
45-
expect( notifsFromB ).toBe( 1 );
41+
expect( listenerA ).toHaveBeenCalledTimes( 3 );
42+
expect( listenerB ).toHaveBeenCalledTimes( 1 );
4643

47-
// check that unsubscription really works.
44+
// check that unsubscription really works
4845
unsubA();
4946
unsubB();
5047
map.set( 'a', 3 );
51-
expect( notifsFromA ).toBe( 3 );
52-
expect( notifsFromB ).toBe( 1 );
48+
expect( listenerA ).toHaveBeenCalledTimes( 3 );
49+
expect( listenerB ).toHaveBeenCalledTimes( 1 );
5350
} );
5451
} );
5552

@@ -58,30 +55,29 @@ describe( 'useObservableValue', () => {
5855
const map = observableMap();
5956
map.set( 'a', 1 );
6057

61-
let renders = 0;
62-
function MapUI() {
58+
const MapUI = jest.fn( () => {
6359
const value = useObservableValue( map, 'a' );
64-
renders++;
6560
return <div>value is { value }</div>;
66-
}
61+
} );
6762

6863
render( <MapUI /> );
6964
expect( screen.getByText( /^value is/ ) ).toHaveTextContent(
7065
'value is 1'
7166
);
72-
expect( renders ).toBe( 1 );
67+
expect( MapUI ).toHaveBeenCalledTimes( 1 );
7368

7469
act( () => {
7570
map.set( 'a', 2 );
7671
} );
7772
expect( screen.getByText( /^value is/ ) ).toHaveTextContent(
7873
'value is 2'
7974
);
80-
expect( renders ).toBe( 2 );
75+
expect( MapUI ).toHaveBeenCalledTimes( 2 );
8176

77+
// check that setting unobserved map key doesn't trigger a render at all
8278
act( () => {
8379
map.set( 'b', 1 );
8480
} );
85-
expect( renders ).toBe( 2 );
81+
expect( MapUI ).toHaveBeenCalledTimes( 2 );
8682
} );
8783
} );

0 commit comments

Comments
 (0)