Move BaseDevice tests from flipper-ui-core to flipper-frontend-core
Summary: See D37139129 Reviewed By: passy Differential Revision: D37241244 fbshipit-source-id: 3dca03e7a22c218b95702b77bb93efc983528142
This commit is contained in:
committed by
Facebook GitHub Bot
parent
115a4b7997
commit
f4fc07ffd2
@@ -7,10 +7,22 @@
|
|||||||
* @format
|
* @format
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as DeviceTestPluginModule from '../../__tests__/test-utils/DeviceTestPlugin';
|
import {getLogger} from 'flipper-common';
|
||||||
import {TestUtils, _SandyPluginDefinition} from 'flipper-plugin';
|
import {baseFlipperLibImplementation} from '../../flipperLibImplementation';
|
||||||
import {createMockFlipperWithPlugin} from '../../__tests__/test-utils/createMockFlipperWithPlugin';
|
import {getRenderHostInstance} from '../../RenderHost';
|
||||||
import {ArchivedDevice, TestDevice} from 'flipper-frontend-core';
|
import AbstractClient from '../../AbstractClient';
|
||||||
|
import {
|
||||||
|
TestUtils,
|
||||||
|
_SandyPluginDefinition,
|
||||||
|
_setFlipperLibImplementation,
|
||||||
|
} from 'flipper-plugin';
|
||||||
|
import {default as ArchivedDevice} from '../ArchivedDevice';
|
||||||
|
import {TestDevice} from '../TestDevice';
|
||||||
|
|
||||||
|
const createDeviceTestPluginModule = () => ({
|
||||||
|
devicePlugin: jest.fn(),
|
||||||
|
Component: jest.fn(),
|
||||||
|
});
|
||||||
|
|
||||||
const physicalDevicePluginDetails = TestUtils.createMockPluginDetails({
|
const physicalDevicePluginDetails = TestUtils.createMockPluginDetails({
|
||||||
id: 'physicalDevicePlugin',
|
id: 'physicalDevicePlugin',
|
||||||
@@ -31,7 +43,7 @@ const physicalDevicePluginDetails = TestUtils.createMockPluginDetails({
|
|||||||
});
|
});
|
||||||
const physicalDevicePlugin = new _SandyPluginDefinition(
|
const physicalDevicePlugin = new _SandyPluginDefinition(
|
||||||
physicalDevicePluginDetails,
|
physicalDevicePluginDetails,
|
||||||
DeviceTestPluginModule,
|
createDeviceTestPluginModule(),
|
||||||
);
|
);
|
||||||
|
|
||||||
const iosPhysicalDevicePluginDetails = TestUtils.createMockPluginDetails({
|
const iosPhysicalDevicePluginDetails = TestUtils.createMockPluginDetails({
|
||||||
@@ -48,7 +60,7 @@ const iosPhysicalDevicePluginDetails = TestUtils.createMockPluginDetails({
|
|||||||
});
|
});
|
||||||
const iosPhysicalDevicePlugin = new _SandyPluginDefinition(
|
const iosPhysicalDevicePlugin = new _SandyPluginDefinition(
|
||||||
iosPhysicalDevicePluginDetails,
|
iosPhysicalDevicePluginDetails,
|
||||||
DeviceTestPluginModule,
|
createDeviceTestPluginModule(),
|
||||||
);
|
);
|
||||||
|
|
||||||
const iosEmulatorlDevicePluginDetails = TestUtils.createMockPluginDetails({
|
const iosEmulatorlDevicePluginDetails = TestUtils.createMockPluginDetails({
|
||||||
@@ -65,7 +77,7 @@ const iosEmulatorlDevicePluginDetails = TestUtils.createMockPluginDetails({
|
|||||||
});
|
});
|
||||||
const iosEmulatorDevicePlugin = new _SandyPluginDefinition(
|
const iosEmulatorDevicePlugin = new _SandyPluginDefinition(
|
||||||
iosEmulatorlDevicePluginDetails,
|
iosEmulatorlDevicePluginDetails,
|
||||||
DeviceTestPluginModule,
|
createDeviceTestPluginModule(),
|
||||||
);
|
);
|
||||||
const androiKaiosPhysicalDevicePluginDetails =
|
const androiKaiosPhysicalDevicePluginDetails =
|
||||||
TestUtils.createMockPluginDetails({
|
TestUtils.createMockPluginDetails({
|
||||||
@@ -83,7 +95,7 @@ const androiKaiosPhysicalDevicePluginDetails =
|
|||||||
});
|
});
|
||||||
const androidKaiosPhysicalDevicePlugin = new _SandyPluginDefinition(
|
const androidKaiosPhysicalDevicePlugin = new _SandyPluginDefinition(
|
||||||
androiKaiosPhysicalDevicePluginDetails,
|
androiKaiosPhysicalDevicePluginDetails,
|
||||||
DeviceTestPluginModule,
|
createDeviceTestPluginModule(),
|
||||||
);
|
);
|
||||||
|
|
||||||
const androidEmulatorlDevicePluginDetails = TestUtils.createMockPluginDetails({
|
const androidEmulatorlDevicePluginDetails = TestUtils.createMockPluginDetails({
|
||||||
@@ -100,7 +112,7 @@ const androidEmulatorlDevicePluginDetails = TestUtils.createMockPluginDetails({
|
|||||||
});
|
});
|
||||||
const androidEmulatorDevicePlugin = new _SandyPluginDefinition(
|
const androidEmulatorDevicePlugin = new _SandyPluginDefinition(
|
||||||
androidEmulatorlDevicePluginDetails,
|
androidEmulatorlDevicePluginDetails,
|
||||||
DeviceTestPluginModule,
|
createDeviceTestPluginModule(),
|
||||||
);
|
);
|
||||||
|
|
||||||
const androidOnlyDevicePluginDetails = TestUtils.createMockPluginDetails({
|
const androidOnlyDevicePluginDetails = TestUtils.createMockPluginDetails({
|
||||||
@@ -116,9 +128,36 @@ const androidOnlyDevicePluginDetails = TestUtils.createMockPluginDetails({
|
|||||||
});
|
});
|
||||||
const androidOnlyDevicePlugin = new _SandyPluginDefinition(
|
const androidOnlyDevicePlugin = new _SandyPluginDefinition(
|
||||||
androidOnlyDevicePluginDetails,
|
androidOnlyDevicePluginDetails,
|
||||||
DeviceTestPluginModule,
|
createDeviceTestPluginModule(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export class TestClient extends AbstractClient {
|
||||||
|
private pluginDefinitions: _SandyPluginDefinition[];
|
||||||
|
constructor(device: TestDevice, pluginDefinitions: _SandyPluginDefinition[]) {
|
||||||
|
super(
|
||||||
|
'testClient',
|
||||||
|
{} as any,
|
||||||
|
{
|
||||||
|
send: jest.fn(),
|
||||||
|
sendExpectResponse: jest.fn(),
|
||||||
|
},
|
||||||
|
getLogger(),
|
||||||
|
undefined,
|
||||||
|
device,
|
||||||
|
{} as any,
|
||||||
|
);
|
||||||
|
this.pluginDefinitions = pluginDefinitions;
|
||||||
|
}
|
||||||
|
|
||||||
|
shouldConnectAsBackgroundPlugin() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
async getPlugin(pluginId: string) {
|
||||||
|
return this.pluginDefinitions.find(({id}) => id === pluginId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
test('ios physical device compatibility', () => {
|
test('ios physical device compatibility', () => {
|
||||||
const device = new TestDevice('serial', 'physical', 'test device', 'iOS');
|
const device = new TestDevice('serial', 'physical', 'test device', 'iOS');
|
||||||
expect(device.supportsPlugin(physicalDevicePlugin)).toBeTruthy();
|
expect(device.supportsPlugin(physicalDevicePlugin)).toBeTruthy();
|
||||||
@@ -210,9 +249,18 @@ test('log listeners are resumed and suspended automatically - 1', async () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
await createMockFlipperWithPlugin(DevicePlugin, {
|
_setFlipperLibImplementation({
|
||||||
device,
|
...baseFlipperLibImplementation(getRenderHostInstance(), getLogger()),
|
||||||
|
createPaste: jest.fn(),
|
||||||
|
enableMenuEntries: jest.fn(),
|
||||||
|
selectPlugin: jest.fn(),
|
||||||
|
showNotification: jest.fn(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
device.loadDevicePlugins(
|
||||||
|
new Map([[DevicePlugin.id, DevicePlugin]]),
|
||||||
|
new Set([DevicePlugin.id]),
|
||||||
|
);
|
||||||
const instance = device.sandyPluginStates.get(DevicePlugin.id);
|
const instance = device.sandyPluginStates.get(DevicePlugin.id);
|
||||||
expect(instance).toBeDefined();
|
expect(instance).toBeDefined();
|
||||||
const entries = instance?.instanceApi.entries as any[];
|
const entries = instance?.instanceApi.entries as any[];
|
||||||
@@ -278,10 +326,29 @@ test('log listeners are resumed and suspended automatically - 2', async () => {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const flipper = await createMockFlipperWithPlugin(DevicePlugin, {
|
const client = new TestClient(device, [Plugin]);
|
||||||
device,
|
|
||||||
additionalPlugins: [Plugin],
|
_setFlipperLibImplementation({
|
||||||
|
...baseFlipperLibImplementation(getRenderHostInstance(), getLogger()),
|
||||||
|
createPaste: jest.fn(),
|
||||||
|
enableMenuEntries: jest.fn(),
|
||||||
|
selectPlugin: jest.fn(),
|
||||||
|
showNotification: jest.fn(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
device.loadDevicePlugins(
|
||||||
|
new Map([[DevicePlugin.id, DevicePlugin]]),
|
||||||
|
new Set([DevicePlugin.id]),
|
||||||
|
);
|
||||||
|
|
||||||
|
(client.connection?.sendExpectResponse as jest.Mock).mockImplementationOnce(
|
||||||
|
() => ({
|
||||||
|
success: {
|
||||||
|
plugins: [Plugin.id],
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
await client.init();
|
||||||
const instance = device.sandyPluginStates.get(DevicePlugin.id);
|
const instance = device.sandyPluginStates.get(DevicePlugin.id);
|
||||||
expect(instance).toBeDefined();
|
expect(instance).toBeDefined();
|
||||||
|
|
||||||
@@ -291,20 +358,19 @@ test('log listeners are resumed and suspended automatically - 2', async () => {
|
|||||||
expect(entries.length).toBe(2);
|
expect(entries.length).toBe(2);
|
||||||
|
|
||||||
// disable one plugin
|
// disable one plugin
|
||||||
await flipper.togglePlugin(Plugin.id);
|
client.stopPluginIfNeeded(Plugin.id);
|
||||||
expect(device.stopLogging).toBeCalledTimes(0);
|
expect(device.stopLogging).toBeCalledTimes(0);
|
||||||
device.addLogEntry(message);
|
device.addLogEntry(message);
|
||||||
expect(entries.length).toBe(3);
|
expect(entries.length).toBe(3);
|
||||||
|
|
||||||
// disable the other plugin
|
// disable the other plugin
|
||||||
await flipper.togglePlugin(DevicePlugin.id);
|
device.unloadDevicePlugin(DevicePlugin.id);
|
||||||
|
|
||||||
expect(device.stopLogging).toBeCalledTimes(1);
|
expect(device.stopLogging).toBeCalledTimes(1);
|
||||||
device.addLogEntry(message);
|
device.addLogEntry(message);
|
||||||
expect(entries.length).toBe(3);
|
expect(entries.length).toBe(3);
|
||||||
|
|
||||||
// re-enable plugn
|
// re-enable plugn
|
||||||
await flipper.togglePlugin(Plugin.id);
|
client.startPluginIfNeeded(Plugin);
|
||||||
expect(device.startLogging).toBeCalledTimes(2);
|
expect(device.startLogging).toBeCalledTimes(2);
|
||||||
device.addLogEntry(message);
|
device.addLogEntry(message);
|
||||||
expect(entries.length).toBe(4);
|
expect(entries.length).toBe(4);
|
||||||
Reference in New Issue
Block a user