New TodoService#todo_exists? method

Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
Rémy Coutable 2016-08-11 19:00:06 +02:00
parent 42e30a5012
commit aadc5062eb
4 changed files with 19 additions and 3 deletions

View file

@ -140,7 +140,7 @@ module SlashCommands
condition do
noteable.persisted? &&
current_user &&
!TodosFinder.new(current_user).execute.exists?(target: noteable)
!TodoService.new.todo_exist?(noteable, current_user)
end
command :todo do
@updates[:todo_event] = 'add'
@ -149,7 +149,7 @@ module SlashCommands
desc 'Mark todo as done'
condition do
current_user &&
TodosFinder.new(current_user).execute.exists?(target: noteable)
TodoService.new.todo_exist?(noteable, current_user)
end
command :done do
@updates[:todo_event] = 'done'

View file

@ -154,6 +154,10 @@ class TodoService
create_todos(current_user, attributes)
end
def todo_exist?(issuable, current_user)
TodosFinder.new(current_user).execute.exists?(target: issuable)
end
private
def create_todos(users, attributes)

View file

@ -51,7 +51,7 @@ describe Gitlab::SlashCommands::Dsl do
{ name: :one_arg, aliases: [:once, :first], description: '', params: ['The first argument'], noop: false, cond_block: nil },
{ name: :two_args, aliases: [], description: '', params: ['The first argument', 'The second argument'], noop: false, cond_block: nil },
{ name: :cc, aliases: [], description: '', params: [], noop: true, cond_block: nil },
{ name: :wildcard, aliases: [], description: '', params: [], noop: false, cond_block: nil}
{ name: :wildcard, aliases: [], description: '', params: [], noop: false, cond_block: nil }
]
end

View file

@ -290,6 +290,18 @@ describe TodoService, services: true do
should_create_todo(user: author, target: unassigned_issue, action: Todo::MARKED)
end
end
describe '#todo_exists?' do
it 'returns false when no todo exist for the given issuable' do
expect(service.todo_exist?(unassigned_issue, author)).to be_falsy
end
it 'returns true when a todo exist for the given issuable' do
service.mark_todo(unassigned_issue, author)
expect(service.todo_exist?(unassigned_issue, author)).to be_truthy
end
end
end
describe 'Merge Requests' do