diff options
Diffstat (limited to 'spec/controllers/projects/merge_requests/diffs_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/merge_requests/diffs_controller_spec.rb | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb index f4f0a9f8108..f54a07de853 100644 --- a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb +++ b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb @@ -193,6 +193,29 @@ RSpec.describe Projects::MergeRequests::DiffsController do end end + context "with the :default_merge_ref_for_diffs flag on" do + let(:diffable_merge_ref) { true } + + subject do + go(diff_head: true, + diff_id: merge_request.merge_request_diff.id, + start_sha: merge_request.merge_request_diff.start_commit_sha) + end + + it "correctly generates the right diff between versions" do + MergeRequests::MergeToRefService.new(project, merge_request.author).execute(merge_request) + + expect_next_instance_of(CompareService) do |service| + expect(service).to receive(:execute).with( + project, + merge_request.merge_request_diff.head_commit_sha, + straight: true) + end + + subject + end + end + context 'with diff_head param passed' do before do allow(merge_request).to receive(:diffable_merge_ref?) @@ -378,6 +401,57 @@ RSpec.describe Projects::MergeRequests::DiffsController do expect(response).to have_gitlab_http_status(:ok) end + + it 'tracks mr_diffs event' do + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .to receive(:track_mr_diffs_action) + .with(merge_request: merge_request) + + subject + end + + context 'when DNT is enabled' do + before do + request.headers['DNT'] = '1' + end + + it 'does not track any mr_diffs event' do + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .not_to receive(:track_mr_diffs_action) + + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .not_to receive(:track_mr_diffs_single_file_action) + + subject + end + end + + context 'when user has view_diffs_file_by_file set to false' do + before do + user.update!(view_diffs_file_by_file: false) + end + + it 'does not track single_file_diffs events' do + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .not_to receive(:track_mr_diffs_single_file_action) + + subject + end + end + + context 'when user has view_diffs_file_by_file set to true' do + before do + user.update!(view_diffs_file_by_file: true) + end + + it 'tracks single_file_diffs events' do + expect(Gitlab::UsageDataCounters::MergeRequestActivityUniqueCounter) + .to receive(:track_mr_diffs_single_file_action) + .with(merge_request: merge_request, user: user) + + subject + end + end end def collection_arguments(pagination_data = {}) |