71 lines
2.6 KiB
Ruby
71 lines
2.6 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'spec_helper'
|
||
|
|
||
|
describe Gitlab::GrafanaEmbedUsageData do
|
||
|
describe '#issue_count' do
|
||
|
subject { described_class.issue_count }
|
||
|
|
||
|
let(:project) { create(:project) }
|
||
|
let(:description_with_embed) { "Some comment\n\nhttps://grafana.example.com/d/xvAk4q0Wk/go-processes?orgId=1&from=1573238522762&to=1573240322762&var-job=prometheus&var-interval=10m&panelId=1&fullscreen" }
|
||
|
let(:description_with_unintegrated_embed) { "Some comment\n\nhttps://grafana.exp.com/d/xvAk4q0Wk/go-processes?orgId=1&from=1573238522762&to=1573240322762&var-job=prometheus&var-interval=10m&panelId=1&fullscreen" }
|
||
|
let(:description_with_non_grafana_inline_metric) { "Some comment\n\n#{Gitlab::Routing.url_helpers.metrics_namespace_project_environment_url(*['foo', 'bar', 12])}" }
|
||
|
|
||
|
shared_examples "zero count" do
|
||
|
it "does not count the issue" do
|
||
|
expect(subject).to eq(0)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'with project grafana integration enabled' do
|
||
|
before do
|
||
|
create(:grafana_integration, project: project, enabled: true)
|
||
|
end
|
||
|
|
||
|
context 'with valid and invalid embeds' do
|
||
|
before do
|
||
|
# Valid
|
||
|
create(:issue, project: project, description: description_with_embed)
|
||
|
create(:issue, project: project, description: description_with_embed)
|
||
|
# In-Valid
|
||
|
create(:issue, project: project, description: description_with_unintegrated_embed)
|
||
|
create(:issue, project: project, description: description_with_non_grafana_inline_metric)
|
||
|
create(:issue, project: project, description: nil)
|
||
|
create(:issue, project: project, description: '')
|
||
|
create(:issue, project: project)
|
||
|
end
|
||
|
|
||
|
it 'counts only the issues with embeds' do
|
||
|
expect(subject).to eq(2)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'with project grafana integration disabled' do
|
||
|
before do
|
||
|
create(:grafana_integration, project: project, enabled: false)
|
||
|
end
|
||
|
|
||
|
context 'with one issue having a grafana link in the description and one without' do
|
||
|
before do
|
||
|
create(:issue, project: project, description: description_with_embed)
|
||
|
create(:issue, project: project)
|
||
|
end
|
||
|
|
||
|
it_behaves_like('zero count')
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'with an un-integrated project' do
|
||
|
context 'with one issue having a grafana link in the description and one without' do
|
||
|
before do
|
||
|
create(:issue, project: project, description: description_with_embed)
|
||
|
create(:issue, project: project)
|
||
|
end
|
||
|
|
||
|
it_behaves_like('zero count')
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|