Skip to content

Commit 0576e2d

Browse files
authored
update tests and some aria labels. tests pass on node 16 (#601)
1 parent 7aeb218 commit 0576e2d

File tree

6 files changed

+85
-55
lines changed

6 files changed

+85
-55
lines changed

src/common/test_state_wrapper.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@ import { createFakedServices } from '../services/factories/service_factory';
1919
import { MemoryRouter } from 'react-router';
2020
import { mockEngagementFormConfig } from '../mocks/engagement_form_config_mocks';
2121

22-
export const TestStateWrapper = ({ children = null }) => {
22+
export const TestStateWrapper = ({ children = null, spyedEngagementService = null }) => {
2323
return (
2424
<MemoryRouter>
2525
<ServiceProvider
2626
serviceFactory={createFakedServices({ shouldUseStaticData: true })}
2727
>
28-
<TestContexts>{children}</TestContexts>
28+
<TestContexts spyedEngagementService={spyedEngagementService}>{children}</TestContexts>
2929
</ServiceProvider>
3030
</MemoryRouter>
3131
);
3232
};
3333

34-
function TestContexts({ children = null }) {
34+
function TestContexts({ children = null, spyedEngagementService = null }) {
3535
const {
3636
authService,
3737
engagementService,
@@ -49,7 +49,7 @@ function TestContexts({ children = null }) {
4949
engagementFormConfig={mockEngagementFormConfig()}
5050
categoryService={categoryService}
5151
feedbackContext={feedbackContext}
52-
engagementService={engagementService}
52+
engagementService={spyedEngagementService ? spyedEngagementService : engagementService}
5353
>
5454
<VersionProvider versionService={versionService}>
5555
<FeatureToggles>{children}</FeatureToggles>

src/components/customer_select_dropdown/customer_select_dropdown.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export function _CustomerSelectDropdown(
2020
};
2121
return (
2222
<Select
23+
aria-label='Customer select'
2324
isOpen={isOpen}
2425
onToggle={() => setIsOpen(!isOpen)}
2526
onSelect={handleSelect}

src/components/engagement_data_cards/hosting_environment_card/hosting_environment_card.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ export function HostingEnvironmentCard() {
6262
updateHostingEnvironment,
6363
} = useHostingEnvironmentManager();
6464
const currentEnvironmentIndex = currentHostingEnvironmentChanges.findIndex(
65-
he => currentHostingEnvironmentId === he?.id
65+
he => currentHostingEnvironmentId === he?.uuid
6666
);
6767
const indexedChanges = currentHostingEnvironmentChanges.reduce(
68-
(p, c) => ({ ...p, [c.id]: c }),
68+
(p, c) => ({ ...p, [c.uuid]: c }),
6969
{}
7070
);
7171

@@ -88,8 +88,8 @@ export function HostingEnvironmentCard() {
8888
const openHostingEnvironmentModal = (
8989
hostingEnvironment: HostingEnvironment
9090
) => {
91-
setCurrentHostingEnvironmentId(hostingEnvironment.id);
92-
requestOpen(generateModalId(hostingEnvironment.id));
91+
setCurrentHostingEnvironmentId(hostingEnvironment.uuid);
92+
requestOpen(generateModalId(hostingEnvironment.uuid));
9393
};
9494
const generateModalId = (id: string) => `${OPENSHIFT_MODAL_KEY}${id}`;
9595

@@ -110,7 +110,7 @@ export function HostingEnvironmentCard() {
110110
slug = customer_name;
111111
}
112112
if (slug.length > maxLen && slug.substring(0, maxLen).includes(' ')) {
113-
slug = slug.substr(0, slug.lastIndexOf(' ', maxLen));
113+
slug = slug.substring(0, slug.lastIndexOf(' ', maxLen));
114114
}
115115
slug = slugify(slug.substring(0, maxLen));
116116
if (randomizer?.length > 0) {

src/context/engagement_context/__tests__/engagement_context.spec.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,9 @@ describe('Engagement Context', () => {
225225
const { result, waitForNextUpdate } = renderHook(() => useEngagement(), {
226226
wrapper,
227227
});
228-
result.current.setCurrentEngagement(initialEngagement);
228+
229+
act(() => result.current.setCurrentEngagement(initialEngagement));
230+
229231
let modifiedEngagement = {
230232
...initialEngagement,
231233
customer_contact_email: '[email protected]',

src/routes/create_new_engagement/__tests__/create_new_engagement.spec.tsx

Lines changed: 69 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
import {
2-
EngagementContext,
3-
IEngagementContext,
4-
} from '../../../context/engagement_context/engagement_context';
51
import { act, fireEvent, render } from '@testing-library/react';
62

73
import { APP_FEATURES } from '../../../common/app_features';
@@ -11,8 +7,7 @@ import { FeatureToggles } from '../../../context/feature_context/feature_toggles
117
import { MemoryRouter } from 'react-router';
128
import React from 'react';
139
import { TestStateWrapper } from '../../../common/test_state_wrapper';
14-
import { getById } from '../../../utilities/get_by_id';
15-
import { mockEngagementFormConfig } from '../../../mocks/engagement_form_config_mocks';
10+
import { FakedEngagementService } from '../../../services/engagement_service/implementations/faked_engagement_service';
1611

1712
describe('Create New Engagement Route', () => {
1813
const getComponent = () => {
@@ -25,71 +20,100 @@ describe('Create New Engagement Route', () => {
2520
);
2621
};
2722
test('should have a field for a project name', async () => {
28-
act(async () => {
29-
const wrapper = render(getComponent());
30-
expect(wrapper.getByTestId('project-name')).toBeDefined();
23+
const wrapper = render(getComponent());
24+
const projectName = wrapper.getByTestId('project-name');
25+
26+
await act(async () => {
27+
fireEvent.change(projectName, { target: { value: '123' } })
3128
});
29+
30+
expect(projectName).toHaveValue('123');
31+
3232
});
3333
test('should have a field for a customer name', async () => {
34-
act(async () => {
34+
await act(async () => {
3535
const wrapper = render(getComponent());
3636
expect(wrapper.getByTestId('customer-name')).toBeDefined();
3737
});
3838
});
3939
test('should have a field for a region name', async () => {
40-
act(async () => {
40+
await act(async () => {
4141
const wrapper = render(getComponent());
4242
expect(wrapper.getByTestId('region')).toBeDefined();
4343
});
4444
});
45+
4546
test('clicking the submit button creates a new engagement', async () => {
46-
const createEngagement = jest.fn();
4747
const e = Engagement.fromFake();
48-
e.customer_name = 'a';
49-
const Component = () => (
50-
<MemoryRouter>
51-
<EngagementContext.Provider
52-
value={
53-
({
54-
engagements: [e],
55-
getEngagements: async () => [],
56-
createEngagement,
57-
engagementFormConfig: mockEngagementFormConfig(),
58-
} as unknown) as IEngagementContext
59-
}
60-
>
61-
<FeatureToggles features={[APP_FEATURES.writer, APP_FEATURES.reader]}>
48+
e.customer_name = 'banana';
49+
50+
const fakey = new FakedEngagementService(true);
51+
52+
const getWriterComponent = () => {
53+
return (
54+
<MemoryRouter>
55+
<TestStateWrapper spyedEngagementService={fakey}>
56+
<FeatureToggles features={[APP_FEATURES.writer, APP_FEATURES.reader]}>
6257
<CreateNewEngagement />
63-
</FeatureToggles>
64-
</EngagementContext.Provider>
65-
</MemoryRouter>
66-
);
58+
</FeatureToggles>
59+
</TestStateWrapper>
60+
</MemoryRouter>
61+
);
62+
};
63+
64+
const wrapper = render(getWriterComponent());
6765

68-
act(async () => {
69-
const wrapper = render(<Component />);
70-
const customerNameField = wrapper
71-
.getByTestId('customer-name')
72-
.getElementsByTagName('input')[0];
66+
await act(async () => {
67+
const customerNameField = wrapper.getByTestId('customer-name').getElementsByTagName('input')[0];
7368
fireEvent.change(customerNameField, {
74-
target: { value: 'a' },
69+
target: { value: 'banana' },
7570
});
76-
const dropdownButton = getById(wrapper.container, 'customer_dropdown');
77-
fireEvent.click(dropdownButton);
78-
wrapper.rerender(<Component />);
79-
fireEvent.click(wrapper.getByTestId('a'));
80-
fireEvent.change(wrapper.getByTestId('project-name'), {
71+
});
72+
73+
await act(async () => {
74+
const customerButton = wrapper.getByText(/banana/);
75+
fireEvent.click(customerButton);
76+
});
77+
78+
await act(async () => {
79+
const engNameInput = wrapper.getByTestId('project-name');
80+
const regionInput = wrapper.getByTestId('region');
81+
const engagementType = wrapper.getByTestId('new-engagement-type');
82+
83+
fireEvent.change(engNameInput, {
8184
target: { value: 'Mars Rover' },
8285
});
83-
fireEvent.change(wrapper.getByTestId('region'), {
86+
87+
fireEvent.change(regionInput, {
8488
target: { value: 'dev-1' },
8589
});
8690

87-
wrapper.rerender(<Component />);
91+
fireEvent.change(engagementType, {
92+
target: { value: 'Residency'},
93+
});
94+
});
95+
96+
await act(async () => {
97+
const engNameInput = wrapper.getByTestId('project-name');
98+
const regionInput = wrapper.getByTestId('region');
99+
const engagementType = wrapper.getByTestId('new-engagement-type');
100+
101+
expect(engNameInput).toHaveValue('Mars Rover');
102+
expect(regionInput).toHaveValue('dev-1');
103+
expect(engagementType).toHaveValue('Residency');
104+
105+
const createButton = wrapper.getByTestId('create-engagement-button');
106+
expect(createButton).toBeEnabled();
107+
});
108+
109+
await act(async () => {
110+
const spy = jest.spyOn(fakey, 'createEngagement');
88111

89112
const createButton = wrapper.getByTestId('create-engagement-button');
90113
fireEvent.click(createButton);
91-
expect(createEngagement).toHaveBeenCalledWith({
92-
customer_name: 'a',
114+
115+
expect(spy).toHaveBeenCalledWith({
116+
customer_name: 'banana',
93117
engagement_region: 'dev-1',
94118
engagement_type: 'Residency',
95119
project_name: 'Mars Rover',

src/routes/create_new_engagement/create_new_engagement.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ export function CreateNewEngagementForm() {
295295
}
296296
>
297297
<FormSelect
298+
arial-label="Region select"
298299
data-testid="region"
299300
data-cy="new_engagement_region"
300301
value={region ?? ''}
@@ -336,6 +337,7 @@ export function CreateNewEngagementForm() {
336337
}
337338
>
338339
<FormSelect
340+
aria-label='Engagment type select'
339341
data-testid="new-engagement-type"
340342
data-cy="new_engagement_type"
341343
value={engagementType ?? ''}
@@ -361,6 +363,7 @@ export function CreateNewEngagementForm() {
361363
helperText="Prepopulate details of this engagement based on a selected template or an existing engagement"
362364
>
363365
<FormSelect
366+
aria-label='Copy select'
364367
data-testid="new-engagement-copy-from"
365368
data-cy="new-engagement-copy-from"
366369
value={selectedProjectNameToFind ?? ''}

0 commit comments

Comments
 (0)