Commit e0ff252a182dc75a6ef7171a3c2636af8590f7b2
1 parent
5d63d531
Exists in
master
and in
1 other branch
Per-user per_page option for errs and users entries.
Showing
7 changed files
with
48 additions
and
10 deletions
Show diff stats
app/controllers/apps_controller.rb
... | ... | @@ -10,7 +10,7 @@ class AppsController < ApplicationController |
10 | 10 | def show |
11 | 11 | respond_to do |format| |
12 | 12 | format.html do |
13 | - @errs = @app.errs.ordered.paginate(:page => params[:page], :per_page => Err.per_page) | |
13 | + @errs = @app.errs.ordered.paginate(:page => params[:page], :per_page => current_user.per_page) | |
14 | 14 | @deploys = @app.deploys.order_by(:created_at.desc).limit(5) |
15 | 15 | end |
16 | 16 | format.atom do | ... | ... |
app/controllers/errs_controller.rb
... | ... | @@ -6,7 +6,7 @@ class ErrsController < ApplicationController |
6 | 6 | app_scope = current_user.admin? ? App.all : current_user.apps |
7 | 7 | respond_to do |format| |
8 | 8 | format.html do |
9 | - @errs = Err.for_apps(app_scope).unresolved.ordered.paginate(:page => params[:page], :per_page => Err.per_page) | |
9 | + @errs = Err.for_apps(app_scope).unresolved.ordered.paginate(:page => params[:page], :per_page => current_user.per_page) | |
10 | 10 | end |
11 | 11 | format.atom do |
12 | 12 | @errs = Err.for_apps(app_scope).unresolved.ordered |
... | ... | @@ -16,7 +16,7 @@ class ErrsController < ApplicationController |
16 | 16 | |
17 | 17 | def all |
18 | 18 | app_scope = current_user.admin? ? App.all : current_user.apps |
19 | - @errs = Err.for_apps(app_scope).ordered.paginate(:page => params[:page], :per_page => Err.per_page) | |
19 | + @errs = Err.for_apps(app_scope).ordered.paginate(:page => params[:page], :per_page => current_user.per_page) | |
20 | 20 | end |
21 | 21 | |
22 | 22 | def show | ... | ... |
app/controllers/users_controller.rb
... | ... | @@ -6,7 +6,7 @@ class UsersController < ApplicationController |
6 | 6 | before_filter :require_user_edit_priviledges, :only => [:edit, :update] |
7 | 7 | |
8 | 8 | def index |
9 | - @users = User.paginate(:page => params[:page], :per_page => User.per_page) | |
9 | + @users = User.paginate(:page => params[:page], :per_page => current_user.per_page) | |
10 | 10 | end |
11 | 11 | |
12 | 12 | def show | ... | ... |
app/models/err.rb
app/models/user.rb
1 | 1 | class User |
2 | - cattr_reader :per_page | |
3 | - @@per_page = 30 | |
2 | + PER_PAGE = 30 | |
4 | 3 | include Mongoid::Document |
5 | 4 | include Mongoid::Timestamps |
6 | 5 | |
... | ... | @@ -10,6 +9,7 @@ class User |
10 | 9 | |
11 | 10 | field :name |
12 | 11 | field :admin, :type => Boolean, :default => false |
12 | + field :per_page, :type => Fixnum, :default => PER_PAGE | |
13 | 13 | |
14 | 14 | after_destroy :destroy_watchers |
15 | 15 | before_save :ensure_authentication_token |
... | ... | @@ -23,6 +23,10 @@ class User |
23 | 23 | def watchers |
24 | 24 | App.all.map(&:watchers).flatten.select {|w| w.user_id.to_s == id.to_s} |
25 | 25 | end |
26 | + | |
27 | + def per_page | |
28 | + self[:per_page] || PER_PAGE | |
29 | + end | |
26 | 30 | |
27 | 31 | def apps |
28 | 32 | # This is completely wasteful but became necessary | ... | ... |
spec/controllers/apps_controller_spec.rb
... | ... | @@ -35,7 +35,8 @@ describe AppsController do |
35 | 35 | render_views |
36 | 36 | context 'logged in as an admin' do |
37 | 37 | before(:each) do |
38 | - sign_in Factory(:admin) | |
38 | + @user = Factory(:admin) | |
39 | + sign_in @user | |
39 | 40 | @app = Factory(:app) |
40 | 41 | @err = Factory :err, :app => @app |
41 | 42 | @notice = Factory :notice, :err => @err |
... | ... | @@ -56,6 +57,23 @@ describe AppsController do |
56 | 57 | response.should be_success |
57 | 58 | response.body.should match(@err.message) |
58 | 59 | end |
60 | + | |
61 | + context "pagination" do | |
62 | + before(:each) do | |
63 | + 35.times { Factory :err, :app => @app } | |
64 | + end | |
65 | + | |
66 | + it "should have default per_page value for user" do | |
67 | + get :show, :id => @app.id | |
68 | + assigns(:errs).size.should == User::PER_PAGE | |
69 | + end | |
70 | + | |
71 | + it "should be able to override default per_page value" do | |
72 | + @user.update_attribute :per_page, 10 | |
73 | + get :show, :id => @app.id | |
74 | + assigns(:errs).size.should == 10 | |
75 | + end | |
76 | + end | |
59 | 77 | end |
60 | 78 | |
61 | 79 | context 'logged in as a user' do | ... | ... |
spec/controllers/errs_controller_spec.rb
... | ... | @@ -14,7 +14,8 @@ describe ErrsController do |
14 | 14 | render_views |
15 | 15 | context 'when logged in as an admin' do |
16 | 16 | before(:each) do |
17 | - sign_in Factory(:admin) | |
17 | + @user = Factory(:admin) | |
18 | + sign_in @user | |
18 | 19 | @notice = Factory :notice |
19 | 20 | @err = @notice.err |
20 | 21 | end |
... | ... | @@ -35,6 +36,23 @@ describe ErrsController do |
35 | 36 | 1000.times { Factory :notice } |
36 | 37 | lambda { get :index }.should_not raise_error |
37 | 38 | end |
39 | + | |
40 | + context "pagination" do | |
41 | + before(:each) do | |
42 | + 35.times { Factory :err } | |
43 | + end | |
44 | + | |
45 | + it "should have default per_page value for user" do | |
46 | + get :index | |
47 | + assigns(:errs).size.should == User::PER_PAGE | |
48 | + end | |
49 | + | |
50 | + it "should be able to override default per_page value" do | |
51 | + @user.update_attribute :per_page, 10 | |
52 | + get :index | |
53 | + assigns(:errs).size.should == 10 | |
54 | + end | |
55 | + end | |
38 | 56 | end |
39 | 57 | |
40 | 58 | context 'when logged in as a user' do | ... | ... |