Skip to content

Commit 0050d3e

Browse files
committed
Fix lint
1 parent c4bdb4a commit 0050d3e

File tree

2 files changed

+42
-18
lines changed

2 files changed

+42
-18
lines changed

src/__tests__/index.test.tsx

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,31 @@
1-
import ProviderStack from "index";
2-
import { PropsWithChildren } from "react";
31
import { render } from '@testing-library/react';
42
import { axe } from 'jest-axe';
3+
import { PropsWithChildren } from 'react';
54

6-
function FakeProvider1({children}: PropsWithChildren) {
7-
return <div data-testid="1">{children}</div>
5+
import ProviderStack from 'index';
6+
7+
function FakeProvider1({ children }: PropsWithChildren) {
8+
return <div data-testid="1">{children}</div>;
89
}
910

10-
function FakeProvider2({children}: PropsWithChildren) {
11-
return <div data-testid="2">{children}</div>
11+
function FakeProvider2({ children }: PropsWithChildren) {
12+
return <div data-testid="2">{children}</div>;
1213
}
1314

14-
function FakeProvider3({children}: PropsWithChildren) {
15-
return <div data-testid="3">{children}</div>
15+
function FakeProvider3({ children }: PropsWithChildren) {
16+
return <div data-testid="3">{children}</div>;
1617
}
1718

1819
describe('#react-provider-stack', () => {
1920
it('renders providers in order', async () => {
2021
const { container, findByTestId } = render(
21-
<ProviderStack providers={[FakeProvider1, FakeProvider2, FakeProvider3]}>Hello, World!</ProviderStack>
22+
<ProviderStack providers={[FakeProvider1, FakeProvider2, FakeProvider3]}>
23+
Hello, World!
24+
</ProviderStack>,
2225
);
23-
const $provider1 = await findByTestId("1");
24-
const $provider2 = await findByTestId("2");
25-
const $provider3 = await findByTestId("3");
26+
const $provider1 = await findByTestId('1');
27+
const $provider2 = await findByTestId('2');
28+
const $provider3 = await findByTestId('3');
2629

2730
expect($provider1).toContainElement($provider2);
2831
expect($provider2).toContainElement($provider3);
@@ -33,7 +36,9 @@ describe('#react-provider-stack', () => {
3336

3437
it('renders children', async () => {
3538
const { getByText } = render(
36-
<ProviderStack providers={[FakeProvider1, FakeProvider2, FakeProvider3]}>Hello, World!</ProviderStack>
39+
<ProviderStack providers={[FakeProvider1, FakeProvider2, FakeProvider3]}>
40+
Hello, World!
41+
</ProviderStack>,
3742
);
3843
expect(getByText('Hello, World!')).toBeVisible();
3944
});

src/index.tsx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,30 @@
11
import { PropsWithChildren, ReactNode, useMemo } from 'react';
22

33
interface ProviderStackProps {
4-
children: ReactNode
5-
providers: Array<({ children }: PropsWithChildren) => JSX.Element>
4+
children: ReactNode;
5+
providers: Array<React.FC<PropsWithChildren>>;
66
}
77

8-
export default function ProviderStack({ providers, children }: ProviderStackProps) {
9-
const Providers = useMemo(() => providers.reduceRight((Acc, Provider) => () => <Provider><Acc /></Provider>, () => <>{children}</>), [children, providers]);
10-
return <Providers />
8+
export default function ProviderStack({
9+
providers,
10+
children,
11+
}: ProviderStackProps) {
12+
const Providers = useMemo(
13+
() =>
14+
providers.reduceRight(
15+
(Acc, Provider) =>
16+
Object.assign(
17+
() => (
18+
<Provider>
19+
<Acc />
20+
</Provider>
21+
),
22+
{ displayName: Provider.displayName },
23+
),
24+
() => <>{children}</>,
25+
),
26+
[children, providers],
27+
);
28+
29+
return <Providers />;
1130
}

0 commit comments

Comments
 (0)