diff options
Diffstat (limited to 'spec/support/shared_examples/analytics/cycle_analytics/flow_metrics_examples.rb')
-rw-r--r-- | spec/support/shared_examples/analytics/cycle_analytics/flow_metrics_examples.rb | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/spec/support/shared_examples/analytics/cycle_analytics/flow_metrics_examples.rb b/spec/support/shared_examples/analytics/cycle_analytics/flow_metrics_examples.rb index 046036c40ba..fa78ddf206a 100644 --- a/spec/support/shared_examples/analytics/cycle_analytics/flow_metrics_examples.rb +++ b/spec/support/shared_examples/analytics/cycle_analytics/flow_metrics_examples.rb @@ -122,3 +122,84 @@ RSpec.shared_examples 'value stream analytics flow metrics issueCount examples' end end end + +RSpec.shared_examples 'value stream analytics flow metrics deploymentCount examples' do + let_it_be(:deployment1) do + create(:deployment, :success, environment: production_environment1, finished_at: 5.days.ago) + end + + let_it_be(:deployment2) do + create(:deployment, :success, environment: production_environment2, finished_at: 10.days.ago) + end + + let_it_be(:deployment3) do + create(:deployment, :success, environment: production_environment2, finished_at: 15.days.ago) + end + + let(:variables) do + { + path: full_path, + from: 12.days.ago.iso8601, + to: 3.days.ago.iso8601 + } + end + + let(:query) do + <<~QUERY + query($path: ID!, $from: Time!, $to: Time!) { + #{context}(fullPath: $path) { + flowMetrics { + deploymentCount(from: $from, to: $to) { + value + unit + identifier + title + } + } + } + } + QUERY + end + + subject(:result) do + post_graphql(query, current_user: current_user, variables: variables) + + graphql_data.dig(context.to_s, 'flowMetrics', 'deploymentCount') + end + + it 'returns the correct count' do + expect(result).to eq({ + 'identifier' => 'deploys', + 'unit' => nil, + 'value' => 2, + 'title' => n_('Deploy', 'Deploys', 2) + }) + end + + context 'when the user is not authorized' do + let(:current_user) { create(:user) } + + it 'returns nil' do + expect(result).to eq(nil) + end + end + + context 'when outside of the date range' do + let(:variables) do + { + path: full_path, + from: 20.days.ago.iso8601, + to: 18.days.ago.iso8601 + } + end + + it 'returns 0 count' do + expect(result).to eq({ + 'identifier' => 'deploys', + 'unit' => nil, + 'value' => 0, + 'title' => n_('Deploy', 'Deploys', 0) + }) + end + end +end |