@@ -17,6 +17,22 @@ ruleTester.run('require-hook', rule, {
17
17
//
18
18
});
19
19
` ,
20
+ dedent `
21
+ const { myFn } = require('../functions');
22
+
23
+ test('myFn', () => {
24
+ expect(myFn()).toBe(1);
25
+ });
26
+ ` ,
27
+ dedent `
28
+ const { myFn } = require('../functions');
29
+
30
+ describe('myFn', () => {
31
+ it('returns one', () => {
32
+ expect(myFn()).toBe(1);
33
+ });
34
+ });
35
+ ` ,
20
36
dedent `
21
37
describe('some tests', () => {
22
38
it('is true', () => {
@@ -97,6 +113,16 @@ ruleTester.run('require-hook', rule, {
97
113
` ,
98
114
] ,
99
115
invalid : [
116
+ {
117
+ code : 'setup();' ,
118
+ errors : [
119
+ {
120
+ messageId : 'useHook' ,
121
+ line : 1 ,
122
+ column : 1 ,
123
+ } ,
124
+ ] ,
125
+ } ,
100
126
{
101
127
code : dedent `
102
128
describe('some tests', () => {
@@ -142,5 +168,82 @@ ruleTester.run('require-hook', rule, {
142
168
} ,
143
169
] ,
144
170
} ,
171
+ {
172
+ code : dedent `
173
+ import { database, isCity } from '../database';
174
+ import { loadCities } from '../api';
175
+
176
+ jest.mock('../api');
177
+
178
+ const initializeCityDatabase = () => {
179
+ database.addCity('Vienna');
180
+ database.addCity('San Juan');
181
+ database.addCity('Wellington');
182
+ };
183
+
184
+ const clearCityDatabase = () => {
185
+ database.clear();
186
+ };
187
+
188
+ initializeCityDatabase();
189
+
190
+ test('that persists cities', () => {
191
+ expect(database.cities.length).toHaveLength(3);
192
+ });
193
+
194
+ test('city database has Vienna', () => {
195
+ expect(isCity('Vienna')).toBeTruthy();
196
+ });
197
+
198
+ test('city database has San Juan', () => {
199
+ expect(isCity('San Juan')).toBeTruthy();
200
+ });
201
+
202
+ describe('when loading cities from the api', () => {
203
+ let consoleWarnSpy = jest.spyOn(console, 'warn');
204
+
205
+ loadCities.mockResolvedValue(['Wellington', 'London']);
206
+
207
+ it('does not duplicate cities', async () => {
208
+ await database.loadCities();
209
+
210
+ expect(database.cities).toHaveLength(4);
211
+ });
212
+
213
+ it('logs any duplicates', async () => {
214
+ await database.loadCities();
215
+
216
+ expect(consoleWarnSpy).toHaveBeenCalledWith(
217
+ 'Ignored duplicate cities: Wellington',
218
+ );
219
+ });
220
+ });
221
+
222
+ clearCityDatabase();
223
+ ` ,
224
+ parserOptions : { sourceType : 'module' } ,
225
+ errors : [
226
+ {
227
+ messageId : 'useHook' ,
228
+ line : 4 ,
229
+ column : 1 ,
230
+ } ,
231
+ {
232
+ messageId : 'useHook' ,
233
+ line : 16 ,
234
+ column : 1 ,
235
+ } ,
236
+ {
237
+ messageId : 'useHook' ,
238
+ line : 33 ,
239
+ column : 3 ,
240
+ } ,
241
+ {
242
+ messageId : 'useHook' ,
243
+ line : 50 ,
244
+ column : 1 ,
245
+ } ,
246
+ ] ,
247
+ } ,
145
248
] ,
146
249
} ) ;
0 commit comments