Skip to content
代码片段 群组 项目
未验证 提交 5bbfae02 编辑于 作者: Pavel Shutsin's avatar Pavel Shutsin 提交者: GitLab
浏览文件

Merge branch 'rs-early-access-program-group-toggle' into 'master'

No related branches found
No related tags found
无相关合并请求
# frozen_string_literal: true
class AddEarlyAccessProgramParticipantToNamespaceSettings < Gitlab::Database::Migration[2.2]
milestone '17.1'
def change
add_column :namespace_settings, :early_access_program_participant, :boolean, null: false, default: false
end
end
209ef8ffed9a59acdd813b3feaa259231ec812733e58341dedd0a8b941d8a658
\ No newline at end of file
...@@ -12281,6 +12281,7 @@ CREATE TABLE namespace_settings ( ...@@ -12281,6 +12281,7 @@ CREATE TABLE namespace_settings (
lock_duo_features_enabled boolean DEFAULT false NOT NULL, lock_duo_features_enabled boolean DEFAULT false NOT NULL,
disable_personal_access_tokens boolean DEFAULT false NOT NULL, disable_personal_access_tokens boolean DEFAULT false NOT NULL,
enable_auto_assign_gitlab_duo_pro_seats boolean DEFAULT false NOT NULL, enable_auto_assign_gitlab_duo_pro_seats boolean DEFAULT false NOT NULL,
early_access_program_participant boolean DEFAULT false NOT NULL,
remove_dormant_members boolean DEFAULT false NOT NULL, remove_dormant_members boolean DEFAULT false NOT NULL,
remove_dormant_members_period integer DEFAULT 90 NOT NULL, remove_dormant_members_period integer DEFAULT 90 NOT NULL,
CONSTRAINT check_0ba93c78c7 CHECK ((char_length(default_branch_name) <= 255)), CONSTRAINT check_0ba93c78c7 CHECK ((char_length(default_branch_name) <= 255)),
...@@ -40,7 +40,7 @@ def track_event( ...@@ -40,7 +40,7 @@ def track_event(
send_application_instrumentation_event(event_name, additional_properties, kwargs) if send_snowplow_event send_application_instrumentation_event(event_name, additional_properties, kwargs) if send_snowplow_event
if Feature.enabled?(:early_access_program, kwargs[:user], type: :wip) if Feature.enabled?(:early_access_program, kwargs[:user], type: :wip)
create_early_access_program_event(event_name, category, additional_properties[:label], kwargs[:user]) create_early_access_program_event(event_name, category, additional_properties[:label], kwargs)
end end
rescue StandardError => e rescue StandardError => e
extra = {} extra = {}
...@@ -189,8 +189,9 @@ def send_application_instrumentation_event(event_name, additional_properties, kw ...@@ -189,8 +189,9 @@ def send_application_instrumentation_event(event_name, additional_properties, kw
gitlab_sdk_client.track(event_name, tracked_attributes) gitlab_sdk_client.track(event_name, tracked_attributes)
end end
def create_early_access_program_event(event_name, category, event_label, user) def create_early_access_program_event(event_name, category, event_label, kwargs)
return if user.nil? || !user.user_preference.early_access_event_tracking? user, namespace = kwargs.values_at(:user, :namespace)
return if user.nil? || !namespace&.namespace_settings&.early_access_program_participant?
::EarlyAccessProgram::TrackingEvent.create( ::EarlyAccessProgram::TrackingEvent.create(
user: user, event_name: event_name.to_s, event_label: event_label, category: category user: user, event_name: event_name.to_s, event_label: event_label, category: category
......
...@@ -591,6 +591,16 @@ def validate_service_ping_context(service_ping_context) ...@@ -591,6 +591,16 @@ def validate_service_ping_context(service_ping_context)
end end
context 'with early access program tracking' do context 'with early access program tracking' do
let(:namespace_participating) { false }
let(:namespace) do
settings = create(:namespace_settings, early_access_program_participant: namespace_participating)
create(:namespace, namespace_settings: settings)
end
let(:event_kwargs) do
{ user: user, project: project, send_snowplow_event: send_snowplow_event, namespace: namespace }
end
shared_examples 'does not create early access program tracking event' do shared_examples 'does not create early access program tracking event' do
it do it do
track_event track_event
...@@ -601,7 +611,7 @@ def validate_service_ping_context(service_ping_context) ...@@ -601,7 +611,7 @@ def validate_service_ping_context(service_ping_context)
before do before do
allow(sdk_client).to receive(:track) allow(sdk_client).to receive(:track)
.with(event_name, { project_id: project.id, namespace_id: project.namespace.id }) .with(event_name, { project_id: project&.id, namespace_id: namespace&.id })
end end
context 'when early_access_program FF is enabled' do context 'when early_access_program FF is enabled' do
...@@ -615,25 +625,31 @@ def validate_service_ping_context(service_ping_context) ...@@ -615,25 +625,31 @@ def validate_service_ping_context(service_ping_context)
it_behaves_like 'does not create early access program tracking event' it_behaves_like 'does not create early access program tracking event'
end end
context 'without namespace' do
let(:project) { nil }
let(:namespace) { nil }
it_behaves_like 'does not create early access program tracking event'
end
context 'with user' do context 'with user' do
context 'when user is not early access program participant' do context 'when namespace is not early access program participant' do
it_behaves_like 'does not create early access program tracking event' it_behaves_like 'does not create early access program tracking event'
end end
context 'when user is early access program participant' do context 'when namespace is early access program participant' do
let(:namespace_participating) { true }
let(:event_name) { 'g_edit_by_snippet_ide' } let(:event_name) { 'g_edit_by_snippet_ide' }
let(:additional_properties) { { label: 'label_name' } } let(:additional_properties) { { label: 'label_name' } }
let(:user) { create(:user) } let(:user) { create(:user) }
before do before do
preference_stub = instance_double(UserPreference, early_access_event_tracking?: true)
allow(user).to receive(:user_preference).and_return(preference_stub)
allow(sdk_client).to receive(:track) allow(sdk_client).to receive(:track)
.with( .with(
event_name, event_name,
{ {
project_id: project.id, project_id: project.id,
namespace_id: project.namespace.id, namespace_id: namespace.id,
additional_properties: additional_properties additional_properties: additional_properties
} }
) )
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册