diff options
author | Felipe Artur <fcardozo@gitlab.com> | 2018-06-21 15:22:40 +0300 |
---|---|---|
committer | Tim Zallmann <tzallmann@gitlab.com> | 2018-06-21 15:22:40 +0300 |
commit | 3e66795ef1ff1228906239763910b051d8afcc37 (patch) | |
tree | df6424d9ec008f5d1da455f8465681b371c4a11e /spec/controllers | |
parent | 14e35ac9b19d358d84e0cfd167f74036937285b6 (diff) |
Changes tab VUE refactoring
Diffstat (limited to 'spec/controllers')
5 files changed, 88 insertions, 40 deletions
diff --git a/spec/controllers/projects/blob_controller_spec.rb b/spec/controllers/projects/blob_controller_spec.rb index 9e696e9cb29..4dcb7dc6c87 100644 --- a/spec/controllers/projects/blob_controller_spec.rb +++ b/spec/controllers/projects/blob_controller_spec.rb @@ -122,10 +122,64 @@ describe Projects::BlobController do end context 'when essential params are present' do - it 'renders the diff content' do - do_get(since: 1, to: 5, offset: 10) + context 'when rendering for commit' do + it 'renders the diff content' do + do_get(since: 1, to: 5, offset: 10) - expect(response.body).to be_present + expect(response.body).to be_present + end + end + + context 'when rendering for merge request' do + it 'renders diff context lines Gitlab::Diff::Line array' do + do_get(since: 1, to: 5, offset: 10, from_merge_request: true) + + lines = JSON.parse(response.body) + + expect(lines.first).to have_key('type') + expect(lines.first).to have_key('rich_text') + expect(lines.first).to have_key('rich_text') + end + + context 'when rendering match lines' do + it 'adds top match line when "since" is less than 1' do + do_get(since: 5, to: 10, offset: 10, from_merge_request: true) + + match_line = JSON.parse(response.body).first + + expect(match_line['type']).to eq('match') + expect(match_line['meta_data']).to have_key('old_pos') + expect(match_line['meta_data']).to have_key('new_pos') + end + + it 'does not add top match line when when "since" is equal 1' do + do_get(since: 1, to: 10, offset: 10, from_merge_request: true) + + match_line = JSON.parse(response.body).first + + expect(match_line['type']).to eq('context') + end + + it 'adds bottom match line when "t"o is less than blob size' do + do_get(since: 1, to: 5, offset: 10, from_merge_request: true, bottom: true) + + match_line = JSON.parse(response.body).last + + expect(match_line['type']).to eq('match') + expect(match_line['meta_data']).to have_key('old_pos') + expect(match_line['meta_data']).to have_key('new_pos') + end + + it 'does not add bottom match line when "to" is less than blob size' do + commit_id = project.repository.commit('master').id + blob = project.repository.blob_at(commit_id, 'CHANGELOG') + do_get(since: 1, to: blob.lines.count, offset: 10, from_merge_request: true, bottom: true) + + match_line = JSON.parse(response.body).last + + expect(match_line['type']).to eq('context') + end + end end end end diff --git a/spec/controllers/projects/discussions_controller_spec.rb b/spec/controllers/projects/discussions_controller_spec.rb index 53647749a60..4aa33dbbb01 100644 --- a/spec/controllers/projects/discussions_controller_spec.rb +++ b/spec/controllers/projects/discussions_controller_spec.rb @@ -110,7 +110,7 @@ describe Projects::DiscussionsController do it "returns the name of the resolving user" do post :resolve, request_params - expect(JSON.parse(response.body)["resolved_by"]).to eq(user.name) + expect(JSON.parse(response.body)['resolved_by']['name']).to eq(user.name) end it "returns status 200" do @@ -119,16 +119,21 @@ describe Projects::DiscussionsController do expect(response).to have_gitlab_http_status(200) end - context "when vue_mr_discussions cookie is present" do - before do - allow(controller).to receive(:cookies).and_return(vue_mr_discussions: 'true') - end + it "renders discussion with serializer" do + expect_any_instance_of(DiscussionSerializer).to receive(:represent) + .with(instance_of(Discussion), { context: instance_of(described_class), render_truncated_diff_lines: true }) - it "renders discussion with serializer" do - expect_any_instance_of(DiscussionSerializer).to receive(:represent) - .with(instance_of(Discussion), { context: instance_of(described_class) }) + post :resolve, request_params + end + context 'diff discussion' do + let(:note) { create(:diff_note_on_merge_request, noteable: merge_request, project: project) } + let(:discussion) { note.discussion } + + it "returns truncated diff lines" do post :resolve, request_params + + expect(JSON.parse(response.body)['truncated_diff_lines']).to be_present end end end @@ -187,7 +192,7 @@ describe Projects::DiscussionsController do it "renders discussion with serializer" do expect_any_instance_of(DiscussionSerializer).to receive(:represent) - .with(instance_of(Discussion), { context: instance_of(described_class) }) + .with(instance_of(Discussion), { context: instance_of(described_class), render_truncated_diff_lines: true }) delete :unresolve, request_params end diff --git a/spec/controllers/projects/issues_controller_spec.rb b/spec/controllers/projects/issues_controller_spec.rb index 106611b37c9..3a41f0fc07a 100644 --- a/spec/controllers/projects/issues_controller_spec.rb +++ b/spec/controllers/projects/issues_controller_spec.rb @@ -990,7 +990,7 @@ describe Projects::IssuesController do it 'returns discussion json' do get :discussions, namespace_id: project.namespace, project_id: project, id: issue.iid - expect(json_response.first.keys).to match_array(%w[id reply_id expanded notes diff_discussion individual_note resolvable resolved]) + expect(json_response.first.keys).to match_array(%w[id reply_id expanded notes diff_discussion discussion_path individual_note resolvable resolved resolved_at resolved_by resolved_by_push commit_id for_commit project_id]) end context 'with cross-reference system note', :request_store do diff --git a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb index 5d297c654bf..ec82b35f227 100644 --- a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb +++ b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb @@ -26,12 +26,13 @@ describe Projects::MergeRequests::DiffsController do context 'with default params' do context 'for the same project' do before do - go + allow(controller).to receive(:rendered_for_merge_request?).and_return(true) end - it 'renders the diffs template to a string' do - expect(response).to render_template('projects/merge_requests/diffs/_diffs') - expect(json_response).to have_key('html') + it 'serializes merge request diff collection' do + expect_any_instance_of(DiffsSerializer).to receive(:represent).with(an_instance_of(Gitlab::Diff::FileCollection::MergeRequestDiff), an_instance_of(Hash)) + + go end end @@ -56,17 +57,6 @@ describe Projects::MergeRequests::DiffsController do end end - context 'with ignore_whitespace_change' do - before do - go(w: 1) - end - - it 'renders the diffs template to a string' do - expect(response).to render_template('projects/merge_requests/diffs/_diffs') - expect(json_response).to have_key('html') - end - end - context 'with view' do before do go(view: 'parallel') @@ -105,12 +95,11 @@ describe Projects::MergeRequests::DiffsController do end it 'only renders the diffs for the path given' do - expect(controller).to receive(:render_diff_for_path).and_wrap_original do |meth, diffs| - expect(diffs.diff_files.map(&:new_path)).to contain_exactly(existing_path) - meth.call(diffs) - end - diff_for_path(old_path: existing_path, new_path: existing_path) + + paths = JSON.parse(response.body)["diff_files"].map { |file| file['new_path'] } + + expect(paths).to include(existing_path) end end diff --git a/spec/controllers/projects/notes_controller_spec.rb b/spec/controllers/projects/notes_controller_spec.rb index de132dfaa21..1458113b90c 100644 --- a/spec/controllers/projects/notes_controller_spec.rb +++ b/spec/controllers/projects/notes_controller_spec.rb @@ -51,7 +51,7 @@ describe Projects::NotesController do let(:project) { create(:project, :repository) } let!(:note) { create(:discussion_note_on_merge_request, project: project) } - let(:params) { request_params.merge(target_type: 'merge_request', target_id: note.noteable_id) } + let(:params) { request_params.merge(target_type: 'merge_request', target_id: note.noteable_id, html: true) } it 'responds with the expected attributes' do get :index, params @@ -67,7 +67,7 @@ describe Projects::NotesController do let(:project) { create(:project, :repository) } let!(:note) { create(:diff_note_on_merge_request, project: project) } - let(:params) { request_params.merge(target_type: 'merge_request', target_id: note.noteable_id) } + let(:params) { request_params.merge(target_type: 'merge_request', target_id: note.noteable_id, html: true) } it 'responds with the expected attributes' do get :index, params @@ -86,7 +86,7 @@ describe Projects::NotesController do context 'when displayed on a merge request' do let(:merge_request) { create(:merge_request, source_project: project) } - let(:params) { request_params.merge(target_type: 'merge_request', target_id: merge_request.id) } + let(:params) { request_params.merge(target_type: 'merge_request', target_id: merge_request.id, html: true) } it 'responds with the expected attributes' do get :index, params @@ -99,7 +99,7 @@ describe Projects::NotesController do end context 'when displayed on the commit' do - let(:params) { request_params.merge(target_type: 'commit', target_id: note.commit_id) } + let(:params) { request_params.merge(target_type: 'commit', target_id: note.commit_id, html: true) } it 'responds with the expected attributes' do get :index, params @@ -128,7 +128,7 @@ describe Projects::NotesController do context 'for a regular note' do let!(:note) { create(:note_on_merge_request, project: project) } - let(:params) { request_params.merge(target_type: 'merge_request', target_id: note.noteable_id) } + let(:params) { request_params.merge(target_type: 'merge_request', target_id: note.noteable_id, html: true) } it 'responds with the expected attributes' do get :index, params @@ -293,7 +293,7 @@ describe Projects::NotesController do context 'when a noteable is not found' do it 'returns 404 status' do - request_params[:note][:noteable_id] = 9999 + request_params[:target_id] = 9999 post :create, request_params.merge(format: :json) expect(response).to have_gitlab_http_status(404) @@ -475,7 +475,7 @@ describe Projects::NotesController do end it "returns the name of the resolving user" do - post :resolve, request_params + post :resolve, request_params.merge(html: true) expect(JSON.parse(response.body)["resolved_by"]).to eq(user.name) end |