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
|
def show
|
||||||
@cycle_analytics = ::CycleAnalytics.new(@project, from: start_date(cycle_analytics_params))
|
@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|
|
respond_to do |format|
|
||||||
format.html
|
format.html
|
||||||
format.json { render json: cycle_analytics_json }
|
format.json { render json: cycle_analytics_json }
|
||||||
|
@ -22,7 +26,9 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
|
||||||
{ start_date: params[:cycle_analytics][:start_date] }
|
{ start_date: params[:cycle_analytics][:start_date] }
|
||||||
end
|
end
|
||||||
|
|
||||||
def cycle_analytics_json
|
def generate_cycle_analytics_data
|
||||||
|
stats_values = []
|
||||||
|
|
||||||
cycle_analytics_view_data = [[:issue, "Issue", "Time before an issue gets scheduled"],
|
cycle_analytics_view_data = [[:issue, "Issue", "Time before an issue gets scheduled"],
|
||||||
[:plan, "Plan", "Time before an issue starts implementation"],
|
[:plan, "Plan", "Time before an issue starts implementation"],
|
||||||
[:code, "Code", "Time until first merge request"],
|
[: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)|
|
stats = cycle_analytics_view_data.reduce([]) do |stats, (stage_method, stage_text, stage_description)|
|
||||||
value = @cycle_analytics.send(stage_method).presence
|
value = @cycle_analytics.send(stage_method).presence
|
||||||
|
|
||||||
|
stats_values << value.abs if value
|
||||||
|
|
||||||
stats << {
|
stats << {
|
||||||
title: stage_text,
|
title: stage_text,
|
||||||
description: stage_description,
|
description: stage_description,
|
||||||
value: value && !value.zero? ? distance_of_time_in_words(value) : nil
|
value: value && !value.zero? ? distance_of_time_in_words(value) : nil
|
||||||
}
|
}
|
||||||
|
|
||||||
stats
|
stats
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -52,10 +61,11 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
|
||||||
{ title: "Deploy".pluralize(deploys), value: deploys }
|
{ title: "Deploy".pluralize(deploys), value: deploys }
|
||||||
]
|
]
|
||||||
|
|
||||||
{
|
cycle_analytics_hash = { summary: summary,
|
||||||
summary: summary,
|
stats: stats,
|
||||||
stats: stats,
|
permissions: @cycle_analytics.permissions(user: current_user)
|
||||||
permissions: @cycle_analytics.permissions(user: current_user)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[stats_values, cycle_analytics_hash]
|
||||||
end
|
end
|
||||||
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