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,
   });
 }
 

Reply via email to