Commit 11b6c8c3 authored by Robert Speicher's avatar Robert Speicher Committed by Rémy Coutable

Merge branch 'fix-todos' into 'master'

Does not raise an error when Todo  is already marked as done

Closes #13681

See merge request !2926
parent eabd5cc2
Please view this file on the master branch, on stable branches it's out of date. Please view this file on the master branch, on stable branches it's out of date.
v 8.5.1 v 8.5.1
- Add when the Builds & Runners API changes got introduced
- Fix Side-by-side view after loading diff results
- Fix error 500 on some merged merge requests - Fix error 500 on some merged merge requests
- Fix error 500 when trying to marke an already done todo as "done"
- Fix Side-by-side view after loading diff results
- Fix an issue where MRs weren't sortable
- Fix a set of small UI glitches in project, profile, and wiki pages
- Issues can now be dragged & dropped into empty milestone lists. This is also - Issues can now be dragged & dropped into empty milestone lists. This is also
possible with MRs possible with MRs
- Fix an issue where MRs weren't sortable
- Restrict permissions on public/uploads - Restrict permissions on public/uploads
- Set of small UI fixes to project, profile, and wiki pages - Add when the Builds & Runners API changes got introduced
- Update sentry-raven gem to 0.15.6 - Update sentry-raven gem to 0.15.6
v 8.5.0 v 8.5.0
......
...@@ -15,7 +15,7 @@ class Dashboard::TodosController < Dashboard::ApplicationController ...@@ -15,7 +15,7 @@ class Dashboard::TodosController < Dashboard::ApplicationController
end end
def destroy_all def destroy_all
@todos.each(&:done) @todos.each(&:done!)
respond_to do |format| respond_to do |format|
format.html { redirect_to dashboard_todos_path, notice: 'All todos were marked as done.' } format.html { redirect_to dashboard_todos_path, notice: 'All todos were marked as done.' }
......
...@@ -36,7 +36,7 @@ class Todo < ActiveRecord::Base ...@@ -36,7 +36,7 @@ class Todo < ActiveRecord::Base
state_machine :state, initial: :pending do state_machine :state, initial: :pending do
event :done do event :done do
transition pending: :done transition [:pending, :done] => :done
end end
state :pending state :pending
......
...@@ -37,20 +37,6 @@ describe Todo, models: true do ...@@ -37,20 +37,6 @@ describe Todo, models: true do
it { is_expected.to validate_presence_of(:user) } it { is_expected.to validate_presence_of(:user) }
end end
describe '#action_name' do
it 'returns proper message when action is an assigment' do
subject.action = Todo::ASSIGNED
expect(subject.action_name).to eq 'assigned'
end
it 'returns proper message when action is a mention' do
subject.action = Todo::MENTIONED
expect(subject.action_name).to eq 'mentioned you on'
end
end
describe '#body' do describe '#body' do
before do before do
subject.target = build(:issue, title: 'Bugfix') subject.target = build(:issue, title: 'Bugfix')
...@@ -69,21 +55,15 @@ describe Todo, models: true do ...@@ -69,21 +55,15 @@ describe Todo, models: true do
end end
end end
describe '#target_iid' do describe '#done!' do
let(:issue) { build(:issue, id: 1, iid: 5) } it 'changes state to done' do
todo = create(:todo, state: :pending)
before do expect { todo.done! }.to change(todo, :state).from('pending').to('done')
subject.target = issue
end
it 'returns target.iid when target respond to iid' do
expect(subject.target_iid).to eq 5
end end
it 'returns target_id when target does not respond to iid' do it 'does not raise error when is already done' do
allow(issue).to receive(:respond_to?).with(:iid).and_return(false) todo = create(:todo, state: :done)
expect { todo.done! }.not_to raise_error
expect(subject.target_iid).to eq 1
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment