This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new fbffae04446 fix(dataset-editor): drop null warning_markdown from extra
JSON serialisation (#39706)
fbffae04446 is described below
commit fbffae0444685b3c57d6e54fd72f8c029a51009f
Author: Mike Bridge <[email protected]>
AuthorDate: Wed May 20 11:34:03 2026 -0600
fix(dataset-editor): drop null warning_markdown from extra JSON
serialisation (#39706)
Co-authored-by: Mike Bridge <[email protected]>
Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
---
.../DatasourceModal/DatasourceModal.test.tsx | 34 +++++++++++++++++++++-
.../Datasource/DatasourceModal/index.tsx | 4 +--
2 files changed, 35 insertions(+), 3 deletions(-)
diff --git
a/superset-frontend/src/components/Datasource/DatasourceModal/DatasourceModal.test.tsx
b/superset-frontend/src/components/Datasource/DatasourceModal/DatasourceModal.test.tsx
index e3c8b17f969..44abfd09b99 100644
---
a/superset-frontend/src/components/Datasource/DatasourceModal/DatasourceModal.test.tsx
+++
b/superset-frontend/src/components/Datasource/DatasourceModal/DatasourceModal.test.tsx
@@ -28,7 +28,7 @@ import fetchMock from 'fetch-mock';
import { SupersetClient } from '@superset-ui/core';
import mockDatasource from 'spec/fixtures/mockDatasource';
import React from 'react';
-import DatasourceModalComponent from '.';
+import DatasourceModalComponent, { buildExtraJsonObject } from '.';
// Cast to accept partial mock props in tests
const DatasourceModal = DatasourceModalComponent as unknown as React.FC<
@@ -309,3 +309,35 @@ describe('DatasourceModal', () => {
});
});
});
+
+describe('buildExtraJsonObject', () => {
+ test('returns "{}" for an item with no warning and no certification', () => {
+ expect(buildExtraJsonObject({} as any)).toBe('{}');
+ });
+
+ test('drops warning_markdown when its value is null', () => {
+ expect(buildExtraJsonObject({ warning_markdown: null } as any)).toBe('{}');
+ });
+
+ test('drops warning_markdown when its value is an empty string', () => {
+ expect(buildExtraJsonObject({ warning_markdown: '' } as any)).toBe('{}');
+ });
+
+ test('preserves a non-empty warning_markdown verbatim', () => {
+ expect(buildExtraJsonObject({ warning_markdown: '⚠ caveat' } as any)).toBe(
+ '{"warning_markdown":"⚠ caveat"}',
+ );
+ });
+
+ test('preserves certification and drops null warning_markdown', () => {
+ expect(
+ buildExtraJsonObject({
+ certified_by: 'data-team',
+ certification_details: 'verified',
+ warning_markdown: null,
+ } as any),
+ ).toBe(
+ '{"certification":{"certified_by":"data-team","details":"verified"}}',
+ );
+ });
+});
diff --git
a/superset-frontend/src/components/Datasource/DatasourceModal/index.tsx
b/superset-frontend/src/components/Datasource/DatasourceModal/index.tsx
index 65744e543eb..4049268c3e5 100644
--- a/superset-frontend/src/components/Datasource/DatasourceModal/index.tsx
+++ b/superset-frontend/src/components/Datasource/DatasourceModal/index.tsx
@@ -71,7 +71,7 @@ const StyledDatasourceModal = styled(Modal)`
}
`;
-function buildExtraJsonObject(
+export function buildExtraJsonObject(
item: DatasetObject['metrics'][0] | DatasetObject['columns'][0],
) {
const certification =
@@ -83,7 +83,7 @@ function buildExtraJsonObject(
: undefined;
return JSON.stringify({
certification,
- warning_markdown: item?.warning_markdown,
+ warning_markdown: item?.warning_markdown || undefined,
});
}