summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Hegyi <ahegyi@gitlab.com>2019-08-23 08:13:46 +0200
committerAdam Hegyi <ahegyi@gitlab.com>2019-08-23 11:59:34 +0200
commit6f1664ff8e206b94fd010648f2cc5e62fb630b36 (patch)
tree4f6ff9cabe98897e15d8965a5f0bd59ddae91991
parent46dffc3f4a72399c708ceca09ab1f1bd46c72b9d (diff)
downloadgitlab-ce-new-cycle-analytics-backend-stage-events.tar.gz
- Add comment for DefaultStages - Test StageEvent interface
-rw-r--r--lib/gitlab/analytics/cycle_analytics/default_stages.rb14
-rw-r--r--lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end.rb2
-rw-r--r--lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb8
-rw-r--r--spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb10
4 files changed, 29 insertions, 5 deletions
diff --git a/lib/gitlab/analytics/cycle_analytics/default_stages.rb b/lib/gitlab/analytics/cycle_analytics/default_stages.rb
index 7a26c7ba680..286c393005f 100644
--- a/lib/gitlab/analytics/cycle_analytics/default_stages.rb
+++ b/lib/gitlab/analytics/cycle_analytics/default_stages.rb
@@ -1,6 +1,12 @@
# frozen_string_literal: true
# This module represents the default Cycle Analytics stages that are currently provided by CE
+# Each method returns a hash that can be used to build a new stage object.
+#
+# Example:
+#
+# params = Gitlab::Analytics::CycleAnalytics::DefaultStages.params_for_issue_stage
+# Analytics::CycleAnalytics::ProjectStage.new(params)
module Gitlab
module Analytics
module CycleAnalytics
@@ -20,10 +26,10 @@ module Gitlab
def self.params_for_issue_stage
{
name: 'issue',
- custom: false,
- relative_position: 1,
- start_event_identifier: :issue_created,
- end_event_identifier: :issue_stage_end
+ custom: false, # this stage won't be customizable, we provide it as it is
+ relative_position: 1, # when opening the CycleAnalytics page in CE, this stage will be the first item
+ start_event_identifier: :issue_created, # IssueCreated class is used as start event
+ end_event_identifier: :issue_stage_end # IssueStageEnd class is used as end event
}
end
diff --git a/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end.rb b/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end.rb
index 181c1da3d82..ceb229c552f 100644
--- a/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end.rb
+++ b/lib/gitlab/analytics/cycle_analytics/stage_events/issue_stage_end.rb
@@ -6,7 +6,7 @@ module Gitlab
module StageEvents
class IssueStageEnd < SimpleStageEvent
def self.name
- s_("CycleAnalyticsEvent|Issue first associated with a milestone or issue first added to a board")
+ PlanStageStart.name
end
def self.identifier
diff --git a/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb b/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb
index 76c2259d892..a55eee048c2 100644
--- a/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb
+++ b/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event.rb
@@ -13,6 +13,14 @@ module Gitlab
def self.name
raise NotImplementedError
end
+
+ def self.identifier
+ raise NotImplementedError
+ end
+
+ def object_type
+ raise NotImplementedError
+ end
end
end
end
diff --git a/spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb b/spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb
new file mode 100644
index 00000000000..29f4be76a65
--- /dev/null
+++ b/spec/lib/gitlab/analytics/cycle_analytics/stage_events/stage_event_spec.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::Analytics::CycleAnalytics::StageEvents::StageEvent do
+ it { expect(described_class).to respond_to(:name) }
+ it { expect(described_class).to respond_to(:identifier) }
+
+ it { expect(described_class.new({})).to respond_to(:object_type) }
+end