99 lines
2.9 KiB
Ruby
99 lines
2.9 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Gitlab::Metrics::Dashboard::Transformers::Yml::V1::PrometheusMetrics do
|
|
include MetricsDashboardHelpers
|
|
|
|
describe '#execute' do
|
|
subject { described_class.new(dashboard_hash) }
|
|
|
|
context 'valid dashboard' do
|
|
let_it_be(:dashboard_hash) do
|
|
{
|
|
panel_groups: [{
|
|
panels: [
|
|
{
|
|
title: 'Panel 1 title',
|
|
y_label: 'Panel 1 y_label',
|
|
metrics: [
|
|
{
|
|
query_range: 'Panel 1 metric 1 query_range',
|
|
unit: 'Panel 1 metric 1 unit',
|
|
label: 'Panel 1 metric 1 label',
|
|
id: 'Panel 1 metric 1 id'
|
|
},
|
|
{
|
|
query: 'Panel 1 metric 2 query',
|
|
unit: 'Panel 1 metric 2 unit',
|
|
label: 'Panel 1 metric 2 label',
|
|
id: 'Panel 1 metric 2 id'
|
|
}
|
|
]
|
|
},
|
|
{
|
|
title: 'Panel 2 title',
|
|
y_label: 'Panel 2 y_label',
|
|
metrics: [{
|
|
query_range: 'Panel 2 metric 1 query_range',
|
|
unit: 'Panel 2 metric 1 unit',
|
|
label: 'Panel 2 metric 1 label',
|
|
id: 'Panel 2 metric 1 id'
|
|
}]
|
|
}
|
|
]
|
|
}]
|
|
}
|
|
end
|
|
|
|
let(:expected_metrics) do
|
|
[
|
|
{
|
|
title: 'Panel 1 title',
|
|
y_label: 'Panel 1 y_label',
|
|
query: "Panel 1 metric 1 query_range",
|
|
unit: 'Panel 1 metric 1 unit',
|
|
legend: 'Panel 1 metric 1 label',
|
|
identifier: 'Panel 1 metric 1 id',
|
|
group: 3,
|
|
common: false
|
|
},
|
|
{
|
|
title: 'Panel 1 title',
|
|
y_label: 'Panel 1 y_label',
|
|
query: 'Panel 1 metric 2 query',
|
|
unit: 'Panel 1 metric 2 unit',
|
|
legend: 'Panel 1 metric 2 label',
|
|
identifier: 'Panel 1 metric 2 id',
|
|
group: 3,
|
|
common: false
|
|
},
|
|
{
|
|
title: 'Panel 2 title',
|
|
y_label: 'Panel 2 y_label',
|
|
query: 'Panel 2 metric 1 query_range',
|
|
unit: 'Panel 2 metric 1 unit',
|
|
legend: 'Panel 2 metric 1 label',
|
|
identifier: 'Panel 2 metric 1 id',
|
|
group: 3,
|
|
common: false
|
|
}
|
|
]
|
|
end
|
|
|
|
it 'returns collection of metrics with correct attributes' do
|
|
expect(subject.execute).to match_array(expected_metrics)
|
|
end
|
|
end
|
|
|
|
context 'invalid dashboard' do
|
|
let(:dashboard_hash) { {} }
|
|
|
|
it 'raises missing attribute error' do
|
|
expect { subject.execute }.to raise_error(
|
|
::Gitlab::Metrics::Dashboard::Transformers::Errors::MissingAttribute, "Missing attribute: 'panel_groups'"
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|