diff options
Diffstat (limited to 'spec/support/shared_examples/services/snippets_shared_examples.rb')
-rw-r--r-- | spec/support/shared_examples/services/snippets_shared_examples.rb | 68 |
1 files changed, 41 insertions, 27 deletions
diff --git a/spec/support/shared_examples/services/snippets_shared_examples.rb b/spec/support/shared_examples/services/snippets_shared_examples.rb index 4a08c0d4365..10add3a7299 100644 --- a/spec/support/shared_examples/services/snippets_shared_examples.rb +++ b/spec/support/shared_examples/services/snippets_shared_examples.rb @@ -1,42 +1,56 @@ # frozen_string_literal: true -RSpec.shared_examples 'snippets spam check is performed' do - shared_examples 'marked as spam' do - it 'marks a snippet as spam' do - expect(snippet).to be_spam - end +RSpec.shared_examples 'checking spam' do + let(:request) { double(:request) } + let(:api) { true } + let(:captcha_response) { 'abc123' } + let(:spam_log_id) { 1 } + let(:disable_spam_action_service) { false } - it 'invalidates the snippet' do - expect(snippet).to be_invalid - end + let(:extra_opts) do + { + request: request, + api: api, + captcha_response: captcha_response, + spam_log_id: spam_log_id, + disable_spam_action_service: disable_spam_action_service + } + end - it 'creates a new spam_log' do - expect { snippet } - .to have_spam_log(title: snippet.title, noteable_type: snippet.class.name) + before do + allow_next_instance_of(UserAgentDetailService) do |instance| + allow(instance).to receive(:create) end + end - it 'assigns a spam_log to an issue' do - expect(snippet.spam_log).to eq(SpamLog.last) + it 'executes SpamActionService' do + spam_params = Spam::SpamParams.new( + api: api, + captcha_response: captcha_response, + spam_log_id: spam_log_id + ) + expect_next_instance_of( + Spam::SpamActionService, + { + spammable: kind_of(Snippet), + request: request, + user: an_instance_of(User), + action: action + } + ) do |instance| + expect(instance).to receive(:execute).with(spam_params: spam_params) end - end - let(:extra_opts) do - { visibility_level: Gitlab::VisibilityLevel::PUBLIC, request: double(:request, env: {}) } + subject end - before do - expect_next_instance_of(Spam::AkismetService) do |akismet_service| - expect(akismet_service).to receive_messages(spam?: true) - end - end + context 'when spam action service is disabled' do + let(:disable_spam_action_service) { true } - [true, false, nil].each do |allow_possible_spam| - context "when allow_possible_spam flag is #{allow_possible_spam.inspect}" do - before do - stub_feature_flags(allow_possible_spam: allow_possible_spam) unless allow_possible_spam.nil? - end + it 'request parameter is not passed to the service' do + expect(Spam::SpamActionService).not_to receive(:new) - it_behaves_like 'marked as spam' + subject end end end |