diff --git a/packages/grafana-schema/src/schema/dashboard/v2_examples.ts b/packages/grafana-schema/src/schema/dashboard/v2_examples.ts
index 651d858e799..4186fccd0ce 100644
--- a/packages/grafana-schema/src/schema/dashboard/v2_examples.ts
+++ b/packages/grafana-schema/src/schema/dashboard/v2_examples.ts
@@ -327,6 +327,7 @@ export const handyTestingSchema: Spec = {
query: 'option1, option2',
skipUrlSync: false,
allowCustomValue: true,
+ valuesFormat: 'csv',
},
},
{
diff --git a/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.test.ts b/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.test.ts
index 9914559093a..a0d723a5edc 100644
--- a/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.test.ts
+++ b/public/app/features/dashboard-scene/serialization/DashboardSceneSerializer.test.ts
@@ -844,6 +844,7 @@ describe('DashboardSceneSerializer', () => {
query: 'app1',
skipUrlSync: false,
allowCustomValue: true,
+ valuesFormat: 'csv',
},
},
]);
diff --git a/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModel.test.ts.snap b/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModel.test.ts.snap
index f119b3c611c..fb6d2b8d259 100644
--- a/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModel.test.ts.snap
+++ b/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModel.test.ts.snap
@@ -294,6 +294,7 @@ exports[`Given a scene with custom quick ranges should save quick ranges to save
"options": [],
"query": "a, b, c",
"type": "custom",
+ "valuesFormat": "csv",
},
{
"current": {
@@ -679,6 +680,7 @@ exports[`transformSceneToSaveModel Given a scene with rows Should transform back
"options": [],
"query": "A,B,C,D,E,F,E,G,H,I,J,K,L",
"type": "custom",
+ "valuesFormat": "csv",
},
{
"current": {
@@ -697,6 +699,7 @@ exports[`transformSceneToSaveModel Given a scene with rows Should transform back
"options": [],
"query": "Bob : 1, Rob : 2,Sod : 3, Hod : 4, Cod : 5",
"type": "custom",
+ "valuesFormat": "csv",
},
],
},
@@ -1019,6 +1022,7 @@ exports[`transformSceneToSaveModel Given a simple scene with custom settings Sho
"options": [],
"query": "a, b, c",
"type": "custom",
+ "valuesFormat": "csv",
},
{
"current": {
@@ -1378,6 +1382,7 @@ exports[`transformSceneToSaveModel Given a simple scene with variables Should tr
"options": [],
"query": "a, b, c",
"type": "custom",
+ "valuesFormat": "csv",
},
{
"current": {
diff --git a/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModelSchemaV2.test.ts.snap b/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModelSchemaV2.test.ts.snap
index 6bddc68fb09..ddffb97ab42 100644
--- a/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModelSchemaV2.test.ts.snap
+++ b/public/app/features/dashboard-scene/serialization/__snapshots__/transformSceneToSaveModelSchemaV2.test.ts.snap
@@ -208,6 +208,7 @@ exports[`transformSceneToSaveModelSchemaV2 should transform scene to save model
],
"query": "option1, option2",
"skipUrlSync": false,
+ "valuesFormat": "csv",
},
},
{
diff --git a/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts b/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts
index 8772646b496..63d73994624 100644
--- a/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts
+++ b/public/app/features/dashboard-scene/serialization/sceneVariablesSetToVariables.test.ts
@@ -390,6 +390,7 @@ describe('sceneVariablesSetToVariables', () => {
],
"query": "test,test1,test2",
"type": "custom",
+ "valuesFormat": "csv",
}
`);
});
@@ -1180,6 +1181,7 @@ describe('sceneVariablesSetToVariables', () => {
],
"query": "test,test1,test2",
"skipUrlSync": false,
+ "valuesFormat": "csv",
},
}
`);
diff --git a/public/app/features/dashboard-scene/settings/variables/components/CustomVariableForm.test.tsx b/public/app/features/dashboard-scene/settings/variables/components/CustomVariableForm.test.tsx
index 924f9fa5702..34c06aea3ed 100644
--- a/public/app/features/dashboard-scene/settings/variables/components/CustomVariableForm.test.tsx
+++ b/public/app/features/dashboard-scene/settings/variables/components/CustomVariableForm.test.tsx
@@ -1,4 +1,5 @@
-import { render, fireEvent } from '@testing-library/react';
+import { fireEvent, render, screen } from '@testing-library/react';
+import userEvent from '@testing-library/user-event';
import { selectors } from '@grafana/e2e-selectors';
@@ -130,4 +131,71 @@ describe('CustomVariableForm', () => {
expect(onMultiChange).not.toHaveBeenCalled();
expect(onIncludeAllChange).not.toHaveBeenCalled();
});
+
+ describe('JSON values format', () => {
+ test('should render the form fields correctly', async () => {
+ const { getByTestId, queryByTestId } = render(
+
+ );
+
+ await userEvent.click(screen.getByText('Object values in a JSON array'));
+
+ const multiCheckbox = getByTestId(
+ selectors.pages.Dashboard.Settings.Variables.Edit.General.selectionOptionsMultiSwitch
+ );
+ const allowCustomValueCheckbox = queryByTestId(
+ selectors.pages.Dashboard.Settings.Variables.Edit.General.selectionOptionsAllowCustomValueSwitch
+ );
+ const includeAllCheckbox = getByTestId(
+ selectors.pages.Dashboard.Settings.Variables.Edit.General.selectionOptionsIncludeAllSwitch
+ );
+ const allValueInput = queryByTestId(
+ selectors.pages.Dashboard.Settings.Variables.Edit.General.selectionOptionsCustomAllInput
+ );
+
+ expect(multiCheckbox).toBeInTheDocument();
+ expect(multiCheckbox).toBeChecked();
+ expect(includeAllCheckbox).toBeInTheDocument();
+ expect(includeAllCheckbox).toBeChecked();
+
+ expect(allowCustomValueCheckbox).not.toBeInTheDocument();
+ expect(allValueInput).not.toBeInTheDocument();
+ });
+
+ test('should display validation error', async () => {
+ const validationError = new Error('Ooops! Validation error.');
+
+ const { findByText } = render(
+
+ );
+
+ await userEvent.click(screen.getByText('Object values in a JSON array'));
+
+ const errorEl = await findByText(validationError.message);
+ expect(errorEl).toBeInTheDocument();
+ });
+ });
});
diff --git a/public/app/features/dashboard-scene/utils/variables.test.ts b/public/app/features/dashboard-scene/utils/variables.test.ts
index e627bd01866..e8126023fc9 100644
--- a/public/app/features/dashboard-scene/utils/variables.test.ts
+++ b/public/app/features/dashboard-scene/utils/variables.test.ts
@@ -103,6 +103,7 @@ describe('when creating variables objects', () => {
text: 'a',
type: 'custom',
value: 'a',
+ valuesFormat: 'csv',
hide: 0,
});
});