diff options
author | Igor <idrozdov@gitlab.com> | 2019-08-10 00:01:55 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2019-08-10 00:01:55 +0300 |
commit | b99011af62935de0b15e8a314ffb7df1f8a3f303 (patch) | |
tree | f19bc1052fa1cd903a31d6f01489b56ec2bb7ead /spec/controllers | |
parent | 43b9be9d6cf59a02ea86795a1734848615d38a26 (diff) |
Split MR widget into cached and non-cached serializers
Splits auto-refreshing of MR widget into 2 requests:
- the one which uses etag-caching and invalidates the fields on change
- the one without caching
The idea is to gradually move all the fields to etag-cached endpoint
Diffstat (limited to 'spec/controllers')
-rw-r--r-- | spec/controllers/projects/merge_requests/content_controller_spec.rb | 54 |
1 files changed, 39 insertions, 15 deletions
diff --git a/spec/controllers/projects/merge_requests/content_controller_spec.rb b/spec/controllers/projects/merge_requests/content_controller_spec.rb index 2879e06aee4..818cf794ec6 100644 --- a/spec/controllers/projects/merge_requests/content_controller_spec.rb +++ b/spec/controllers/projects/merge_requests/content_controller_spec.rb @@ -11,8 +11,8 @@ describe Projects::MergeRequests::ContentController do sign_in(user) end - def do_request - get :widget, params: { + def do_request(action = :cached_widget) + get action, params: { namespace_id: project.namespace.to_param, project_id: project, id: merge_request.iid, @@ -20,41 +20,65 @@ describe Projects::MergeRequests::ContentController do } end - describe 'GET widget' do - context 'user has access to the project' do - before do - expect(::Gitlab::GitalyClient).to receive(:allow_ref_name_caching).and_call_original + context 'user has access to the project' do + before do + expect(::Gitlab::GitalyClient).to receive(:allow_ref_name_caching).and_call_original - project.add_maintainer(user) - end + project.add_maintainer(user) + end + describe 'GET cached_widget' do it 'renders widget MR entity as json' do do_request - expect(response).to match_response_schema('entities/merge_request_widget') + expect(response).to match_response_schema('entities/merge_request_poll_cached_widget') end + it 'closes an MR with moved source project' do + merge_request.update_column(:source_project_id, nil) + + expect { do_request }.to change { merge_request.reload.open? }.from(true).to(false) + end + end + + describe 'GET widget' do it 'checks whether the MR can be merged' do controller.instance_variable_set(:@merge_request, merge_request) expect(merge_request).to receive(:check_mergeability) - do_request + do_request(:widget) end - it 'closes an MR with moved source project' do - merge_request.update_column(:source_project_id, nil) + context 'merged merge request' do + let(:merge_request) do + create(:merged_merge_request, :with_test_reports, target_project: project, source_project: project) + end - expect { do_request }.to change { merge_request.reload.open? }.from(true).to(false) + it 'renders widget MR entity as json' do + do_request(:widget) + + expect(response).to match_response_schema('entities/merge_request_poll_widget') + end end end + end - context 'user does not have access to the project' do - it 'renders widget MR entity as json' do + context 'user does not have access to the project' do + describe 'GET cached_widget' do + it 'returns 404' do do_request expect(response).to have_http_status(:not_found) end end + + describe 'GET widget' do + it 'returns 404' do + do_request(:widget) + + expect(response).to have_http_status(:not_found) + end + end end end |