diff --git a/packages/compass-collection/src/components/collection-header-actions/collection-header-actions.spec.tsx b/packages/compass-collection/src/components/collection-header-actions/collection-header-actions.spec.tsx index 1450a7566d2..763e81b165b 100644 --- a/packages/compass-collection/src/components/collection-header-actions/collection-header-actions.spec.tsx +++ b/packages/compass-collection/src/components/collection-header-actions/collection-header-actions.spec.tsx @@ -54,6 +54,7 @@ describe('CollectionHeaderActions [Component]', function () { = ({ namespace, isReadonly, + isTimeSeries, editViewName, sourceName, sourcePipeline, @@ -99,24 +101,28 @@ const CollectionHeaderActions: React.FunctionComponent< 'enableGenAISampleDocumentPassing' ); + const { database, collection } = toNS(namespace); + + const isMockDataGeneratorEligible = Boolean( + atlasMetadata && // Only show in Atlas + !isReadonly && // Don't show for readonly collections (views) + !isTimeSeries && // Don't show for time series collections + !sourceName // sourceName indicates it's a view + ); + // Get experiment assignment for Mock Data Generator const mockDataGeneratorAssignment = useAssignment( ExperimentTestName.mockDataGenerator, - true // trackIsInSample - this will fire the "Experiment Viewed" event + isMockDataGeneratorEligible // Only track eligible collections ); - const { database, collection } = toNS(namespace); - // Check if user is in treatment group for Mock Data Generator experiment const isInMockDataTreatmentVariant = mockDataGeneratorAssignment?.assignment?.assignmentData?.variant === ExperimentTestGroup.mockDataGeneratorVariant; const shouldShowMockDataButton = - isInMockDataTreatmentVariant && - atlasMetadata && // Only show in Atlas - !isReadonly && // Don't show for readonly collections (views) - !sourceName; // sourceName indicates it's a view + isMockDataGeneratorEligible && isInMockDataTreatmentVariant; const exceedsMaxNestingDepth = analyzedSchemaDepth > MAX_COLLECTION_NESTING_DEPTH; diff --git a/packages/compass-collection/src/components/collection-header/collection-header.tsx b/packages/compass-collection/src/components/collection-header/collection-header.tsx index 1219529954c..bbca8d22b48 100644 --- a/packages/compass-collection/src/components/collection-header/collection-header.tsx +++ b/packages/compass-collection/src/components/collection-header/collection-header.tsx @@ -185,6 +185,7 @@ const CollectionHeader: React.FunctionComponent = ({ Promise.resolve(null)); + + await configureStore( + undefined, + {}, + { assignExperiment }, + mockAtlasConnectionInfo, + undefined, + undefined, + { ...defaultMetadata, isReadonly: true } + ); + + // Wait a bit to ensure assignment would have happened if it was going to + await new Promise((resolve) => setTimeout(resolve, 50)); + expect(assignExperiment).to.not.have.been.called; + }); + + it('should not assign experiment for time series collections', async function () { + const assignExperiment = sandbox.spy(() => Promise.resolve(null)); + + await configureStore( + undefined, + {}, + { assignExperiment }, + mockAtlasConnectionInfo, + undefined, + undefined, + { ...defaultMetadata, isTimeSeries: true } + ); + + // Wait a bit to ensure assignment would have happened if it was going to + await new Promise((resolve) => setTimeout(resolve, 50)); + expect(assignExperiment).to.not.have.been.called; + }); }); describe('schema analysis on collection load', function () { diff --git a/packages/compass-collection/src/stores/collection-tab.ts b/packages/compass-collection/src/stores/collection-tab.ts index fc404e20c1f..bc310f5768a 100644 --- a/packages/compass-collection/src/stores/collection-tab.ts +++ b/packages/compass-collection/src/stores/collection-tab.ts @@ -143,8 +143,11 @@ export function activatePlugin( store.dispatch(collectionMetadataFetched(metadata)); // Assign experiment for Mock Data Generator - // Only assign when we're connected to Atlas and the org-level setting for AI features is enabled + // Only assign when we're connected to Atlas, the org-level setting for AI features is enabled, + // and the collection supports the Mock Data Generator feature (not readonly/timeseries) if ( + !metadata.isReadonly && + !metadata.isTimeSeries && connectionInfoRef.current?.atlasMetadata?.clusterName && // Ensures we only assign in Atlas isAIFeatureEnabled(preferences.getPreferences()) // Ensures org-level AI features setting is enabled ) {