Files
flipper/desktop/flipper-plugin/src/__tests__/api.node.tsx
Andrey Goncharov af73cbb669 Add power search config to data table column config
Summary: Doc: https://docs.google.com/document/d/1miofxds9DJgWScj0zFyBbdpRH5Rj0T9FqiCapof5-vU/edit#heading=h.pg8svtdjlx7

Reviewed By: lblasa

Differential Revision: D48866308

fbshipit-source-id: 72ed7eb1401e44722d9bb9e680d6fa5d558b8eed
2023-09-14 04:48:12 -07:00

161 lines
3.7 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 {readFile} from 'fs';
import {promisify} from 'util';
import * as FlipperPluginModule from '../index';
test('Correct top level API exposed', () => {
const exposedAPIs: string[] = [];
const exposedTypes: string[] = [];
Object.entries(FlipperPluginModule).forEach(([key, value]) => {
if (key[0] === '_') {
return;
}
if (value === undefined) {
exposedTypes.push(key);
} else {
exposedAPIs.push(key);
}
});
// Note, all `exposedAPIs` should be documented in `flipper-plugin.mdx`
expect(exposedAPIs.sort()).toMatchInlineSnapshot(`
[
"CodeBlock",
"DataDescription",
"DataFormatter",
"DataInspector",
"DataList",
"DataSource",
"DataTable",
"DetailSidebar",
"Dialog",
"ElementsInspector",
"FileSelector",
"HighlightContext",
"HighlightProvider",
"Layout",
"MarkerTimeline",
"MasterDetail",
"NUX",
"Panel",
"PowerSearch",
"Spinner",
"Tab",
"Tabs",
"TestUtils",
"TimelineDataDescription",
"Toolbar",
"Tracked",
"TrackingScope",
"batch",
"createControlledPromise",
"createDataSource",
"createState",
"createTablePlugin",
"getFlipperLib",
"isAtom",
"path",
"produce",
"renderReactRoot",
"safeStringify",
"sleep",
"styled",
"suggestNewPlugin",
"textContent",
"theme",
"timeout",
"useHighlighter",
"useLocalStorageState",
"useLogger",
"useMemoize",
"usePlugin",
"useTrackedCallback",
"useValue",
"uuid",
"withTrackingScope",
]
`);
expect(exposedTypes.sort()).toMatchInlineSnapshot(`
[
"Atom",
"AtomPersistentStorage",
"CrashLog",
"CrashLogListener",
"CreatePasteArgs",
"CreatePasteResult",
"DataDescriptionType",
"DataInspectorExpanded",
"DataSourceVirtualizer",
"DataTableColumn",
"DataTableManager",
"DataValueExtractor",
"DefaultKeyboardAction",
"Device",
"DeviceLogEntry",
"DeviceLogLevel",
"DeviceLogListener",
"DeviceOS",
"DevicePluginClient",
"DeviceType",
"DialogResult",
"DownloadFileResponse",
"Draft",
"ElementAttribute",
"ElementData",
"ElementExtraInfo",
"ElementID",
"ElementSearchResultSet",
"ElementsInspectorElement",
"ElementsInspectorProps",
"FieldConfig",
"FileDescriptor",
"FileEncoding",
"FlipperLib",
"FlipperPluginInstance",
"FlipperServerForServerAddOn",
"HighlightManager",
"Idler",
"InteractionReport",
"InteractionReporter",
"Logger",
"MenuEntry",
"NormalizedMenuEntry",
"Notification",
"OperatorConfig",
"PluginClient",
"PowerSearchConfig",
"RemoteServerContext",
"SearchExpressionTerm",
"ServerAddOn",
"ServerAddOnPluginConnection",
]
`);
});
test('All APIs documented', async () => {
const docs = await promisify(readFile)(
__dirname + '/../../../../docs/extending/flipper-plugin.mdx',
'utf8',
);
Object.keys(FlipperPluginModule)
.filter(
(key) =>
!key.startsWith('_') && (FlipperPluginModule as any)[key] !== undefined,
)
.forEach((key) => {
// There should be a header with this identifier
if (!new RegExp(`# ${key}\\b`).test(docs)) {
fail(`Not documented: '${key}'`);
}
});
});