Skip to content

Commit 2078fa5

Browse files
committed
refactor: improve code readability and structure
1 parent df0cc8b commit 2078fa5

File tree

7 files changed

+50
-49
lines changed

7 files changed

+50
-49
lines changed
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { getQueryPrefix } from '../query-name';
2+
3+
test('getQueryPrefix should return correct prefix', () => {
4+
expect(getQueryPrefix('getByRole')).toBe('get');
5+
expect(getQueryPrefix('getAllByText')).toEqual('getAll');
6+
expect(getQueryPrefix('queryByTestId')).toEqual('query');
7+
expect(getQueryPrefix('queryAllByPlaceholderText')).toEqual('queryAll');
8+
expect(getQueryPrefix('findByHintText')).toEqual('find');
9+
expect(getQueryPrefix('findAllByDisplayValue')).toEqual('findAll');
10+
});

src/helpers/deprecation.ts

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1+
import { getQueryPrefix } from './query-name';
2+
13
export function deprecateAllQueries<Queries extends Record<string, any>>(
24
queriesObject: Queries,
3-
querySuffix: string,
4-
recommendationSuffix: string
5+
recommendation: string
56
): Queries {
67
const result = {} as Queries;
78
Object.keys(queriesObject).forEach((queryName) => {
89
const queryFn = queriesObject[queryName];
9-
const recommendation = queryName.replace(querySuffix, recommendationSuffix);
1010
// @ts-expect-error: generic typing is hard
1111
result[queryName] = deprecateQuery(queryFn, queryName, recommendation);
1212
});
@@ -19,13 +19,16 @@ export function deprecateQuery<QueryFn extends (...args: any) => any>(
1919
queryName: string,
2020
recommendation: string
2121
): QueryFn {
22+
const formattedRecommendation = recommendation.replace(
23+
/{queryPrefix}/g,
24+
getQueryPrefix(queryName)
25+
);
26+
2227
// @ts-expect-error: generic typing is hard
2328
const wrapper: QueryFn = (...args: any) => {
29+
const errorMessage = `${queryName}(...) is deprecated.\n\n${formattedRecommendation}`;
2430
// eslint-disable-next-line no-console
25-
console.warn(
26-
`${queryName}(...) is deprecated.\n\nPlease use ${recommendation} instead.`
27-
);
28-
31+
console.warn(errorMessage);
2932
return queryFn(...args);
3033
};
3134

src/helpers/query-name.ts

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export function getQueryPrefix(queryName: string) {
2+
const parts = queryName.split('By');
3+
return parts[0];
4+
}

src/queries/__tests__/a11yState.test.tsx

+12-12
Original file line numberDiff line numberDiff line change
@@ -267,42 +267,42 @@ test('*ByA11yState deprecation warnings', () => {
267267
expect(mockCalls[0][0]).toMatchInlineSnapshot(`
268268
"getByA11yState(...) is deprecated.
269269
270-
Please use getByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
270+
Use getByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
271271
`);
272272

273273
view.getAllByA11yState({ disabled: true });
274274
expect(mockCalls[1][0]).toMatchInlineSnapshot(`
275275
"getAllByA11yState(...) is deprecated.
276276
277-
Please use getAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
277+
Use getAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
278278
`);
279279

280280
view.queryByA11yState({ disabled: true });
281281
expect(mockCalls[2][0]).toMatchInlineSnapshot(`
282282
"queryByA11yState(...) is deprecated.
283283
284-
Please use queryByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
284+
Use queryByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
285285
`);
286286

287287
view.queryAllByA11yState({ disabled: true });
288288
expect(mockCalls[3][0]).toMatchInlineSnapshot(`
289289
"queryAllByA11yState(...) is deprecated.
290290
291-
Please use queryAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
291+
Use queryAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
292292
`);
293293

294294
view.findByA11yState({ disabled: true });
295295
expect(mockCalls[4][0]).toMatchInlineSnapshot(`
296296
"findByA11yState(...) is deprecated.
297297
298-
Please use findByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
298+
Use findByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
299299
`);
300300

301301
view.findAllByA11yState({ disabled: true });
302302
expect(mockCalls[5][0]).toMatchInlineSnapshot(`
303303
"findAllByA11yState(...) is deprecated.
304304
305-
Please use findAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
305+
Use findAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
306306
`);
307307
});
308308

@@ -314,41 +314,41 @@ test('*ByAccessibilityState deprecation warnings', () => {
314314
expect(mockCalls[0][0]).toMatchInlineSnapshot(`
315315
"getByAccessibilityState(...) is deprecated.
316316
317-
Please use getByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
317+
Use getByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
318318
`);
319319

320320
view.getAllByAccessibilityState({ disabled: true });
321321
expect(mockCalls[1][0]).toMatchInlineSnapshot(`
322322
"getAllByAccessibilityState(...) is deprecated.
323323
324-
Please use getAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
324+
Use getAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
325325
`);
326326

327327
view.queryByAccessibilityState({ disabled: true });
328328
expect(mockCalls[2][0]).toMatchInlineSnapshot(`
329329
"queryByAccessibilityState(...) is deprecated.
330330
331-
Please use queryByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
331+
Use queryByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
332332
`);
333333

334334
view.queryAllByAccessibilityState({ disabled: true });
335335
expect(mockCalls[3][0]).toMatchInlineSnapshot(`
336336
"queryAllByAccessibilityState(...) is deprecated.
337337
338-
Please use queryAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
338+
Use queryAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
339339
`);
340340

341341
view.findByAccessibilityState({ disabled: true });
342342
expect(mockCalls[4][0]).toMatchInlineSnapshot(`
343343
"findByAccessibilityState(...) is deprecated.
344344
345-
Please use findByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
345+
Use findByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
346346
`);
347347

348348
view.findAllByAccessibilityState({ disabled: true });
349349
expect(mockCalls[5][0]).toMatchInlineSnapshot(`
350350
"findAllByAccessibilityState(...) is deprecated.
351351
352-
Please use findAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
352+
Use findAllByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead."
353353
`);
354354
});

src/queries/__tests__/a11yValue.test.tsx

+12-12
Original file line numberDiff line numberDiff line change
@@ -146,42 +146,42 @@ test('*ByA11yValue deprecation warnings', () => {
146146
expect(mockCalls[0][0]).toMatchInlineSnapshot(`
147147
"getByA11yValue(...) is deprecated.
148148
149-
Please use getByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
149+
Use expect(...).toHaveAccessibilityValue(...) matcher or getByRole(role, { value: ... }) query instead."
150150
`);
151151

152152
view.getAllByA11yValue({ min: 10 });
153153
expect(mockCalls[1][0]).toMatchInlineSnapshot(`
154154
"getAllByA11yValue(...) is deprecated.
155155
156-
Please use getAllByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
156+
Use expect(...).toHaveAccessibilityValue(...) matcher or getAllByRole(role, { value: ... }) query instead."
157157
`);
158158

159159
view.queryByA11yValue({ min: 10 });
160160
expect(mockCalls[2][0]).toMatchInlineSnapshot(`
161161
"queryByA11yValue(...) is deprecated.
162162
163-
Please use queryByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
163+
Use expect(...).toHaveAccessibilityValue(...) matcher or queryByRole(role, { value: ... }) query instead."
164164
`);
165165

166166
view.queryAllByA11yValue({ min: 10 });
167167
expect(mockCalls[3][0]).toMatchInlineSnapshot(`
168168
"queryAllByA11yValue(...) is deprecated.
169169
170-
Please use queryAllByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
170+
Use expect(...).toHaveAccessibilityValue(...) matcher or queryAllByRole(role, { value: ... }) query instead."
171171
`);
172172

173173
view.findByA11yValue({ min: 10 });
174174
expect(mockCalls[4][0]).toMatchInlineSnapshot(`
175175
"findByA11yValue(...) is deprecated.
176176
177-
Please use findByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
177+
Use expect(...).toHaveAccessibilityValue(...) matcher or findByRole(role, { value: ... }) query instead."
178178
`);
179179

180180
view.findAllByA11yValue({ min: 10 });
181181
expect(mockCalls[5][0]).toMatchInlineSnapshot(`
182182
"findAllByA11yValue(...) is deprecated.
183183
184-
Please use findAllByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
184+
Use expect(...).toHaveAccessibilityValue(...) matcher or findAllByRole(role, { value: ... }) query instead."
185185
`);
186186
});
187187

@@ -193,41 +193,41 @@ test('*ByAccessibilityValue deprecation warnings', () => {
193193
expect(mockCalls[0][0]).toMatchInlineSnapshot(`
194194
"getByAccessibilityValue(...) is deprecated.
195195
196-
Please use getByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
196+
Use expect(...).toHaveAccessibilityValue(...) matcher or getByRole(role, { value: ... }) query instead."
197197
`);
198198

199199
view.getAllByAccessibilityValue({ min: 10 });
200200
expect(mockCalls[1][0]).toMatchInlineSnapshot(`
201201
"getAllByAccessibilityValue(...) is deprecated.
202202
203-
Please use getAllByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
203+
Use expect(...).toHaveAccessibilityValue(...) matcher or getAllByRole(role, { value: ... }) query instead."
204204
`);
205205

206206
view.queryByAccessibilityValue({ min: 10 });
207207
expect(mockCalls[2][0]).toMatchInlineSnapshot(`
208208
"queryByAccessibilityValue(...) is deprecated.
209209
210-
Please use queryByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
210+
Use expect(...).toHaveAccessibilityValue(...) matcher or queryByRole(role, { value: ... }) query instead."
211211
`);
212212

213213
view.queryAllByAccessibilityValue({ min: 10 });
214214
expect(mockCalls[3][0]).toMatchInlineSnapshot(`
215215
"queryAllByAccessibilityValue(...) is deprecated.
216216
217-
Please use queryAllByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
217+
Use expect(...).toHaveAccessibilityValue(...) matcher or queryAllByRole(role, { value: ... }) query instead."
218218
`);
219219

220220
view.findByAccessibilityValue({ min: 10 });
221221
expect(mockCalls[4][0]).toMatchInlineSnapshot(`
222222
"findByAccessibilityValue(...) is deprecated.
223223
224-
Please use findByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
224+
Use expect(...).toHaveAccessibilityValue(...) matcher or findByRole(role, { value: ... }) query instead."
225225
`);
226226

227227
view.findAllByAccessibilityValue({ min: 10 });
228228
expect(mockCalls[5][0]).toMatchInlineSnapshot(`
229229
"findAllByAccessibilityValue(...) is deprecated.
230230
231-
Please use findAllByRole(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher instead."
231+
Use expect(...).toHaveAccessibilityValue(...) matcher or findAllByRole(role, { value: ... }) query instead."
232232
`);
233233
});

src/queries/a11yState.ts

+1-9
Original file line numberDiff line numberDiff line change
@@ -101,22 +101,14 @@ export const bindByA11yStateQueries = (
101101
queryAllByA11yState,
102102
findByA11yState,
103103
findAllByA11yState,
104-
},
105-
'A11yState',
106-
'Role(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher'
107-
),
108-
109-
...deprecateAllQueries(
110-
{
111104
getByAccessibilityState: getByA11yState,
112105
getAllByAccessibilityState: getAllByA11yState,
113106
queryByAccessibilityState: queryByA11yState,
114107
queryAllByAccessibilityState: queryAllByA11yState,
115108
findByAccessibilityState: findByA11yState,
116109
findAllByAccessibilityState: findAllByA11yState,
117110
},
118-
'AccessibilityState',
119-
'Role(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher'
111+
'Use {queryPrefix}ByRole(role, { disabled, selected, checked, busy, expanded }) query or expect(...).toHaveAccessibilityState(...) matcher instead.'
120112
),
121113
};
122114
};

src/queries/a11yValue.ts

+1-9
Original file line numberDiff line numberDiff line change
@@ -118,22 +118,14 @@ export const bindByA11yValueQueries = (
118118
queryAllByA11yValue,
119119
findByA11yValue,
120120
findAllByA11yValue,
121-
},
122-
'A11yValue',
123-
'Role(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher'
124-
),
125-
126-
...deprecateAllQueries(
127-
{
128121
getByAccessibilityValue: getByA11yValue,
129122
getAllByAccessibilityValue: getAllByA11yValue,
130123
queryByAccessibilityValue: queryByA11yValue,
131124
queryAllByAccessibilityValue: queryAllByA11yValue,
132125
findByAccessibilityValue: findByA11yValue,
133126
findAllByAccessibilityValue: findAllByA11yValue,
134127
},
135-
'AccessibilityValue',
136-
'Role(role, { value: ... }) query or expect(...).toHaveAccessibilityValue(...) matcher'
128+
'Use expect(...).toHaveAccessibilityValue(...) matcher or {queryPrefix}ByRole(role, { value: ... }) query instead.'
137129
),
138130
};
139131
};

0 commit comments

Comments
 (0)