Enhance iOS device manager tests
Reviewed By: lawrencelomax Differential Revision: D33915694 fbshipit-source-id: fc4bfd30b8f504f2f242f94e61967ee68cc83100
This commit is contained in:
committed by
Facebook GitHub Bot
parent
7bf89a840a
commit
b9aeaa9339
@@ -7,34 +7,56 @@
|
|||||||
* @format
|
* @format
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import {checkXcodeVersionMismatch} from '../iOSDeviceManager';
|
import {checkXcodeVersionMismatch, IOSDeviceManager} from '../iOSDeviceManager';
|
||||||
import {getLogger} from 'flipper-common';
|
|
||||||
import {FlipperServerImpl} from '../../../FlipperServerImpl';
|
|
||||||
// eslint-disable-next-line node/no-extraneous-import
|
// eslint-disable-next-line node/no-extraneous-import
|
||||||
import {getRenderHostInstance} from 'flipper-ui-core';
|
import {getRenderHostInstance} from 'flipper-ui-core';
|
||||||
import {
|
import {
|
||||||
getFlipperServerConfig,
|
getFlipperServerConfig,
|
||||||
setFlipperServerConfig,
|
setFlipperServerConfig,
|
||||||
} from '../../../FlipperServerConfig';
|
} from '../../../FlipperServerConfig';
|
||||||
|
import {IOSDeviceParams} from 'flipper-common';
|
||||||
|
|
||||||
let fakeSimctlBridge: any;
|
let fakeSimctlBridge: any;
|
||||||
let fakeIDBBridge: any;
|
let fakeIDBBridge: any;
|
||||||
let hasCalledSimctlActiveDevices = false;
|
let fakeFlipperServer: any;
|
||||||
let hasCalledIDBActiveDevices = false;
|
const fakeDevices: IOSDeviceParams[] = [
|
||||||
|
{
|
||||||
|
udid: 'luke',
|
||||||
|
type: 'emulator',
|
||||||
|
name: 'Luke',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
udid: 'yoda',
|
||||||
|
type: 'emulator',
|
||||||
|
name: 'Yoda',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
const fakeExistingDevices = [
|
||||||
|
{
|
||||||
|
info: {os: 'iOS'},
|
||||||
|
serial: 'luke',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
info: {os: 'Android'},
|
||||||
|
serial: 'yoda',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
info: {os: 'iOS'},
|
||||||
|
serial: 'plapatine',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
hasCalledSimctlActiveDevices = false;
|
|
||||||
fakeSimctlBridge = {
|
fakeSimctlBridge = {
|
||||||
getActiveDevices: async (_bootedOnly: boolean) => {
|
getActiveDevices: jest.fn().mockImplementation(async () => fakeDevices),
|
||||||
hasCalledSimctlActiveDevices = true;
|
|
||||||
return [];
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
fakeIDBBridge = {
|
fakeIDBBridge = {
|
||||||
getActiveDevices: async (_bootedOnly: boolean) => {
|
getActiveDevices: jest.fn().mockImplementation(async () => fakeDevices),
|
||||||
hasCalledIDBActiveDevices = true;
|
};
|
||||||
return [];
|
fakeFlipperServer = {
|
||||||
},
|
getDevices: jest.fn().mockImplementation(() => fakeExistingDevices),
|
||||||
|
registerDevice: jest.fn(),
|
||||||
|
unregisterDevice: jest.fn(),
|
||||||
};
|
};
|
||||||
setFlipperServerConfig(getRenderHostInstance().serverConfig);
|
setFlipperServerConfig(getRenderHostInstance().serverConfig);
|
||||||
});
|
});
|
||||||
@@ -65,26 +87,44 @@ test('test checkXcodeVersionMismatch with an incorrect Simulator.app', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('test queryDevices when simctl used', () => {
|
test('test queryDevices when simctl used', async () => {
|
||||||
const flipperServer = new FlipperServerImpl(
|
const ios = new IOSDeviceManager(fakeFlipperServer);
|
||||||
getFlipperServerConfig(),
|
(ios as any).idbConfig = getFlipperServerConfig().settings;
|
||||||
getLogger(),
|
ios.simctlBridge = fakeSimctlBridge;
|
||||||
|
|
||||||
|
await ios.queryDevices(fakeSimctlBridge);
|
||||||
|
|
||||||
|
expect(fakeSimctlBridge.getActiveDevices).toBeCalledTimes(1);
|
||||||
|
expect(fakeIDBBridge.getActiveDevices).toBeCalledTimes(0);
|
||||||
|
|
||||||
|
expect(fakeFlipperServer.registerDevice).toBeCalledTimes(1);
|
||||||
|
expect(fakeFlipperServer.registerDevice).toBeCalledWith(
|
||||||
|
expect.objectContaining({
|
||||||
|
serial: 'yoda',
|
||||||
|
}),
|
||||||
);
|
);
|
||||||
(flipperServer.ios as any).idbConfig = getFlipperServerConfig().settings;
|
|
||||||
flipperServer.ios.simctlBridge = fakeSimctlBridge;
|
expect(fakeFlipperServer.unregisterDevice).toBeCalledTimes(1);
|
||||||
flipperServer.ios.queryDevices(fakeSimctlBridge);
|
expect(fakeFlipperServer.unregisterDevice).toBeCalledWith('plapatine');
|
||||||
expect(hasCalledSimctlActiveDevices).toEqual(true);
|
|
||||||
expect(hasCalledIDBActiveDevices).toEqual(false);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('test queryDevices when idb used', () => {
|
test('test queryDevices when idb used', async () => {
|
||||||
const flipperServer = new FlipperServerImpl(
|
const ios = new IOSDeviceManager(fakeFlipperServer);
|
||||||
getFlipperServerConfig(),
|
(ios as any).idbConfig = getFlipperServerConfig().settings;
|
||||||
getLogger(),
|
ios.simctlBridge = fakeSimctlBridge;
|
||||||
|
|
||||||
|
await ios.queryDevices(fakeIDBBridge);
|
||||||
|
|
||||||
|
expect(fakeSimctlBridge.getActiveDevices).toBeCalledTimes(0);
|
||||||
|
expect(fakeIDBBridge.getActiveDevices).toBeCalledTimes(1);
|
||||||
|
|
||||||
|
expect(fakeFlipperServer.registerDevice).toBeCalledTimes(1);
|
||||||
|
expect(fakeFlipperServer.registerDevice).toBeCalledWith(
|
||||||
|
expect.objectContaining({
|
||||||
|
serial: 'yoda',
|
||||||
|
}),
|
||||||
);
|
);
|
||||||
(flipperServer.ios as any).idbConfig = getFlipperServerConfig().settings;
|
|
||||||
flipperServer.ios.simctlBridge = fakeSimctlBridge;
|
expect(fakeFlipperServer.unregisterDevice).toBeCalledTimes(1);
|
||||||
flipperServer.ios.queryDevices(fakeIDBBridge);
|
expect(fakeFlipperServer.unregisterDevice).toBeCalledWith('plapatine');
|
||||||
expect(hasCalledSimctlActiveDevices).toEqual(false);
|
|
||||||
expect(hasCalledIDBActiveDevices).toEqual(true);
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user