52 lines
1.8 KiB
Ruby
52 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe DraftNotes::DestroyService, feature_category: :code_review_workflow do
|
|
let(:merge_request) { create(:merge_request) }
|
|
let(:project) { merge_request.target_project }
|
|
let(:user) { merge_request.author }
|
|
|
|
def destroy(draft_note = nil)
|
|
DraftNotes::DestroyService.new(merge_request, user).execute(draft_note)
|
|
end
|
|
|
|
it 'destroys a single draft note' do
|
|
drafts = create_list(:draft_note, 2, merge_request: merge_request, author: user)
|
|
|
|
expect { destroy(drafts.first) }
|
|
.to change { DraftNote.count }.by(-1)
|
|
|
|
expect(DraftNote.count).to eq(1)
|
|
end
|
|
|
|
it 'destroys all draft notes for a user in a merge request' do
|
|
create_list(:draft_note, 2, merge_request: merge_request, author: user)
|
|
|
|
expect { destroy }.to change { DraftNote.count }.by(-2) # rubocop:disable Rails/SaveBang
|
|
expect(DraftNote.count).to eq(0)
|
|
end
|
|
|
|
context 'diff highlight cache clearing' do
|
|
context 'when destroying all draft notes of a user' do
|
|
it 'clears highlighting cache if unfold required for any' do
|
|
drafts = create_list(:draft_note, 2, merge_request: merge_request, author: user)
|
|
|
|
allow_any_instance_of(DraftNote).to receive_message_chain(:diff_file, :unfolded?) { true }
|
|
expect(merge_request).to receive_message_chain(:diffs, :clear_cache)
|
|
|
|
destroy(drafts.first)
|
|
end
|
|
end
|
|
|
|
context 'when destroying one draft note' do
|
|
it 'clears highlighting cache if unfold required' do
|
|
create_list(:draft_note, 2, merge_request: merge_request, author: user)
|
|
|
|
allow_any_instance_of(DraftNote).to receive_message_chain(:diff_file, :unfolded?) { true }
|
|
expect(merge_request).to receive_message_chain(:diffs, :clear_cache)
|
|
|
|
destroy # rubocop:disable Rails/SaveBang
|
|
end
|
|
end
|
|
end
|
|
end
|