Skip to content

Commit

Permalink
[Lens] Reinstate config errors in embeddable (#150650)
Browse files Browse the repository at this point in the history
  • Loading branch information
drewdaemon authored Feb 13, 2023
1 parent b0c1d5c commit 6e3551d
Show file tree
Hide file tree
Showing 7 changed files with 130 additions and 96 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ describe('application-level user messages', () => {
Object {
"displayLocations": Array [
Object {
"id": "visualization",
"id": "visualizationOnEmbeddable",
},
],
"fixableInEditor": true,
"longMessage": "Visualization type not found.",
"severity": "warning",
"severity": "error",
"shortMessage": "",
},
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ export const getApplicationUserMessages = ({
core,
}: {
visualizationType: string | null | undefined;
visualization: VisualizationState;
visualization: VisualizationState | undefined;
visualizationMap: VisualizationMap;
activeDatasource: Datasource | null;
activeDatasource: Datasource | null | undefined;
activeDatasourceState: { state: unknown } | null;
dataViews: DataViewsState;
core: CoreStart;
Expand All @@ -46,7 +46,7 @@ export const getApplicationUserMessages = ({
messages.push(getMissingVisTypeError());
}

if (visualization.activeId && !visualizationMap[visualization.activeId]) {
if (visualization?.activeId && !visualizationMap[visualization.activeId]) {
messages.push(getUnknownVisualizationTypeError(visualization.activeId));
}

Expand All @@ -69,8 +69,8 @@ export const getApplicationUserMessages = ({

function getMissingVisTypeError(): UserMessage {
return {
severity: 'warning',
displayLocations: [{ id: 'visualization' }],
severity: 'error',
displayLocations: [{ id: 'visualizationOnEmbeddable' }],
fixableInEditor: true,
shortMessage: '',
longMessage: i18n.translate('xpack.lens.editorFrame.expressionMissingVisualizationType', {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ export async function persistedStateToExpression(
}

export function getMissingIndexPattern(
currentDatasource: Datasource | null,
currentDatasource: Datasource | null | undefined,
currentDatasourceState: { state: unknown } | null,
indexPatterns: IndexPatternMap
) {
Expand Down
125 changes: 63 additions & 62 deletions x-pack/plugins/lens/public/embeddable/embeddable.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,23 +30,36 @@ import { OnSaveProps } from '@kbn/saved-objects-plugin/public/save_modal';
import { act } from 'react-dom/test-utils';
import { inspectorPluginMock } from '@kbn/inspector-plugin/public/mocks';
import { Visualization } from '../types';
import { createMockDatasource, createMockVisualization } from '../mocks';

jest.mock('@kbn/inspector-plugin/public', () => ({
isAvailable: false,
open: false,
}));

const defaultVisualizationId = 'lnsSomeVisType';
const defaultDatasourceId = 'someDatasource';

const savedVis: Document = {
state: {
visualization: {},
datasourceStates: {},
visualization: { activeId: defaultVisualizationId },
datasourceStates: { [defaultDatasourceId]: {} },
query: { query: '', language: 'lucene' },
filters: [],
},
references: [],
title: 'My title',
visualizationType: '',
visualizationType: defaultVisualizationId,
};

const defaultVisualizationMap = {
[defaultVisualizationId]: createMockVisualization(),
};

const defaultDatasourceMap = {
[defaultDatasourceId]: createMockDatasource(defaultDatasourceId),
};

const defaultSaveMethod = (
testAttributes: LensSavedObjectAttributes,
savedObjectId?: string
Expand Down Expand Up @@ -155,8 +168,8 @@ describe('embeddable', () => {
inspector: inspectorPluginMock.createStartContract(),
getTrigger,
theme: themeServiceMock.createStartContract(),
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
documentToExpression: () =>
Promise.resolve({
Expand Down Expand Up @@ -208,8 +221,8 @@ describe('embeddable', () => {
inspector: inspectorPluginMock.createStartContract(),
getTrigger,
theme: themeServiceMock.createStartContract(),
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
documentToExpression: () =>
Promise.resolve({
Expand Down Expand Up @@ -268,8 +281,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -322,8 +335,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -398,8 +411,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -452,8 +465,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -505,8 +518,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -554,8 +567,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -609,8 +622,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -668,8 +681,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -725,8 +738,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -789,8 +802,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -854,8 +867,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -922,8 +935,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -975,8 +988,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -1030,8 +1043,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -1082,8 +1095,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -1150,8 +1163,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -1236,8 +1249,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -1297,8 +1310,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -1355,8 +1368,8 @@ describe('embeddable', () => {
navLinks: {},
},
getTrigger,
visualizationMap: {},
datasourceMap: {},
visualizationMap: defaultVisualizationMap,
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
theme: themeServiceMock.createStartContract(),
documentToExpression: () =>
Expand Down Expand Up @@ -1408,7 +1421,7 @@ describe('embeddable', () => {
const visDocument: Document = {
state: {
visualization: {},
datasourceStates: {},
datasourceStates: { [defaultDatasourceId]: {} },
query: { query: '', language: 'lucene' },
filters: [],
},
Expand Down Expand Up @@ -1443,7 +1456,7 @@ describe('embeddable', () => {
initialize: () => {},
} as unknown as Visualization,
},
datasourceMap: {},
datasourceMap: defaultDatasourceMap,
documentToExpression: documentToExpressionMock,
},
{ id: '123' } as unknown as LensEmbeddableInput
Expand Down Expand Up @@ -1475,23 +1488,11 @@ describe('embeddable', () => {
it('should override noPadding in the display options if noPadding is set in the embeddable input', async () => {
expressionRenderer = jest.fn((_) => null);

const visDocument: Document = {
state: {
visualization: {},
datasourceStates: {},
query: { query: '', language: 'lucene' },
filters: [],
},
references: [],
title: 'My title',
visualizationType: 'testVis',
};

const createEmbeddable = (displayOptions?: { noPadding: boolean }, noPadding?: boolean) => {
return new Embeddable(
{
timefilter: dataPluginMock.createSetupContract().query.timefilter.timefilter,
attributeService: attributeServiceMockFromSavedVis(visDocument),
attributeService: attributeServiceMockFromSavedVis(savedVis),
data: dataMock,
expressionRenderer,
coreStart: {} as CoreStart,
Expand All @@ -1507,12 +1508,12 @@ describe('embeddable', () => {
getTrigger,
theme: themeServiceMock.createStartContract(),
visualizationMap: {
[visDocument.visualizationType as string]: {
[savedVis.visualizationType as string]: {
getDisplayOptions: displayOptions ? () => displayOptions : undefined,
initialize: () => {},
} as unknown as Visualization,
},
datasourceMap: {},
datasourceMap: defaultDatasourceMap,
injectFilterReferences: jest.fn(mockInjectFilterReferences),
documentToExpression: () =>
Promise.resolve({
Expand Down
Loading

0 comments on commit 6e3551d

Please sign in to comment.