diff options
Diffstat (limited to 'spec/services/projects/prometheus/alerts/create_service_spec.rb')
-rw-r--r-- | spec/services/projects/prometheus/alerts/create_service_spec.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/spec/services/projects/prometheus/alerts/create_service_spec.rb b/spec/services/projects/prometheus/alerts/create_service_spec.rb new file mode 100644 index 00000000000..50c776df734 --- /dev/null +++ b/spec/services/projects/prometheus/alerts/create_service_spec.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Projects::Prometheus::Alerts::CreateService do + let_it_be(:project) { create(:project) } + let_it_be(:user) { create(:user) } + + let(:service) { described_class.new(project, user, params) } + + subject { service.execute } + + describe '#execute' do + context 'with params' do + let_it_be(:environment) { create(:environment, project: project) } + + let_it_be(:metric) do + create(:prometheus_metric, project: project) + end + + let(:params) do + { + environment_id: environment.id, + prometheus_metric_id: metric.id, + operator: '<', + threshold: 1.0 + } + end + + it 'creates an alert' do + expect(subject).to be_persisted + + expect(subject).to have_attributes( + project: project, + environment: environment, + prometheus_metric: metric, + operator: 'lt', + threshold: 1.0 + ) + end + end + + context 'without params' do + let(:params) { {} } + + it 'fails to create' do + expect(subject).to be_new_record + expect(subject).to be_invalid + end + end + end +end |