summaryrefslogtreecommitdiff
path: root/spec/controllers/dashboard
diff options
context:
space:
mode:
authorMarkus Koller <mkoller@gitlab.com>2019-09-03 19:45:00 +0200
committerMarkus Koller <mkoller@gitlab.com>2019-09-10 15:24:29 +0200
commitf1926b321deb8b922dead991fb4d8bea42699f9f (patch)
tree7dfb7b613152cc6282b1f169e781f11f736de36a /spec/controllers/dashboard
parent60755fbc406bd25ab526339899f97a2b27aeb272 (diff)
downloadgitlab-ce-f1926b321deb8b922dead991fb4d8bea42699f9f.tar.gz
Add controller concern for paginated collections65988-optimize-snippet-listings
We had similar code in a few places to redirect to the last page if the given page number is out of range. This unifies the handling in a new controller concern and adds usage of it in all snippet listings.
Diffstat (limited to 'spec/controllers/dashboard')
-rw-r--r--spec/controllers/dashboard/snippets_controller_spec.rb21
-rw-r--r--spec/controllers/dashboard/todos_controller_spec.rb24
2 files changed, 23 insertions, 22 deletions
diff --git a/spec/controllers/dashboard/snippets_controller_spec.rb b/spec/controllers/dashboard/snippets_controller_spec.rb
new file mode 100644
index 00000000000..2d839094d34
--- /dev/null
+++ b/spec/controllers/dashboard/snippets_controller_spec.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Dashboard::SnippetsController do
+ let(:user) { create(:user) }
+
+ before do
+ sign_in(user)
+ end
+
+ describe 'GET #index' do
+ it_behaves_like 'paginated collection' do
+ let(:collection) { Snippet.all }
+
+ before do
+ create(:personal_snippet, :public, author: user)
+ end
+ end
+ end
+end
diff --git a/spec/controllers/dashboard/todos_controller_spec.rb b/spec/controllers/dashboard/todos_controller_spec.rb
index 9a3fbfaac51..c5af04f72ee 100644
--- a/spec/controllers/dashboard/todos_controller_spec.rb
+++ b/spec/controllers/dashboard/todos_controller_spec.rb
@@ -82,35 +82,15 @@ describe Dashboard::TodosController do
end
end
- context 'when using pagination' do
- let(:last_page) { user.todos.page.total_pages }
+ it_behaves_like 'paginated collection' do
let!(:issues) { create_list(:issue, 3, project: project, assignees: [user]) }
+ let(:collection) { user.todos }
before do
issues.each { |issue| todo_service.new_issue(issue, user) }
allow(Kaminari.config).to receive(:default_per_page).and_return(2)
end
- it 'redirects to last_page if page number is larger than number of pages' do
- get :index, params: { page: (last_page + 1).to_param }
-
- expect(response).to redirect_to(dashboard_todos_path(page: last_page))
- end
-
- it 'goes to the correct page' do
- get :index, params: { page: last_page }
-
- expect(assigns(:todos).current_page).to eq(last_page)
- expect(response).to have_gitlab_http_status(200)
- end
-
- it 'does not redirect to external sites when provided a host field' do
- external_host = "www.example.com"
- get :index, params: { page: (last_page + 1).to_param, host: external_host }
-
- expect(response).to redirect_to(dashboard_todos_path(page: last_page))
- end
-
context 'when providing no filters' do
it 'does not perform a query to get the page count, but gets that from the user' do
allow(controller).to receive(:current_user).and_return(user)