summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Mountney <david@twkie.net>2016-05-25 18:52:10 -0700
committerDJ Mountney <david@twkie.net>2016-06-02 11:24:18 -0700
commitc3e923c496b7d1c344a5fa68cef4a80ce23c90d0 (patch)
tree3f1030851f5aeec9184afffefe0e0eb170de9998
parentab75b21c83a80d144716e63aa8731092af3eb0cc (diff)
downloadgitlab-ce-c3e923c496b7d1c344a5fa68cef4a80ce23c90d0.tar.gz
Ensure we don't show TODOS for projects pending delete
By joining the Todos on the project table.
-rw-r--r--app/finders/todos_finder.rb2
-rw-r--r--spec/features/todos/todos_spec.rb13
2 files changed, 14 insertions, 1 deletions
diff --git a/app/finders/todos_finder.rb b/app/finders/todos_finder.rb
index 4bd46a76087..f638b5bf91f 100644
--- a/app/finders/todos_finder.rb
+++ b/app/finders/todos_finder.rb
@@ -23,7 +23,7 @@ class TodosFinder
end
def execute
- items = current_user.todos
+ items = current_user.todos.joins(:project).where(projects: { pending_delete: false })
items = by_action_id(items)
items = by_author(items)
items = by_project(items)
diff --git a/spec/features/todos/todos_spec.rb b/spec/features/todos/todos_spec.rb
index 4e627753cc7..c8c86a3ff47 100644
--- a/spec/features/todos/todos_spec.rb
+++ b/spec/features/todos/todos_spec.rb
@@ -98,5 +98,18 @@ describe 'Dashboard Todos', feature: true do
end
end
end
+
+ context 'User has a Todo in a project pending deletion' do
+ before do
+ deleted_project = create(:project, pending_delete: true)
+ create(:todo, :mentioned, user: user, project: deleted_project, target: issue, author: author)
+ login_as(user)
+ visit dashboard_todos_path
+ end
+
+ it 'shows "All done" message' do
+ expect(page).to have_content "You're all done!"
+ end
+ end
end
end