diff options
Diffstat (limited to 'spec/support/shared_examples/lib/gitlab/alert_management/payload.rb')
-rw-r--r-- | spec/support/shared_examples/lib/gitlab/alert_management/payload.rb | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/spec/support/shared_examples/lib/gitlab/alert_management/payload.rb b/spec/support/shared_examples/lib/gitlab/alert_management/payload.rb new file mode 100644 index 00000000000..54b021e8371 --- /dev/null +++ b/spec/support/shared_examples/lib/gitlab/alert_management/payload.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'parsable alert payload field with fallback' do |fallback, *paths| + context 'without payload' do + it { is_expected.to eq(fallback) } + end + + paths.each do |path| + context "with #{path}" do + let(:value) { 'some value' } + + before do + section, name = path.split('/') + raw_payload[section] = name ? { name => value } : value + end + + it { is_expected.to eq(value) } + end + end +end + +RSpec.shared_examples 'parsable alert payload field' do |*paths| + it_behaves_like 'parsable alert payload field with fallback', nil, *paths +end + +RSpec.shared_examples 'subclass has expected api' do + it 'defines all public methods in the base class' do + default_methods = Gitlab::AlertManagement::Payload::Base.public_instance_methods + subclass_methods = described_class.public_instance_methods + missing_methods = subclass_methods - default_methods + + expect(missing_methods).to be_empty + end +end |