diff options
Diffstat (limited to 'spec/requests/api/todos_spec.rb')
-rw-r--r-- | spec/requests/api/todos_spec.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/requests/api/todos_spec.rb b/spec/requests/api/todos_spec.rb index 1aa5e21dddb..0bdc71a30e9 100644 --- a/spec/requests/api/todos_spec.rb +++ b/spec/requests/api/todos_spec.rb @@ -159,6 +159,46 @@ describe API::Todos do expect { get api('/todos', john_doe) }.not_to exceed_query_limit(control) expect(response).to have_gitlab_http_status(:ok) end + + context 'when there is a Design Todo' do + let!(:design_todo) { create_todo_for_mentioned_in_design } + + def create_todo_for_mentioned_in_design + issue = create(:issue, project: project_1) + create(:todo, :mentioned, + user: john_doe, + project: project_1, + target: create(:design, issue: issue), + author: create(:user), + note: create(:note, project: project_1, note: "I am note, hear me roar")) + end + + def api_request + get api('/todos', john_doe) + end + + before do + api_request + end + + specify do + expect(response).to have_gitlab_http_status(:ok) + end + + it 'avoids N+1 queries', :request_store do + control = ActiveRecord::QueryRecorder.new { api_request } + + create_todo_for_mentioned_in_design + + expect { api_request }.not_to exceed_query_limit(control) + end + + it 'includes the Design Todo in the response' do + expect(json_response).to include( + a_hash_including('id' => design_todo.id) + ) + end + end end describe 'POST /todos/:id/mark_as_done' do @@ -235,6 +275,7 @@ describe API::Todos do expect(json_response['state']).to eq('pending') expect(json_response['action_name']).to eq('marked') expect(json_response['created_at']).to be_present + expect(json_response['updated_at']).to be_present end it 'returns 304 there already exist a todo on that issuable' do |