Merge branch 'fix/cycle-analytics-no-data' into 'master'
Adds a flag to reflect whether or not there is data in cycle analytics See merge request !7622
This commit is contained in:
commit
06cf647c9b
|
@ -8,6 +8,10 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
|
|||
def show
|
||||
@cycle_analytics = ::CycleAnalytics.new(@project, from: start_date(cycle_analytics_params))
|
||||
|
||||
stats_values, cycle_analytics_json = generate_cycle_analytics_data
|
||||
|
||||
@cycle_analytics_no_data = stats_values.blank?
|
||||
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.json { render json: cycle_analytics_json }
|
||||
|
@ -22,7 +26,9 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
|
|||
{ start_date: params[:cycle_analytics][:start_date] }
|
||||
end
|
||||
|
||||
def cycle_analytics_json
|
||||
def generate_cycle_analytics_data
|
||||
stats_values = []
|
||||
|
||||
cycle_analytics_view_data = [[:issue, "Issue", "Time before an issue gets scheduled"],
|
||||
[:plan, "Plan", "Time before an issue starts implementation"],
|
||||
[:code, "Code", "Time until first merge request"],
|
||||
|
@ -34,11 +40,14 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
|
|||
stats = cycle_analytics_view_data.reduce([]) do |stats, (stage_method, stage_text, stage_description)|
|
||||
value = @cycle_analytics.send(stage_method).presence
|
||||
|
||||
stats_values << value.abs if value
|
||||
|
||||
stats << {
|
||||
title: stage_text,
|
||||
description: stage_description,
|
||||
value: value && !value.zero? ? distance_of_time_in_words(value) : nil
|
||||
}
|
||||
|
||||
stats
|
||||
end
|
||||
|
||||
|
@ -52,10 +61,11 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
|
|||
{ title: "Deploy".pluralize(deploys), value: deploys }
|
||||
]
|
||||
|
||||
{
|
||||
summary: summary,
|
||||
cycle_analytics_hash = { summary: summary,
|
||||
stats: stats,
|
||||
permissions: @cycle_analytics.permissions(user: current_user)
|
||||
}
|
||||
|
||||
[stats_values, cycle_analytics_hash]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Projects::CycleAnalyticsController do
|
||||
let(:project) { create(:project) }
|
||||
let(:user) { create(:user) }
|
||||
|
||||
before do
|
||||
sign_in(user)
|
||||
project.team << [user, :master]
|
||||
end
|
||||
|
||||
describe 'cycle analytics not set up flag' do
|
||||
context 'with no data' do
|
||||
it 'is true' do
|
||||
get(:show,
|
||||
namespace_id: project.namespace.to_param,
|
||||
project_id: project.to_param)
|
||||
|
||||
expect(response).to be_success
|
||||
expect(assigns(:cycle_analytics_no_data)).to eq(true)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with data' do
|
||||
before do
|
||||
issue = create(:issue, project: project, created_at: 4.days.ago)
|
||||
milestone = create(:milestone, project: project, created_at: 5.days.ago)
|
||||
issue.update(milestone: milestone)
|
||||
|
||||
create_merge_request_closing_issue(issue)
|
||||
end
|
||||
|
||||
it 'is false' do
|
||||
get(:show,
|
||||
namespace_id: project.namespace.to_param,
|
||||
project_id: project.to_param)
|
||||
|
||||
expect(response).to be_success
|
||||
expect(assigns(:cycle_analytics_no_data)).to eq(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue