Skip to content

Commit 9810100

Browse files
committed
[tests] useProvideStore
1 parent 602cd15 commit 9810100

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

test/unit/ui-react/hooks.test.tsx

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ import {
7575
useMetricListener,
7676
useMetrics,
7777
useMetricsIds,
78+
useProvideStore,
7879
useQueries,
7980
useQueriesIds,
8081
useQueryIds,
@@ -536,6 +537,75 @@ describe('Context Hooks', () => {
536537
expect(didRender).toHaveBeenCalledTimes(1);
537538
});
538539

540+
test('useProvideStore', () => {
541+
const Test = () =>
542+
didRender(<>{JSON.stringify(useStore('s')?.getTables())}</>);
543+
const ProvideStore1 = () => {
544+
useProvideStore('s', store);
545+
return null;
546+
};
547+
const ProvideStore2 = () => {
548+
useProvideStore(
549+
's',
550+
useCreateStore(() => createStore().setCell('t2', 'r2', 'c2', 2)),
551+
);
552+
return null;
553+
};
554+
act(() => {
555+
renderer = create(
556+
<Provider>
557+
<Test />
558+
</Provider>,
559+
);
560+
});
561+
expect(renderer.toJSON()).toBeNull();
562+
expect(didRender).toHaveBeenCalledTimes(1);
563+
564+
act(() => {
565+
renderer.update(
566+
<Provider>
567+
<Test />
568+
<ProvideStore1 />
569+
</Provider>,
570+
);
571+
});
572+
expect(renderer.toJSON()).toEqual(JSON.stringify({t1: {r1: {c1: 1}}}));
573+
expect(didRender).toHaveBeenCalledTimes(3);
574+
575+
act(() => {
576+
renderer.update(
577+
<Provider>
578+
<Test />
579+
<ProvideStore1 />
580+
<ProvideStore1 />
581+
</Provider>,
582+
);
583+
});
584+
expect(renderer.toJSON()).toEqual(JSON.stringify({t1: {r1: {c1: 1}}}));
585+
expect(didRender).toHaveBeenCalledTimes(4);
586+
587+
act(() => {
588+
renderer.update(
589+
<Provider>
590+
<Test />
591+
<ProvideStore2 />
592+
</Provider>,
593+
);
594+
});
595+
expect(renderer.toJSON()).toEqual(JSON.stringify({t2: {r2: {c2: 2}}}));
596+
expect(didRender).toHaveBeenCalledTimes(6);
597+
598+
act(() => {
599+
renderer.update(
600+
<Provider>
601+
<Test />
602+
</Provider>,
603+
);
604+
});
605+
expect(renderer.toJSON()).toBeNull();
606+
expect(didRender).toHaveBeenCalledTimes(8);
607+
});
608+
539609
test('useMetrics', () => {
540610
const Test = () =>
541611
didRender(<>{JSON.stringify(useMetrics()?.getMetric('m1'))}</>);

0 commit comments

Comments
 (0)