Skip to content

Commit 090719b

Browse files
committed
Refactor tests to move implementation to mock files
1 parent eeb8d00 commit 090719b

7 files changed

Lines changed: 117 additions & 122 deletions

File tree

packages/react-native-renderer/src/NativeMethodsMixin.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,9 @@ export default function(
175175
if (maybeInstance.canonical) {
176176
warningWithoutStack(
177177
false,
178-
'Warning: measureLayout on components using NativeMethodsMixin '+
179-
'or ReactNative.NativeComponent is not currently supported in Fabric. ' +
180-
'measureLayout must be called on a native ref. Consider using forwardRef.',
178+
'Warning: measureLayout on components using NativeMethodsMixin ' +
179+
'or ReactNative.NativeComponent is not currently supported in Fabric. ' +
180+
'measureLayout must be called on a native ref. Consider using forwardRef.',
181181
);
182182
return;
183183
} else {

packages/react-native-renderer/src/ReactFabricHostConfig.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ import {
4343
measureInWindow as fabricMeasureInWindow,
4444
measureLayout as fabricMeasureLayout,
4545
} from 'FabricUIManager';
46-
import UIManager from 'UIManager';
4746

4847
// Counter for uniquely identifying views.
4948
// % 10 === 1 means it is a rootTag.

packages/react-native-renderer/src/ReactNativeComponent.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,9 @@ export default function(
186186
if (maybeInstance.canonical) {
187187
warningWithoutStack(
188188
false,
189-
'Warning: measureLayout on components using NativeMethodsMixin '+
190-
'or ReactNative.NativeComponent is not currently supported in Fabric. ' +
191-
'measureLayout must be called on a native ref. Consider using forwardRef.',
189+
'Warning: measureLayout on components using NativeMethodsMixin ' +
190+
'or ReactNative.NativeComponent is not currently supported in Fabric. ' +
191+
'measureLayout must be called on a native ref. Consider using forwardRef.',
192192
);
193193
return;
194194
} else {

packages/react-native-renderer/src/__mocks__/FabricUIManager.js

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,56 @@ const RCTFabricUIManager = {
120120

121121
registerEventHandler: jest.fn(function registerEventHandler(callback) {}),
122122

123-
measure: jest.fn(),
124-
measureLayout: jest.fn(),
125-
measureInWindow: jest.fn(),
123+
measure: jest.fn(function measure(node, callback) {
124+
invariant(
125+
typeof node === 'object',
126+
'Expected node to be an object, was passed "%s"',
127+
typeof node,
128+
);
129+
invariant(
130+
typeof node.viewName === 'string',
131+
'Expected node to be a host node.',
132+
);
133+
callback(10, 10, 100, 100, 0, 0);
134+
}),
135+
measureInWindow: jest.fn(function measureInWindow(node, callback) {
136+
invariant(
137+
typeof node === 'object',
138+
'Expected node to be an object, was passed "%s"',
139+
typeof node,
140+
);
141+
invariant(
142+
typeof node.viewName === 'string',
143+
'Expected node to be a host node.',
144+
);
145+
callback(10, 10, 100, 100);
146+
}),
147+
measureLayout: jest.fn(function measureLayout(
148+
node,
149+
relativeNode,
150+
fail,
151+
success,
152+
) {
153+
invariant(
154+
typeof node === 'object',
155+
'Expected node to be an object, was passed "%s"',
156+
typeof node,
157+
);
158+
invariant(
159+
typeof node.viewName === 'string',
160+
'Expected node to be a host node.',
161+
);
162+
invariant(
163+
typeof relativeNode === 'object',
164+
'Expected relative node to be an object, was passed "%s"',
165+
typeof relativeNode,
166+
);
167+
invariant(
168+
typeof relativeNode.viewName === 'string',
169+
'Expected relative node to be a host node.',
170+
);
171+
success(1, 1, 100, 100);
172+
}),
126173
};
127174

128175
module.exports = RCTFabricUIManager;

packages/react-native-renderer/src/__mocks__/UIManager.js

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,40 @@ const RCTUIManager = {
153153
views.get(parentTag).children.forEach(tag => removeChild(parentTag, tag));
154154
}),
155155
replaceExistingNonRootView: jest.fn(),
156-
measure: jest.fn(),
157-
measureInWindow: jest.fn(),
158-
measureLayout: jest.fn(),
156+
measure: jest.fn(function measure(tag, callback) {
157+
invariant(
158+
typeof tag === 'number',
159+
'Expected tag to be a number, was passed %s',
160+
tag,
161+
);
162+
callback(10, 10, 100, 100, 0, 0);
163+
}),
164+
measureInWindow: jest.fn(function measureInWindow(tag, callback) {
165+
invariant(
166+
typeof tag === 'number',
167+
'Expected tag to be a number, was passed %s',
168+
tag,
169+
);
170+
callback(10, 10, 100, 100);
171+
}),
172+
measureLayout: jest.fn(function measureLayout(
173+
tag,
174+
relativeTag,
175+
fail,
176+
success,
177+
) {
178+
invariant(
179+
typeof tag === 'number',
180+
'Expected tag to be a number, was passed %s',
181+
tag,
182+
);
183+
invariant(
184+
typeof relativeTag === 'number',
185+
'Expected relativeTag to be a number, was passed %s',
186+
relativeTag,
187+
);
188+
success(1, 1, 100, 100);
189+
}),
159190
__takeSnapshot: jest.fn(),
160191
};
161192

packages/react-native-renderer/src/__tests__/ReactFabric-test.internal.js

Lines changed: 17 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -335,20 +335,11 @@ describe('ReactFabric', () => {
335335
);
336336

337337
expect(FabricUIManager.measure).not.toBeCalled();
338-
339338
const successCallback = jest.fn();
340339
viewRef.measure(successCallback);
341-
342340
expect(FabricUIManager.measure).toHaveBeenCalledTimes(1);
343-
expect(FabricUIManager.measure).toHaveBeenCalledWith(
344-
expect.any(Object),
345-
expect.any(Function),
346-
);
347-
348-
const args = FabricUIManager.measure.mock.calls[0];
349-
expect(successCallback).not.toBeCalled();
350-
args[1]('success');
351-
expect(successCallback).toBeCalledWith('success');
341+
expect(successCallback).toHaveBeenCalledTimes(1);
342+
expect(successCallback).toHaveBeenCalledWith(10, 10, 100, 100, 0, 0);
352343
});
353344
});
354345

@@ -385,20 +376,11 @@ describe('ReactFabric', () => {
385376
);
386377

387378
expect(FabricUIManager.measureInWindow).not.toBeCalled();
388-
389379
const successCallback = jest.fn();
390380
viewRef.measureInWindow(successCallback);
391-
392381
expect(FabricUIManager.measureInWindow).toHaveBeenCalledTimes(1);
393-
expect(FabricUIManager.measureInWindow).toHaveBeenCalledWith(
394-
expect.any(Object),
395-
expect.any(Function),
396-
);
397-
398-
const args = FabricUIManager.measureInWindow.mock.calls[0];
399-
expect(successCallback).not.toBeCalled();
400-
args[1]('success');
401-
expect(successCallback).toBeCalledWith('success');
382+
expect(successCallback).toHaveBeenCalledTimes(1);
383+
expect(successCallback).toHaveBeenCalledWith(10, 10, 100, 100);
402384
});
403385
});
404386

@@ -409,7 +391,7 @@ describe('ReactFabric', () => {
409391
}));
410392

411393
[View].forEach(Component => {
412-
FabricUIManager.measureLayout.mockReset();
394+
FabricUIManager.measureLayout.mockClear();
413395

414396
let viewRef;
415397
let otherRef;
@@ -431,29 +413,12 @@ describe('ReactFabric', () => {
431413
);
432414

433415
expect(FabricUIManager.measureLayout).not.toBeCalled();
434-
435416
const successCallback = jest.fn();
436417
const failureCallback = jest.fn();
437418
viewRef.measureLayout(otherRef, successCallback, failureCallback);
438-
439419
expect(FabricUIManager.measureLayout).toHaveBeenCalledTimes(1);
440-
expect(FabricUIManager.measureLayout).toHaveBeenCalledWith(
441-
expect.any(Object),
442-
expect.any(Object),
443-
expect.any(Function),
444-
expect.any(Function),
445-
);
446-
447-
const args = FabricUIManager.measureLayout.mock.calls[0];
448-
expect(args[0]).not.toEqual(args[1]);
449-
expect(successCallback).not.toBeCalled();
450-
expect(failureCallback).not.toBeCalled();
451-
args[2]('fail');
452-
expect(failureCallback).toBeCalledWith('fail');
453-
454-
expect(successCallback).not.toBeCalled();
455-
args[3]('success');
456-
expect(successCallback).toBeCalledWith('success');
420+
expect(successCallback).toHaveBeenCalledTimes(1);
421+
expect(successCallback).toHaveBeenCalledWith(1, 1, 100, 100);
457422
});
458423
});
459424

@@ -503,11 +468,16 @@ describe('ReactFabric', () => {
503468

504469
expect(() => {
505470
viewRef.measureLayout(otherRef, successCallback, failureCallback);
506-
}).toWarnDev(['Warning: measureLayout on components using NativeMethodsMixin '+
507-
'or ReactNative.NativeComponent is not currently supported in Fabric. ' +
508-
'measureLayout must be called on a native ref. Consider using forwardRef.'], {
509-
withoutStack: true,
510-
});
471+
}).toWarnDev(
472+
[
473+
'Warning: measureLayout on components using NativeMethodsMixin ' +
474+
'or ReactNative.NativeComponent is not currently supported in Fabric. ' +
475+
'measureLayout must be called on a native ref. Consider using forwardRef.',
476+
],
477+
{
478+
withoutStack: true,
479+
},
480+
);
511481

512482
expect(FabricUIManager.measureLayout).not.toBeCalled();
513483
expect(UIManager.measureLayout).not.toBeCalled();

packages/react-native-renderer/src/__tests__/ReactNativeMount-test.internal.js

Lines changed: 10 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -282,20 +282,11 @@ describe('ReactNative', () => {
282282
);
283283

284284
expect(UIManager.measure).not.toBeCalled();
285-
286285
const successCallback = jest.fn();
287286
viewRef.measure(successCallback);
288-
289287
expect(UIManager.measure).toHaveBeenCalledTimes(1);
290-
expect(UIManager.measure).toHaveBeenCalledWith(
291-
expect.any(Number),
292-
expect.any(Function),
293-
);
294-
295-
const args = UIManager.measure.mock.calls[0];
296-
expect(successCallback).not.toBeCalled();
297-
args[1]('success');
298-
expect(successCallback).toBeCalledWith('success');
288+
expect(successCallback).toHaveBeenCalledTimes(1);
289+
expect(successCallback).toHaveBeenCalledWith(10, 10, 100, 100, 0, 0);
299290
});
300291
});
301292

@@ -332,20 +323,11 @@ describe('ReactNative', () => {
332323
);
333324

334325
expect(UIManager.measureInWindow).not.toBeCalled();
335-
336326
const successCallback = jest.fn();
337327
viewRef.measureInWindow(successCallback);
338-
339328
expect(UIManager.measureInWindow).toHaveBeenCalledTimes(1);
340-
expect(UIManager.measureInWindow).toHaveBeenCalledWith(
341-
expect.any(Number),
342-
expect.any(Function),
343-
);
344-
345-
const args = UIManager.measureInWindow.mock.calls[0];
346-
expect(successCallback).not.toBeCalled();
347-
args[1]('success');
348-
expect(successCallback).toBeCalledWith('success');
329+
expect(successCallback).toHaveBeenCalledTimes(1);
330+
expect(successCallback).toHaveBeenCalledWith(10, 10, 100, 100);
349331
});
350332
});
351333

@@ -369,7 +351,7 @@ describe('ReactNative', () => {
369351
});
370352

371353
[View, Subclass, CreateClass].forEach(Component => {
372-
UIManager.measureLayout.mockReset();
354+
UIManager.measureLayout.mockClear();
373355

374356
let viewRef;
375357
let otherRef;
@@ -391,33 +373,16 @@ describe('ReactNative', () => {
391373
);
392374

393375
expect(UIManager.measureLayout).not.toBeCalled();
394-
395376
const successCallback = jest.fn();
396377
const failureCallback = jest.fn();
397378
viewRef.measureLayout(
398379
ReactNative.findNodeHandle(otherRef),
399380
successCallback,
400381
failureCallback,
401382
);
402-
403383
expect(UIManager.measureLayout).toHaveBeenCalledTimes(1);
404-
expect(UIManager.measureLayout).toHaveBeenCalledWith(
405-
expect.any(Number),
406-
expect.any(Number),
407-
expect.any(Function),
408-
expect.any(Function),
409-
);
410-
411-
const args = UIManager.measureLayout.mock.calls[0];
412-
expect(args[0]).not.toEqual(args[1]);
413-
expect(successCallback).not.toBeCalled();
414-
expect(failureCallback).not.toBeCalled();
415-
args[2]('fail');
416-
expect(failureCallback).toBeCalledWith('fail');
417-
418-
expect(successCallback).not.toBeCalled();
419-
args[3]('success');
420-
expect(successCallback).toBeCalledWith('success');
384+
expect(successCallback).toHaveBeenCalledTimes(1);
385+
expect(successCallback).toHaveBeenCalledWith(1, 1, 100, 100);
421386
});
422387
});
423388

@@ -428,7 +393,7 @@ describe('ReactNative', () => {
428393
}));
429394

430395
[View].forEach(Component => {
431-
UIManager.measureLayout.mockReset();
396+
UIManager.measureLayout.mockClear();
432397

433398
let viewRef;
434399
let otherRef;
@@ -450,29 +415,12 @@ describe('ReactNative', () => {
450415
);
451416

452417
expect(UIManager.measureLayout).not.toBeCalled();
453-
454418
const successCallback = jest.fn();
455419
const failureCallback = jest.fn();
456420
viewRef.measureLayout(otherRef, successCallback, failureCallback);
457-
458421
expect(UIManager.measureLayout).toHaveBeenCalledTimes(1);
459-
expect(UIManager.measureLayout).toHaveBeenCalledWith(
460-
expect.any(Number),
461-
expect.any(Number),
462-
expect.any(Function),
463-
expect.any(Function),
464-
);
465-
466-
const args = UIManager.measureLayout.mock.calls[0];
467-
expect(args[0]).not.toEqual(args[1]);
468-
expect(successCallback).not.toBeCalled();
469-
expect(failureCallback).not.toBeCalled();
470-
args[2]('fail');
471-
expect(failureCallback).toBeCalledWith('fail');
472-
473-
expect(successCallback).not.toBeCalled();
474-
args[3]('success');
475-
expect(successCallback).toBeCalledWith('success');
422+
expect(successCallback).toHaveBeenCalledTimes(1);
423+
expect(successCallback).toHaveBeenCalledWith(1, 1, 100, 100);
476424
});
477425
});
478426

0 commit comments

Comments
 (0)