Commit 24b23ad8 authored by Adam Hegyi's avatar Adam Hegyi

Pass int when getting I18n VSA stage summary title

parent c4bff0ef
---
title: Fix Value Stream Analytics summary when using non-english locale
merge_request: 33717
author:
type: fixed
...@@ -9,7 +9,7 @@ module Gitlab ...@@ -9,7 +9,7 @@ module Gitlab
include Gitlab::CycleAnalytics::GroupProjectsProvider include Gitlab::CycleAnalytics::GroupProjectsProvider
def title def title
n_('Deploy', 'Deploys', value) n_('Deploy', 'Deploys', value.to_i)
end end
def value def value
......
...@@ -15,7 +15,7 @@ module Gitlab ...@@ -15,7 +15,7 @@ module Gitlab
end end
def title def title
n_('New Issue', 'New Issues', value) n_('New Issue', 'New Issues', value.to_i)
end end
def value def value
......
...@@ -23,6 +23,12 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::Summary::Group::StageSummary d ...@@ -23,6 +23,12 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::Summary::Group::StageSummary d
expect(subject.first[:value]).to eq('2') expect(subject.first[:value]).to eq('2')
end end
it 'returns the localized title' do
Gitlab::I18n.with_locale(:ru) do
expect(subject.first[:title]).to eq(n_('New Issue', 'New Issues', 2))
end
end
context 'with subgroups' do context 'with subgroups' do
before do before do
Timecop.freeze(5.days.from_now) { create(:issue, project: create(:project, namespace: create(:group, parent: group))) } Timecop.freeze(5.days.from_now) { create(:issue, project: create(:project, namespace: create(:group, parent: group))) }
...@@ -80,6 +86,12 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::Summary::Group::StageSummary d ...@@ -80,6 +86,12 @@ RSpec.describe Gitlab::Analytics::CycleAnalytics::Summary::Group::StageSummary d
expect(subject.second[:value]).to eq('2') expect(subject.second[:value]).to eq('2')
end end
it 'returns the localized title' do
Gitlab::I18n.with_locale(:ru) do
expect(subject.second[:title]).to eq(n_('Deploy', 'Deploys', 2))
end
end
context 'with subgroups' do context 'with subgroups' do
before do before do
Timecop.freeze(5.days.from_now) do Timecop.freeze(5.days.from_now) do
......
...@@ -5,7 +5,7 @@ module Gitlab ...@@ -5,7 +5,7 @@ module Gitlab
module Summary module Summary
class Commit < Base class Commit < Base
def title def title
n_('Commit', 'Commits', value) n_('Commit', 'Commits', value.to_i)
end end
def value def value
......
...@@ -5,7 +5,7 @@ module Gitlab ...@@ -5,7 +5,7 @@ module Gitlab
module Summary module Summary
class Deploy < Base class Deploy < Base
def title def title
n_('Deploy', 'Deploys', value) n_('Deploy', 'Deploys', value.to_i)
end end
def value def value
......
...@@ -12,7 +12,7 @@ module Gitlab ...@@ -12,7 +12,7 @@ module Gitlab
end end
def title def title
n_('New Issue', 'New Issues', value) n_('New Issue', 'New Issues', value.to_i)
end end
def value def value
......
...@@ -15,6 +15,14 @@ module Gitlab ...@@ -15,6 +15,14 @@ module Gitlab
end end
class None < self class None < self
def raw_value
0
end
def to_i
raw_value
end
def to_s def to_s
'-' '-'
end end
...@@ -28,6 +36,10 @@ module Gitlab ...@@ -28,6 +36,10 @@ module Gitlab
def to_s def to_s
value.zero? ? '0' : value.to_s value.zero? ? '0' : value.to_s
end end
def to_i
raw_value
end
end end
class PrettyNumeric < Numeric class PrettyNumeric < Numeric
......
...@@ -14,19 +14,29 @@ describe Gitlab::CycleAnalytics::StageSummary do ...@@ -14,19 +14,29 @@ describe Gitlab::CycleAnalytics::StageSummary do
let(:stage_summary) { described_class.new(project, options).data } let(:stage_summary) { described_class.new(project, options).data }
describe "#new_issues" do describe "#new_issues" do
subject { stage_summary.first[:value] } subject { stage_summary.first }
it "finds the number of issues created after the 'from date'" do context 'when from date is given' do
Timecop.freeze(5.days.ago) { create(:issue, project: project) } before do
Timecop.freeze(5.days.from_now) { create(:issue, project: project) } Timecop.freeze(5.days.ago) { create(:issue, project: project) }
Timecop.freeze(5.days.from_now) { create(:issue, project: project) }
end
expect(subject).to eq('1') it "finds the number of issues created after the 'from date'" do
expect(subject[:value]).to eq('1')
end
it 'returns the localized title' do
Gitlab::I18n.with_locale(:ru) do
expect(subject[:title]).to eq(n_('New Issue', 'New Issues', 1))
end
end
end end
it "doesn't find issues from other projects" do it "doesn't find issues from other projects" do
Timecop.freeze(5.days.from_now) { create(:issue, project: create(:project)) } Timecop.freeze(5.days.from_now) { create(:issue, project: create(:project)) }
expect(subject).to eq('-') expect(subject[:value]).to eq('-')
end end
context 'when `to` parameter is given' do context 'when `to` parameter is given' do
...@@ -38,38 +48,48 @@ describe Gitlab::CycleAnalytics::StageSummary do ...@@ -38,38 +48,48 @@ describe Gitlab::CycleAnalytics::StageSummary do
it "doesn't find any record" do it "doesn't find any record" do
options[:to] = Time.now options[:to] = Time.now
expect(subject).to eq('-') expect(subject[:value]).to eq('-')
end end
it "finds records created between `from` and `to` range" do it "finds records created between `from` and `to` range" do
options[:from] = 10.days.ago options[:from] = 10.days.ago
options[:to] = 10.days.from_now options[:to] = 10.days.from_now
expect(subject).to eq('2') expect(subject[:value]).to eq('2')
end end
end end
end end
describe "#commits" do describe "#commits" do
subject { stage_summary.second[:value] } subject { stage_summary.second }
context 'when from date is given' do
before do
Timecop.freeze(5.days.ago) { create_commit("Test message", project, user, 'master') }
Timecop.freeze(5.days.from_now) { create_commit("Test message", project, user, 'master') }
end
it "finds the number of commits created after the 'from date'" do it "finds the number of commits created after the 'from date'" do
Timecop.freeze(5.days.ago) { create_commit("Test message", project, user, 'master') } expect(subject[:value]).to eq('1')
Timecop.freeze(5.days.from_now) { create_commit("Test message", project, user, 'master') } end
expect(subject).to eq('1') it 'returns the localized title' do
Gitlab::I18n.with_locale(:ru) do
expect(subject[:title]).to eq(n_('Commit', 'Commits', 1))
end
end
end end
it "doesn't find commits from other projects" do it "doesn't find commits from other projects" do
Timecop.freeze(5.days.from_now) { create_commit("Test message", create(:project, :repository), user, 'master') } Timecop.freeze(5.days.from_now) { create_commit("Test message", create(:project, :repository), user, 'master') }
expect(subject).to eq('-') expect(subject[:value]).to eq('-')
end end
it "finds a large (> 100) number of commits if present" do it "finds a large (> 100) number of commits if present" do
Timecop.freeze(5.days.from_now) { create_commit("Test message", project, user, 'master', count: 100) } Timecop.freeze(5.days.from_now) { create_commit("Test message", project, user, 'master', count: 100) }
expect(subject).to eq('100') expect(subject[:value]).to eq('100')
end end
context 'when `to` parameter is given' do context 'when `to` parameter is given' do
...@@ -81,14 +101,14 @@ describe Gitlab::CycleAnalytics::StageSummary do ...@@ -81,14 +101,14 @@ describe Gitlab::CycleAnalytics::StageSummary do
it "doesn't find any record" do it "doesn't find any record" do
options[:to] = Time.now options[:to] = Time.now
expect(subject).to eq('-') expect(subject[:value]).to eq('-')
end end
it "finds records created between `from` and `to` range" do it "finds records created between `from` and `to` range" do
options[:from] = 10.days.ago options[:from] = 10.days.ago
options[:to] = 10.days.from_now options[:to] = 10.days.from_now
expect(subject).to eq('2') expect(subject[:value]).to eq('2')
end end
end end
...@@ -112,13 +132,23 @@ describe Gitlab::CycleAnalytics::StageSummary do ...@@ -112,13 +132,23 @@ describe Gitlab::CycleAnalytics::StageSummary do
end end
describe "#deploys" do describe "#deploys" do
subject { stage_summary.third[:value] } subject { stage_summary.third }
it "finds the number of deploys made created after the 'from date'" do context 'when from date is given' do
Timecop.freeze(5.days.ago) { create(:deployment, :success, project: project) } before do
Timecop.freeze(5.days.from_now) { create(:deployment, :success, project: project) } Timecop.freeze(5.days.ago) { create(:deployment, :success, project: project) }
Timecop.freeze(5.days.from_now) { create(:deployment, :success, project: project) }
end
it "finds the number of deploys made created after the 'from date'" do
expect(subject[:value]).to eq('1')
end
expect(subject).to eq('1') it 'returns the localized title' do
Gitlab::I18n.with_locale(:ru) do
expect(subject[:title]).to eq(n_('Deploy', 'Deploys', 1))
end
end
end end
it "doesn't find commits from other projects" do it "doesn't find commits from other projects" do
...@@ -126,7 +156,7 @@ describe Gitlab::CycleAnalytics::StageSummary do ...@@ -126,7 +156,7 @@ describe Gitlab::CycleAnalytics::StageSummary do
create(:deployment, :success, project: create(:project, :repository)) create(:deployment, :success, project: create(:project, :repository))
end end
expect(subject).to eq('-') expect(subject[:value]).to eq('-')
end end
context 'when `to` parameter is given' do context 'when `to` parameter is given' do
...@@ -138,14 +168,14 @@ describe Gitlab::CycleAnalytics::StageSummary do ...@@ -138,14 +168,14 @@ describe Gitlab::CycleAnalytics::StageSummary do
it "doesn't find any record" do it "doesn't find any record" do
options[:to] = Time.now options[:to] = Time.now
expect(subject).to eq('-') expect(subject[:value]).to eq('-')
end end
it "finds records created between `from` and `to` range" do it "finds records created between `from` and `to` range" do
options[:from] = 10.days.ago options[:from] = 10.days.ago
options[:to] = 10.days.from_now options[:to] = 10.days.from_now
expect(subject).to eq('2') expect(subject[:value]).to eq('2')
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment