diff options
Diffstat (limited to 'spec/requests/api/notes_spec.rb')
-rw-r--r-- | spec/requests/api/notes_spec.rb | 50 |
1 files changed, 46 insertions, 4 deletions
diff --git a/spec/requests/api/notes_spec.rb b/spec/requests/api/notes_spec.rb index 6cf978e717e..3fb14eb9d5a 100644 --- a/spec/requests/api/notes_spec.rb +++ b/spec/requests/api/notes_spec.rb @@ -3,8 +3,8 @@ require 'spec_helper' describe API::Notes do - let(:user) { create(:user) } - let!(:project) { create(:project, :public, namespace: user.namespace) } + let!(:user) { create(:user) } + let!(:project) { create(:project, :public) } let(:private_user) { create(:user) } before do @@ -226,14 +226,56 @@ describe API::Notes do let(:note) { merge_request_note } end + let(:request_body) { 'Hi!' } + let(:request_path) { "/projects/#{project.id}/merge_requests/#{merge_request.iid}/notes" } + + subject { post api(request_path, user), params: { body: request_body } } + + context 'a command only note' do + let(:assignee) { create(:user) } + let(:request_body) { "/assign #{assignee.to_reference}" } + + before do + project.add_developer(assignee) + project.add_developer(user) + end + + it 'returns 202 Accepted status' do + subject + + expect(response).to have_gitlab_http_status(:accepted) + end + + it 'does not actually create a new note' do + expect { subject }.not_to change { Note.where(system: false).count } + end + + it 'does however create a system note about the change' do + expect { subject }.to change { Note.system.count }.by(1) + end + + it 'applies the commands' do + expect { subject }.to change { merge_request.reset.assignees } + end + + it 'reports the changes' do + subject + + expect(json_response).to include( + 'commands_changes' => include( + 'assignee_ids' => [Integer] + ), + 'summary' => include("Assigned #{assignee.to_reference}.") + ) + end + end + context 'when the merge request discussion is locked' do before do merge_request.update_attribute(:discussion_locked, true) end context 'when a user is a team member' do - subject { post api("/projects/#{project.id}/merge_requests/#{merge_request.iid}/notes", user), params: { body: 'Hi!' } } - it 'returns 200 status' do subject |