diff options
author | Małgorzata Ksionek <mksionek@gitlab.com> | 2019-07-05 12:15:39 +0200 |
---|---|---|
committer | Małgorzata Ksionek <mksionek@gitlab.com> | 2019-07-10 14:57:59 +0200 |
commit | 04762be29b144cffb51c50a5d8097aaa86c0bee9 (patch) | |
tree | 88896d742365a8c44017565c7bcf8d0dc741d49a | |
parent | 4bedda29e5787687d86db216ff9c18af7bead159 (diff) | |
download | gitlab-ce-04762be29b144cffb51c50a5d8097aaa86c0bee9.tar.gz |
Add group serializer
Fix typo
Fix typo
-rw-r--r-- | app/models/cycle_analytics/group_level.rb | 16 | ||||
-rw-r--r-- | app/serializers/group_analytics_stage_entity.rb | 17 | ||||
-rw-r--r-- | app/serializers/group_analytics_stage_serializer.rb | 5 | ||||
-rw-r--r-- | spec/models/cycle_analytics/group_level_spec.rb | 2 |
4 files changed, 35 insertions, 5 deletions
diff --git a/app/models/cycle_analytics/group_level.rb b/app/models/cycle_analytics/group_level.rb index c48919a61ac..3885ce72206 100644 --- a/app/models/cycle_analytics/group_level.rb +++ b/app/models/cycle_analytics/group_level.rb @@ -2,21 +2,29 @@ module CycleAnalytics class GroupLevel < Base - def initialize(project: nil, projects:, options:) - @projects = projects + def initialize(project: nil, options:) + @project = project @options = options end def summary - @summary ||= ::Gitlab::CycleAnalytics::GroupStageSummary.new(@project, + @summary ||= ::Gitlab::CycleAnalytics::GroupStageSummary.new(@options[:group], from: @options[:from], current_user: @options[:current_user]).data end - def permissions(user:) + def permissions(user: nil) STAGES.each_with_object({}) do |stage, obj| obj[stage] = true end end + + private + + def stats_per_stage + STAGES.map do |stage_name| + self[stage_name].as_json(serializer: GroupAnalyticsStageSerializer) + end + end end end diff --git a/app/serializers/group_analytics_stage_entity.rb b/app/serializers/group_analytics_stage_entity.rb new file mode 100644 index 00000000000..4e649c4f996 --- /dev/null +++ b/app/serializers/group_analytics_stage_entity.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class GroupAnalyticsStageEntity < Grape::Entity + include EntityDateHelper + + expose :title + expose :name + expose :legend + expose :description + + expose :group_median, as: :value do |stage| + # median returns a BatchLoader instance which we first have to unwrap by using to_f + # we use to_f to make sure results below 1 are presented to the end-user + stage.group_median.to_f.nonzero? ? distance_of_time_in_words(stage.group_median) : nil + end +end + diff --git a/app/serializers/group_analytics_stage_serializer.rb b/app/serializers/group_analytics_stage_serializer.rb new file mode 100644 index 00000000000..ec448dea602 --- /dev/null +++ b/app/serializers/group_analytics_stage_serializer.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +class GroupAnalyticsStageSerializer < BaseSerializer + entity GroupAnalyticsStageEntity +end diff --git a/spec/models/cycle_analytics/group_level_spec.rb b/spec/models/cycle_analytics/group_level_spec.rb index 992cf22efcc..4d72c46f93c 100644 --- a/spec/models/cycle_analytics/group_level_spec.rb +++ b/spec/models/cycle_analytics/group_level_spec.rb @@ -40,7 +40,7 @@ describe CycleAnalytics::GroupLevel do end it 'returns medians for each stage for a specific group' do - expect(subject.summary.map { |summary| summary[:value] }).to contain_exactly(1, 0, 1) + expect(subject.summary.map { |summary| summary[:value] }).to contain_exactly(1, 1) end end end |