* test(frontend): ignore azuremonitor tests in root jest config * test(loki): increase waitfor in monacofieldwrapper test * feat(plugin-configs): introduce jest config * feat(azuremonitor): add jest config and test scripts * ci(pr-frontend-unit-tests): introduce separate decoupled plugin test job * ci(pr-frontend-unit-tests): run decoupled-plugin tests regardless of fork * Wip * test(decoupled-plugins): decouple tests in all plugins except loki and mssql * test(frontend): ignore decoupled plugins that run their own tests * test(stackdriver): update snapshot due to reactinlinesvg mock difference * chore(yarn): update lock file * chore(plugin-configs): remove create-plugin comments * ci(frontend-unit-tests): make them run on pr or merge to main * chore(decoupled-plugins): add plugin:test:ci command for locally running all tests * ci(frontend-unit-tests): run test:ci instead of calling nx directly * chore(decoupled-plugins): fix jest-dom types for loki and testdata
26 lines
937 B
TypeScript
26 lines
937 B
TypeScript
// Due to the grafana/ui Icon component making fetch requests to
|
|
// `/public/img/icon/<icon_name>.svg` we need to mock react-inlinesvg to prevent
|
|
// the failed fetch requests from displaying errors in console.
|
|
|
|
import { Ref } from 'react';
|
|
|
|
type Callback = (...args: unknown[]) => void;
|
|
|
|
export interface StorageItem {
|
|
content: string;
|
|
queue: Callback[];
|
|
status: string;
|
|
}
|
|
|
|
export const cacheStore: { [key: string]: StorageItem } = Object.create(null);
|
|
|
|
const SVG_FILE_NAME_REGEX = /(.+)\/(.+)\.svg$/;
|
|
|
|
const InlineSVG = ({ src, innerRef, ...rest }: { src: string; innerRef: Ref<SVGSVGElement> }) => {
|
|
// testId will be the file name without extension (e.g. `public/img/icons/angle-double-down.svg` -> `angle-double-down`)
|
|
const testId = src.replace(SVG_FILE_NAME_REGEX, '$2');
|
|
return <svg xmlns="http://www.w3.org/2000/svg" data-testid={testId} viewBox="0 0 24 24" ref={innerRef} {...rest} />;
|
|
};
|
|
|
|
export default InlineSVG;
|