Skip to content

Commit 0d85320

Browse files
committed
Update WizardStep.spec.tsx
1 parent 4f49ad8 commit 0d85320

File tree

1 file changed

+125
-7
lines changed

1 file changed

+125
-7
lines changed
Lines changed: 125 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,147 @@
11
import React from 'react';
22
import { render } from '@testing-library/react';
3+
import userEvent from '@testing-library/user-event';
34

45
import { Wizard } from '../Wizard/Wizard';
56

6-
import { WizardStep } from '.';
7+
import { useWizardStepContext, WizardStep } from '.';
78

89
describe('packages/wizard-step', () => {
910
test('does not render outside WizardContext', () => {
1011
const { container } = render(
11-
<WizardStep data-testid="step-1" title="Step">
12-
Content
13-
</WizardStep>,
12+
<WizardStep data-testid="step-1">Content</WizardStep>,
1413
);
1514

1615
expect(container.firstChild).toBeNull();
1716
});
17+
1818
test('renders in WizardContext', () => {
1919
const { getByTestId } = render(
2020
<Wizard>
21-
<WizardStep data-testid="step-1" title="Step">
22-
Content
23-
</WizardStep>
21+
<Wizard.Step>
22+
<div data-testid="step-1">Content</div>
23+
</Wizard.Step>
2424
</Wizard>,
2525
);
2626

2727
expect(getByTestId('step-1')).toBeInTheDocument();
2828
});
29+
30+
describe('requiresAcknowledgement', () => {
31+
test('when false, does not require acknowledgement', () => {
32+
const TestComponent = () => {
33+
const { requiresAcknowledgement } = useWizardStepContext();
34+
return (
35+
<div data-testid="requires-ack">
36+
{String(requiresAcknowledgement)}
37+
</div>
38+
);
39+
};
40+
41+
const { getByTestId } = render(
42+
<Wizard>
43+
<Wizard.Step>
44+
<TestComponent />
45+
</Wizard.Step>
46+
</Wizard>,
47+
);
48+
49+
expect(getByTestId('requires-ack')).toHaveTextContent('false');
50+
});
51+
52+
test('when true, requires acknowledgement', () => {
53+
const TestComponent = () => {
54+
const { requiresAcknowledgement } = useWizardStepContext();
55+
return (
56+
<div data-testid="requires-ack">
57+
{String(requiresAcknowledgement)}
58+
</div>
59+
);
60+
};
61+
62+
const { getByTestId } = render(
63+
<Wizard>
64+
<Wizard.Step requiresAcknowledgement>
65+
<TestComponent />
66+
</Wizard.Step>
67+
</Wizard>,
68+
);
69+
70+
expect(getByTestId('requires-ack')).toHaveTextContent('true');
71+
});
72+
73+
test('isAcknowledged starts as false', () => {
74+
const TestComponent = () => {
75+
const { isAcknowledged } = useWizardStepContext();
76+
return <div data-testid="is-ack">{String(isAcknowledged)}</div>;
77+
};
78+
79+
const { getByTestId } = render(
80+
<Wizard>
81+
<Wizard.Step requiresAcknowledgement>
82+
<TestComponent />
83+
</Wizard.Step>
84+
</Wizard>,
85+
);
86+
87+
expect(getByTestId('is-ack')).toHaveTextContent('false');
88+
});
89+
90+
test('setAcknowledged updates isAcknowledged state', async () => {
91+
const TestComponent = () => {
92+
const { isAcknowledged, setAcknowledged } = useWizardStepContext();
93+
return (
94+
<>
95+
<div data-testid="is-ack">{String(isAcknowledged)}</div>
96+
<button onClick={() => setAcknowledged(true)}>Acknowledge</button>
97+
</>
98+
);
99+
};
100+
101+
const { getByTestId, getByRole } = render(
102+
<Wizard>
103+
<Wizard.Step requiresAcknowledgement>
104+
<TestComponent />
105+
</Wizard.Step>
106+
</Wizard>,
107+
);
108+
109+
expect(getByTestId('is-ack')).toHaveTextContent('false');
110+
111+
await userEvent.click(getByRole('button', { name: 'Acknowledge' }));
112+
113+
expect(getByTestId('is-ack')).toHaveTextContent('true');
114+
});
115+
116+
test('acknowledgement state resets between steps', async () => {
117+
const TestComponent = () => {
118+
const { isAcknowledged, setAcknowledged } = useWizardStepContext();
119+
return (
120+
<>
121+
<div data-testid="is-ack">{String(isAcknowledged)}</div>
122+
<button onClick={() => setAcknowledged(true)}>Acknowledge</button>
123+
</>
124+
);
125+
};
126+
127+
const { getByTestId, getByRole } = render(
128+
<Wizard>
129+
<Wizard.Step requiresAcknowledgement>
130+
<TestComponent />
131+
</Wizard.Step>
132+
<Wizard.Step requiresAcknowledgement>
133+
<TestComponent />
134+
</Wizard.Step>
135+
</Wizard>,
136+
);
137+
138+
// Step 1: acknowledge and move forward
139+
expect(getByTestId('is-ack')).toHaveTextContent('false');
140+
await userEvent.click(getByRole('button', { name: 'Acknowledge' }));
141+
expect(getByTestId('is-ack')).toHaveTextContent('true');
142+
143+
// Step 2: acknowledgement should be reset to false
144+
expect(getByTestId('is-ack')).toHaveTextContent('false');
145+
});
146+
});
29147
});

0 commit comments

Comments
 (0)