100 lines
2.9 KiB
Ruby
100 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
|