diff options
Diffstat (limited to 'spec/services/merge_requests/update_service_spec.rb')
-rw-r--r-- | spec/services/merge_requests/update_service_spec.rb | 79 |
1 files changed, 78 insertions, 1 deletions
diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb index 2e9e6e0870d..99703c7a8ec 100644 --- a/spec/services/merge_requests/update_service_spec.rb +++ b/spec/services/merge_requests/update_service_spec.rb @@ -98,6 +98,84 @@ describe MergeRequests::UpdateService, services: true do end end + context 'todos' do + let!(:pending_todo) { create(:todo, :assigned, user: user, project: project, target: merge_request, author: user2) } + + context 'when the title change' do + before do + update_merge_request({ title: 'New title' }) + end + + it 'marks pending todos as done' do + expect(pending_todo.reload).to be_done + end + end + + context 'when the description change' do + before do + update_merge_request({ description: 'Also please fix' }) + end + + it 'marks pending todos as done' do + expect(pending_todo.reload).to be_done + end + end + + context 'when is reassigned' do + before do + update_merge_request({ assignee: user2 }) + end + + it 'marks previous assignee pending todos as done' do + expect(pending_todo.reload).to be_done + end + + it 'creates a pending todo for new assignee' do + attributes = { + project: project, + author: user, + user: user2, + target_id: merge_request.id, + target_type: merge_request.class.name, + action: Todo::ASSIGNED, + state: :pending + } + + expect(Todo.where(attributes).count).to eq 1 + end + end + + context 'when the milestone change' do + before do + update_merge_request({ milestone: create(:milestone) }) + end + + it 'marks pending todos as done' do + expect(pending_todo.reload).to be_done + end + end + + context 'when the labels change' do + before do + update_merge_request({ label_ids: [label.id] }) + end + + it 'marks pending todos as done' do + expect(pending_todo.reload).to be_done + end + end + + context 'when the target branch change' do + before do + update_merge_request({ target_branch: 'target' }) + end + + it 'marks pending todos as done' do + expect(pending_todo.reload).to be_done + end + end + end + context 'when MergeRequest has tasks' do before { update_merge_request({ description: "- [ ] Task 1\n- [ ] Task 2" }) } @@ -130,6 +208,5 @@ describe MergeRequests::UpdateService, services: true do end end end - end end |