Files
flipper/desktop/plugins/public/logs/__tests__/logs.node.tsx
Lorenzo Blasa 6430403da0 Jest update v26.6.3 -> v29.5.1
Summary:
^

Basically, update Jest and fix any raised issues. Mainly:
- Update necessary dependencies
- Update snapshots
- `useFakeTimers` caused a few issues which meant that the way we hook into the performance object had to be tweaked. The main code change is: `//fbsource/xplat/sonar/desktop/scripts/jest-setup-after.tsx`
- `mocked` -> `jest.mocked`

Changelog: Update Jest to v29.5.1

Reviewed By: antonk52

Differential Revision: D46319818

fbshipit-source-id: d218ca8f7e43abac6b00844953ddeb7f4e1010a2
2023-05-31 14:19:29 -07:00

170 lines
3.5 KiB
TypeScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import {sleep, TestUtils} from 'flipper-plugin';
import * as LogsPlugin from '../index';
const entry1 = {
date: new Date(1611854112859),
message: 'test1',
pid: 0,
tag: 'test',
tid: 1,
type: 'error',
app: 'X',
} as const;
const entry2 = {
date: new Date(1611854117859),
message: 'test2',
pid: 2,
tag: 'test',
tid: 3,
type: 'warn',
app: 'Y',
} as const;
const entry3 = {
date: new Date(1611854112859),
message: 'test3',
pid: 0,
tag: 'test',
tid: 1,
type: 'error',
app: 'X',
} as const;
test('it will merge equal rows', () => {
const {instance, sendLogEntry} = TestUtils.startDevicePlugin(LogsPlugin);
sendLogEntry(entry1);
sendLogEntry(entry2);
sendLogEntry({
...entry2,
date: new Date(1611954117859),
});
sendLogEntry(entry3);
expect(instance.rows.records()).toMatchInlineSnapshot(`
[
{
"app": "X",
"count": 1,
"date": 2021-01-28T17:15:12.859Z,
"message": "test1",
"pid": 0,
"tag": "test",
"tid": 1,
"type": "error",
},
{
"app": "Y",
"count": 2,
"date": 2021-01-28T17:15:17.859Z,
"message": "test2",
"pid": 2,
"tag": "test",
"tid": 3,
"type": "warn",
},
{
"app": "X",
"count": 1,
"date": 2021-01-28T17:15:12.859Z,
"message": "test3",
"pid": 0,
"tag": "test",
"tid": 1,
"type": "error",
},
]
`);
});
test('it supports deeplink and select nodes + navigating to bottom', async () => {
const {instance, sendLogEntry, triggerDeepLink, act, triggerMenuEntry} =
TestUtils.renderDevicePlugin(LogsPlugin);
sendLogEntry(entry1);
sendLogEntry(entry2);
sendLogEntry(entry3);
expect(instance.tableManagerRef).not.toBeUndefined();
expect(instance.tableManagerRef.current).not.toBeNull();
expect(instance.tableManagerRef.current?.getSelectedItems()).toEqual([]);
act(() => {
triggerDeepLink('test2');
});
await sleep(1000);
expect(instance.tableManagerRef.current?.getSelectedItems()).toEqual([
{
...entry2,
count: 1,
},
]);
act(() => {
triggerMenuEntry('goToBottom');
});
expect(instance.tableManagerRef.current?.getSelectedItems()).toEqual([
{
...entry3,
count: 1,
},
]);
});
test('export / import plugin does work', async () => {
const {instance, exportStateAsync, sendLogEntry} =
TestUtils.startDevicePlugin(LogsPlugin);
sendLogEntry(entry1);
sendLogEntry(entry2);
const data = await exportStateAsync();
expect(data).toMatchInlineSnapshot(`
{
"logs": [
{
"app": "X",
"count": 1,
"date": 2021-01-28T17:15:12.859Z,
"message": "test1",
"pid": 0,
"tag": "test",
"tid": 1,
"type": "error",
},
{
"app": "Y",
"count": 1,
"date": 2021-01-28T17:15:17.859Z,
"message": "test2",
"pid": 2,
"tag": "test",
"tid": 3,
"type": "warn",
},
],
}
`);
expect(instance.rows.size).toBe(2);
// Run a second import
{
const {exportStateAsync} = TestUtils.startDevicePlugin(LogsPlugin, {
initialState: data,
});
expect(await exportStateAsync()).toEqual(data);
}
});