Enhance iOS device manager tests

Reviewed By: lawrencelomax

Differential Revision: D33915694

fbshipit-source-id: fc4bfd30b8f504f2f242f94e61967ee68cc83100
This commit is contained in:
Andrey Goncharov
2022-02-02 03:05:34 -08:00
committed by Facebook GitHub Bot
parent 7bf89a840a
commit b9aeaa9339

View File

@@ -7,34 +7,56 @@
* @format
*/
import {checkXcodeVersionMismatch} from '../iOSDeviceManager';
import {getLogger} from 'flipper-common';
import {FlipperServerImpl} from '../../../FlipperServerImpl';
import {checkXcodeVersionMismatch, IOSDeviceManager} from '../iOSDeviceManager';
// eslint-disable-next-line node/no-extraneous-import
import {getRenderHostInstance} from 'flipper-ui-core';
import {
getFlipperServerConfig,
setFlipperServerConfig,
} from '../../../FlipperServerConfig';
import {IOSDeviceParams} from 'flipper-common';
let fakeSimctlBridge: any;
let fakeIDBBridge: any;
let hasCalledSimctlActiveDevices = false;
let hasCalledIDBActiveDevices = false;
let fakeFlipperServer: any;
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(() => {
hasCalledSimctlActiveDevices = false;
fakeSimctlBridge = {
getActiveDevices: async (_bootedOnly: boolean) => {
hasCalledSimctlActiveDevices = true;
return [];
},
getActiveDevices: jest.fn().mockImplementation(async () => fakeDevices),
};
fakeIDBBridge = {
getActiveDevices: async (_bootedOnly: boolean) => {
hasCalledIDBActiveDevices = true;
return [];
},
getActiveDevices: jest.fn().mockImplementation(async () => fakeDevices),
};
fakeFlipperServer = {
getDevices: jest.fn().mockImplementation(() => fakeExistingDevices),
registerDevice: jest.fn(),
unregisterDevice: jest.fn(),
};
setFlipperServerConfig(getRenderHostInstance().serverConfig);
});
@@ -65,26 +87,44 @@ test('test checkXcodeVersionMismatch with an incorrect Simulator.app', () => {
);
});
test('test queryDevices when simctl used', () => {
const flipperServer = new FlipperServerImpl(
getFlipperServerConfig(),
getLogger(),
test('test queryDevices when simctl used', async () => {
const ios = new IOSDeviceManager(fakeFlipperServer);
(ios as any).idbConfig = getFlipperServerConfig().settings;
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;
flipperServer.ios.queryDevices(fakeSimctlBridge);
expect(hasCalledSimctlActiveDevices).toEqual(true);
expect(hasCalledIDBActiveDevices).toEqual(false);
expect(fakeFlipperServer.unregisterDevice).toBeCalledTimes(1);
expect(fakeFlipperServer.unregisterDevice).toBeCalledWith('plapatine');
});
test('test queryDevices when idb used', () => {
const flipperServer = new FlipperServerImpl(
getFlipperServerConfig(),
getLogger(),
test('test queryDevices when idb used', async () => {
const ios = new IOSDeviceManager(fakeFlipperServer);
(ios as any).idbConfig = getFlipperServerConfig().settings;
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;
flipperServer.ios.queryDevices(fakeIDBBridge);
expect(hasCalledSimctlActiveDevices).toEqual(false);
expect(hasCalledIDBActiveDevices).toEqual(true);
expect(fakeFlipperServer.unregisterDevice).toBeCalledTimes(1);
expect(fakeFlipperServer.unregisterDevice).toBeCalledWith('plapatine');
});