diff options
Diffstat (limited to 'spec/requests/api/todos_spec.rb')
-rw-r--r-- | spec/requests/api/todos_spec.rb | 72 |
1 files changed, 39 insertions, 33 deletions
diff --git a/spec/requests/api/todos_spec.rb b/spec/requests/api/todos_spec.rb index 7a7712c2f5d..1aa5e21dddb 100644 --- a/spec/requests/api/todos_spec.rb +++ b/spec/requests/api/todos_spec.rb @@ -3,23 +3,23 @@ require 'spec_helper' describe API::Todos do - let(:group) { create(:group) } - let(:project_1) { create(:project, :repository, group: group) } - let(:project_2) { create(:project) } - let(:author_1) { create(:user) } - let(:author_2) { create(:user) } - let(:john_doe) { create(:user, username: 'john_doe') } - let(:merge_request) { create(:merge_request, source_project: project_1) } - let!(:merge_request_todo) { create(:todo, project: project_1, author: author_2, user: john_doe, target: merge_request) } - let!(:pending_1) { create(:todo, :mentioned, project: project_1, author: author_1, user: john_doe) } - let!(:pending_2) { create(:todo, project: project_2, author: author_2, user: john_doe) } - let!(:pending_3) { create(:on_commit_todo, project: project_1, author: author_2, user: john_doe) } - let!(:done) { create(:todo, :done, project: project_1, author: author_1, user: john_doe) } - let!(:award_emoji_1) { create(:award_emoji, awardable: merge_request, user: author_1, name: 'thumbsup') } - let!(:award_emoji_2) { create(:award_emoji, awardable: pending_1.target, user: author_1, name: 'thumbsup') } - let!(:award_emoji_3) { create(:award_emoji, awardable: pending_2.target, user: author_2, name: 'thumbsdown') } - - before do + let_it_be(:group) { create(:group) } + let_it_be(:project_1) { create(:project, :repository, group: group) } + let_it_be(:project_2) { create(:project) } + let_it_be(:author_1) { create(:user) } + let_it_be(:author_2) { create(:user) } + let_it_be(:john_doe) { create(:user, username: 'john_doe') } + let_it_be(:merge_request) { create(:merge_request, source_project: project_1) } + let_it_be(:merge_request_todo) { create(:todo, project: project_1, author: author_2, user: john_doe, target: merge_request) } + let_it_be(:pending_1) { create(:todo, :mentioned, project: project_1, author: author_1, user: john_doe) } + let_it_be(:pending_2) { create(:todo, project: project_2, author: author_2, user: john_doe) } + let_it_be(:pending_3) { create(:on_commit_todo, project: project_1, author: author_2, user: john_doe) } + let_it_be(:done) { create(:todo, :done, project: project_1, author: author_1, user: john_doe) } + let_it_be(:award_emoji_1) { create(:award_emoji, awardable: merge_request, user: author_1, name: 'thumbsup') } + let_it_be(:award_emoji_2) { create(:award_emoji, awardable: pending_1.target, user: author_1, name: 'thumbsup') } + let_it_be(:award_emoji_3) { create(:award_emoji, awardable: pending_2.target, user: author_2, name: 'thumbsdown') } + + before_all do project_1.add_developer(john_doe) project_2.add_developer(john_doe) end @@ -29,7 +29,7 @@ describe API::Todos do it 'returns authentication error' do get api('/todos') - expect(response.status).to eq(401) + expect(response).to have_gitlab_http_status(:unauthorized) end end @@ -37,7 +37,7 @@ describe API::Todos do it 'returns an array of pending todos for current user' do get api('/todos', john_doe) - expect(response.status).to eq(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to include_pagination_headers expect(json_response).to be_an Array expect(json_response.length).to eq(4) @@ -74,7 +74,7 @@ describe API::Todos do it 'filters based on author_id param' do get api('/todos', john_doe), params: { author_id: author_2.id } - expect(response.status).to eq(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to include_pagination_headers expect(json_response).to be_an Array expect(json_response.length).to eq(3) @@ -87,7 +87,7 @@ describe API::Todos do get api('/todos', john_doe), params: { type: 'MergeRequest' } - expect(response.status).to eq(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to include_pagination_headers expect(json_response).to be_an Array expect(json_response.length).to eq(2) @@ -98,7 +98,7 @@ describe API::Todos do it 'filters based on state param' do get api('/todos', john_doe), params: { state: 'done' } - expect(response.status).to eq(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to include_pagination_headers expect(json_response).to be_an Array expect(json_response.length).to eq(1) @@ -109,7 +109,7 @@ describe API::Todos do it 'filters based on project_id param' do get api('/todos', john_doe), params: { project_id: project_2.id } - expect(response.status).to eq(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to include_pagination_headers expect(json_response).to be_an Array expect(json_response.length).to eq(1) @@ -120,7 +120,7 @@ describe API::Todos do it 'filters based on project_id param' do get api('/todos', john_doe), params: { group_id: group.id, sort: :target_id } - expect(response.status).to eq(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to include_pagination_headers expect(json_response).to be_an Array expect(json_response.length).to eq(3) @@ -131,7 +131,7 @@ describe API::Todos do it 'filters based on action param' do get api('/todos', john_doe), params: { action: 'mentioned' } - expect(response.status).to eq(200) + expect(response).to have_gitlab_http_status(:ok) expect(response).to include_pagination_headers expect(json_response).to be_an Array expect(json_response.length).to eq(1) @@ -157,7 +157,7 @@ describe API::Todos do create(:on_commit_todo, project: project_3, author: author_1, user: john_doe) expect { get api('/todos', john_doe) }.not_to exceed_query_limit(control) - expect(response.status).to eq(200) + expect(response).to have_gitlab_http_status(:ok) end end @@ -189,7 +189,7 @@ describe API::Todos do it 'returns 404 if the todo does not belong to the current user' do post api("/todos/#{pending_1.id}/mark_as_done", author_1) - expect(response.status).to eq(404) + expect(response).to have_gitlab_http_status(:not_found) end end end @@ -225,7 +225,7 @@ describe API::Todos do it 'creates a todo on an issuable' do post api("/projects/#{project_1.id}/#{issuable_type}/#{issuable.iid}/todo", john_doe) - expect(response.status).to eq(201) + expect(response).to have_gitlab_http_status(:created) expect(json_response['project']).to be_a Hash expect(json_response['author']).to be_a Hash expect(json_response['target_type']).to eq(issuable.class.name) @@ -242,13 +242,15 @@ describe API::Todos do post api("/projects/#{project_1.id}/#{issuable_type}/#{issuable.iid}/todo", john_doe) - expect(response.status).to eq(304) + expect(response).to have_gitlab_http_status(:not_modified) end it 'returns 404 if the issuable is not found' do - post api("/projects/#{project_1.id}/#{issuable_type}/123/todo", john_doe) + unknown_id = 0 + + post api("/projects/#{project_1.id}/#{issuable_type}/#{unknown_id}/todo", john_doe) - expect(response.status).to eq(404) + expect(response).to have_gitlab_http_status(:not_found) end it 'returns an error if the issuable is not accessible' do @@ -268,13 +270,17 @@ describe API::Todos do describe 'POST :id/issuable_type/:issueable_id/todo' do context 'for an issue' do it_behaves_like 'an issuable', 'issues' do - let(:issuable) { create(:issue, :confidential, author: author_1, project: project_1) } + let_it_be(:issuable) do + create(:issue, :confidential, author: author_1, project: project_1) + end end end context 'for a merge request' do it_behaves_like 'an issuable', 'merge_requests' do - let(:issuable) { create(:merge_request, :simple, source_project: project_1) } + let_it_be(:issuable) do + create(:merge_request, :simple, source_project: project_1) + end end end end |