Skip to content

Commit 8764cd8

Browse files
authored
feat(schema): add schema export modal, feature flag gated COMPASS-8703 (#6668)
1 parent 40056b2 commit 8764cd8

File tree

22 files changed

+1930
-291
lines changed

22 files changed

+1930
-291
lines changed

package-lock.json

Lines changed: 1034 additions & 177 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/compass-aggregations/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
"mongodb-instance-model": "^12.26.0",
9292
"mongodb-ns": "^2.4.2",
9393
"mongodb-query-parser": "^4.3.0",
94-
"mongodb-schema": "^12.2.0",
94+
"mongodb-schema": "^12.3.2",
9595
"prop-types": "^15.7.2",
9696
"re-resizable": "^6.9.0",
9797
"react": "^17.0.2",

packages/compass-e2e-tests/helpers/selectors.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,6 +1011,10 @@ export const AggregationWizardSortFormDirectionSelect = (idx: number) =>
10111011

10121012
// Schema tab
10131013
export const AnalyzeSchemaButton = '[data-testid="analyze-schema-button"]';
1014+
export const ExportSchemaButton = '[data-testid="open-schema-export-button"]';
1015+
export const ExportSchemaFormatOptions =
1016+
'[data-testid="export-schema-format-type-box-group"]';
1017+
export const ExportSchemaOutput = '[data-testid="export-schema-content"]';
10141018
export const SchemaFieldList = '[data-testid="schema-field-list"]';
10151019
export const AnalysisMessage =
10161020
'[data-testid="schema-content"] [data-testid="schema-analysis-message"]';

packages/compass-e2e-tests/tests/collection-schema-tab.test.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,54 @@ describe('Collection schema tab', function () {
109109
});
110110
}
111111

112+
describe('with the enableExportSchema feature flag enabled', function () {
113+
beforeEach(async function () {
114+
// TODO(COMPASS-8819): remove web skip when defaulted true.
115+
skipForWeb(this, "can't toggle features in compass-web");
116+
await browser.setFeature('enableExportSchema', true);
117+
});
118+
119+
it('shows an exported schema to copy', async function () {
120+
await browser.navigateToCollectionTab(
121+
DEFAULT_CONNECTION_NAME_1,
122+
'test',
123+
'numbers',
124+
'Schema'
125+
);
126+
await browser.clickVisible(Selectors.AnalyzeSchemaButton);
127+
128+
const element = browser.$(Selectors.SchemaFieldList);
129+
await element.waitForDisplayed();
130+
131+
await browser.clickVisible(Selectors.ExportSchemaButton);
132+
133+
const exportModal = browser.$(Selectors.ExportSchemaFormatOptions);
134+
await exportModal.waitForDisplayed();
135+
136+
const exportSchemaContent = browser.$(Selectors.ExportSchemaOutput);
137+
await exportSchemaContent.waitForDisplayed();
138+
const text = await browser.$(Selectors.ExportSchemaOutput).getText();
139+
const parsedText = JSON.parse(text);
140+
delete parsedText.$defs;
141+
expect(parsedText).to.deep.equal({
142+
$schema: 'https://json-schema.org/draft/2020-12/schema',
143+
type: 'object',
144+
required: ['_id', 'i', 'j'],
145+
properties: {
146+
_id: {
147+
$ref: '#/$defs/ObjectId',
148+
},
149+
i: {
150+
type: 'integer',
151+
},
152+
j: {
153+
type: 'integer',
154+
},
155+
},
156+
});
157+
});
158+
});
159+
112160
it('analyzes the schema with a query');
113161
it('can reset the query');
114162
it('can create a geoquery from a map');

packages/compass-field-store/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
"@mongodb-js/compass-logging": "^1.6.0",
7474
"hadron-app-registry": "^9.4.0",
7575
"lodash": "^4.17.21",
76-
"mongodb-schema": "^12.2.0",
76+
"mongodb-schema": "^12.3.2",
7777
"react": "^17.0.2",
7878
"react-redux": "^8.1.3",
7979
"redux": "^4.2.1",

packages/compass-generative-ai/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
"compass-preferences-model": "^2.33.0",
6363
"hadron-app-registry": "^9.4.0",
6464
"mongodb": "^6.12.0",
65-
"mongodb-schema": "^12.2.0",
65+
"mongodb-schema": "^12.3.2",
6666
"react": "^17.0.2",
6767
"react-redux": "^8.1.3",
6868
"redux": "^4.2.1",

packages/compass-import-export/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
"mongodb-data-service": "^22.25.0",
6969
"mongodb-ns": "^2.4.2",
7070
"mongodb-query-parser": "^4.3.0",
71-
"mongodb-schema": "^12.2.0",
71+
"mongodb-schema": "^12.3.2",
7272
"papaparse": "^5.3.2",
7373
"react": "^17.0.2",
7474
"react-redux": "^8.1.3",

packages/compass-preferences-model/src/feature-flags.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export type FeatureFlags = {
1717
enableOidc: boolean; // Not capitalized "OIDC" for spawn arg casing.
1818
newExplainPlan: boolean;
1919
showInsights: boolean;
20+
enableExportSchema: boolean;
2021
enableRenameCollectionModal: boolean;
2122
enableQueryHistoryAutocomplete: boolean;
2223
enableProxySupport: boolean;
@@ -100,4 +101,14 @@ export const featureFlags: Required<{
100101
short: 'Enable Global Writes tab in Atlas Cloud',
101102
},
102103
},
104+
105+
/**
106+
* Feature flag for export schema. Epic: COMPASS-6862.
107+
*/
108+
enableExportSchema: {
109+
stage: 'development',
110+
description: {
111+
short: 'Enable schema export',
112+
},
113+
},
103114
};

packages/compass-query-bar/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
"mongodb-ns": "^2.4.2",
8888
"mongodb-query-parser": "^4.3.0",
8989
"mongodb-query-util": "^2.4.0",
90-
"mongodb-schema": "^12.2.0",
90+
"mongodb-schema": "^12.3.2",
9191
"react": "^17.0.2",
9292
"react-redux": "^8.1.3",
9393
"redux": "^4.2.1",

packages/compass-schema/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
"lodash": "^4.17.21",
9292
"mongodb": "^6.12.0",
9393
"mongodb-query-util": "^2.4.0",
94-
"mongodb-schema": "^12.2.0",
94+
"mongodb-schema": "^12.3.2",
9595
"numeral": "^1.5.6",
9696
"prop-types": "^15.7.2",
9797
"react": "^17.0.2",

0 commit comments

Comments
 (0)