diff --git a/ee/spec/requests/api/usage_data_spec.rb b/ee/spec/requests/api/usage_data_spec.rb index 349aca3968e2d1a93b1f3cbc58ea0e125372cd51..7d3a5d6d256d94b22c13b263792182aaf5297b9d 100644 --- a/ee/spec/requests/api/usage_data_spec.rb +++ b/ee/spec/requests/api/usage_data_spec.rb @@ -8,32 +8,48 @@ describe 'POST /usage_data/track_event' do let(:endpoint) { '/usage_data/track_event' } - context 'with usage ping enabled' do + before do + stub_application_setting(usage_ping_enabled: true, use_clickhouse_for_analytics: true) + end + + context 'with AI related metric' do + let_it_be(:additional_properties) do + { + language: 'ruby', + timestamp: '2024-01-01', + unrelated_info: 'bar' + } + end + + let(:event_name) { 'code_suggestion_shown_in_ide' } + before do - stub_application_setting(usage_ping_enabled: true) + stub_feature_flags(track_ai_metrics_in_usage_data: true) end - context 'with AI related metric' do - let_it_be(:additional_properties) do - { - language: 'ruby', - timestamp: '2024-01-01', - unrelated_info: 'bar' - } - end + it 'triggers AI tracking' do + expect(Gitlab::Tracking::AiTracking).to receive(:track_event) + .with( + event_name, + additional_properties.merge(user: user) + ).and_call_original - let(:event_name) { 'code_suggestion_shown_in_ide' } + post api(endpoint, user), params: { + event: event_name, + additional_properties: additional_properties + } + expect(response).to have_gitlab_http_status(:ok) + end + + context 'with transition approach' do before do - stub_feature_flags(track_ai_metrics_in_usage_data: true) + allow(Gitlab::Tracking::AiTracking) + .to receive(:track_via_code_suggestions?).with(event_name, anything).and_return(true) end - it 'triggers AI tracking' do - expect(Gitlab::Tracking::AiTracking).to receive(:track_event) - .with( - event_name, - additional_properties.merge(user: user) - ).and_call_original + it 'does not trigger AI tracking' do + expect(Gitlab::Tracking::AiTracking).not_to receive(:track_event) post api(endpoint, user), params: { event: event_name, @@ -42,24 +58,6 @@ expect(response).to have_gitlab_http_status(:ok) end - - context 'with transition approach' do - before do - allow(Gitlab::Tracking::AiTracking) - .to receive(:track_via_code_suggestions?).with(event_name, anything).and_return(true) - end - - it 'does not trigger AI tracking' do - expect(Gitlab::Tracking::AiTracking).not_to receive(:track_event) - - post api(endpoint, user), params: { - event: event_name, - additional_properties: additional_properties - } - - expect(response).to have_gitlab_http_status(:ok) - end - end end end end