diff options
Diffstat (limited to 'app/models/onboarding/completion.rb')
-rw-r--r-- | app/models/onboarding/completion.rb | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/app/models/onboarding/completion.rb b/app/models/onboarding/completion.rb index 269283df826..afbd671f82e 100644 --- a/app/models/onboarding/completion.rb +++ b/app/models/onboarding/completion.rb @@ -5,66 +5,66 @@ module Onboarding include Gitlab::Utils::StrongMemoize include Gitlab::Experiment::Dsl - ACTION_ISSUE_IDS = { - trial_started: 2, - required_mr_approvals_enabled: 11, - code_owners_enabled: 10 - }.freeze - ACTION_PATHS = [ :pipeline_created, + :trial_started, + :required_mr_approvals_enabled, + :code_owners_enabled, :issue_created, :git_write, :merge_request_created, - :user_added + :user_added, + :license_scanning_run, + :secure_dependency_scanning_run, + :secure_dast_run ].freeze - def initialize(namespace, current_user = nil) - @namespace = namespace + def initialize(project, current_user = nil) + @project = project + @namespace = project.namespace @current_user = current_user end def percentage return 0 unless onboarding_progress - attributes = onboarding_progress.attributes.symbolize_keys - total_actions = action_columns.count - completed_actions = action_columns.count { |column| attributes[column].present? } + completed_actions = action_columns.count { |column| completed?(column) } (completed_actions.to_f / total_actions * 100).round end + def completed?(column) + if column == :code_added + repository.commit_count > 1 || repository.branch_count > 1 + else + attributes[column].present? + end + end + private - def onboarding_progress - strong_memoize(:onboarding_progress) do - ::Onboarding::Progress.find_by(namespace: namespace) - end + def repository + project.repository end + strong_memoize_attr :repository - def action_columns - strong_memoize(:action_columns) do - tracked_actions.map { |action_key| ::Onboarding::Progress.column_name(action_key) } - end + def attributes + onboarding_progress.attributes.symbolize_keys end + strong_memoize_attr :attributes - def tracked_actions - ACTION_ISSUE_IDS.keys + ACTION_PATHS + deploy_section_tracked_actions + def onboarding_progress + ::Onboarding::Progress.find_by(namespace: namespace) end + strong_memoize_attr :onboarding_progress - def deploy_section_tracked_actions - experiment( - :security_actions_continuous_onboarding, - namespace: namespace, - user: current_user, - sticky_to: current_user - ) do |e| - e.control { [:security_scan_enabled] } - e.candidate { [:license_scanning_run, :secure_dependency_scanning_run, :secure_dast_run] } - end.run + def action_columns + [:code_added] + + ACTION_PATHS.map { |action_key| ::Onboarding::Progress.column_name(action_key) } end + strong_memoize_attr :action_columns - attr_reader :namespace, :current_user + attr_reader :project, :namespace, :current_user end end |