diff options
Diffstat (limited to 'spec/controllers/projects/labels_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/labels_controller_spec.rb | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/spec/controllers/projects/labels_controller_spec.rb b/spec/controllers/projects/labels_controller_spec.rb index f452c22a5ca..081927ea73c 100644 --- a/spec/controllers/projects/labels_controller_spec.rb +++ b/spec/controllers/projects/labels_controller_spec.rb @@ -65,7 +65,7 @@ RSpec.describe Projects::LabelsController do end it 'does not include group labels when project does not belong to a group' do - project.update(namespace: create(:namespace)) + project.update!(namespace: create(:namespace)) list_labels @@ -93,6 +93,26 @@ RSpec.describe Projects::LabelsController do end end + context 'with views rendered' do + render_views + + before do + list_labels + end + + it 'avoids N+1 queries' do + control = ActiveRecord::QueryRecorder.new(skip_cached: false) { list_labels } + + create_list(:label, 3, project: project) + create_list(:group_label, 3, group: group) + + # some n+1 queries still exist + # calls to get max project authorization access level + expect { list_labels }.not_to exceed_all_query_limit(control.count).with_threshold(25) + expect(assigns(:labels).count).to eq(10) + end + end + def list_labels get :index, params: { namespace_id: project.namespace.to_param, project_id: project } end @@ -221,7 +241,7 @@ RSpec.describe Projects::LabelsController do end context 'when requesting a redirected path' do - let_it_be(:redirect_route) { project.redirect_routes.create(path: project.full_path + 'old') } + let_it_be(:redirect_route) { project.redirect_routes.create!(path: project.full_path + 'old') } it 'redirects to the canonical path' do get :index, params: { namespace_id: project.namespace, project_id: project.to_param + 'old' } @@ -267,7 +287,7 @@ RSpec.describe Projects::LabelsController do end context 'when requesting a redirected path' do - let_it_be(:redirect_route) { project.redirect_routes.create(path: project.full_path + 'old') } + let_it_be(:redirect_route) { project.redirect_routes.create!(path: project.full_path + 'old') } it 'returns not found' do post :generate, params: { namespace_id: project.namespace, project_id: project.to_param + 'old' } |