Commit e0ff252a182dc75a6ef7171a3c2636af8590f7b2

Authored by Nick Recobra
1 parent 5d63d531
Exists in master and in 1 other branch production

Per-user per_page option for errs and users entries.

app/controllers/apps_controller.rb
@@ -10,7 +10,7 @@ class AppsController < ApplicationController @@ -10,7 +10,7 @@ class AppsController < ApplicationController
10 def show 10 def show
11 respond_to do |format| 11 respond_to do |format|
12 format.html do 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 @deploys = @app.deploys.order_by(:created_at.desc).limit(5) 14 @deploys = @app.deploys.order_by(:created_at.desc).limit(5)
15 end 15 end
16 format.atom do 16 format.atom do
app/controllers/errs_controller.rb
@@ -6,7 +6,7 @@ class ErrsController < ApplicationController @@ -6,7 +6,7 @@ class ErrsController < ApplicationController
6 app_scope = current_user.admin? ? App.all : current_user.apps 6 app_scope = current_user.admin? ? App.all : current_user.apps
7 respond_to do |format| 7 respond_to do |format|
8 format.html do 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 end 10 end
11 format.atom do 11 format.atom do
12 @errs = Err.for_apps(app_scope).unresolved.ordered 12 @errs = Err.for_apps(app_scope).unresolved.ordered
@@ -16,7 +16,7 @@ class ErrsController < ApplicationController @@ -16,7 +16,7 @@ class ErrsController < ApplicationController
16 16
17 def all 17 def all
18 app_scope = current_user.admin? ? App.all : current_user.apps 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 end 20 end
21 21
22 def show 22 def show
app/controllers/users_controller.rb
@@ -6,7 +6,7 @@ class UsersController < ApplicationController @@ -6,7 +6,7 @@ class UsersController < ApplicationController
6 before_filter :require_user_edit_priviledges, :only => [:edit, :update] 6 before_filter :require_user_edit_priviledges, :only => [:edit, :update]
7 7
8 def index 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 end 10 end
11 11
12 def show 12 def show
app/models/err.rb
1 class Err 1 class Err
2 - cattr_reader :per_page  
3 - @@per_page = 30  
4 include Mongoid::Document 2 include Mongoid::Document
5 include Mongoid::Timestamps 3 include Mongoid::Timestamps
6 4
app/models/user.rb
1 class User 1 class User
2 - cattr_reader :per_page  
3 - @@per_page = 30 2 + PER_PAGE = 30
4 include Mongoid::Document 3 include Mongoid::Document
5 include Mongoid::Timestamps 4 include Mongoid::Timestamps
6 5
@@ -10,6 +9,7 @@ class User @@ -10,6 +9,7 @@ class User
10 9
11 field :name 10 field :name
12 field :admin, :type => Boolean, :default => false 11 field :admin, :type => Boolean, :default => false
  12 + field :per_page, :type => Fixnum, :default => PER_PAGE
13 13
14 after_destroy :destroy_watchers 14 after_destroy :destroy_watchers
15 before_save :ensure_authentication_token 15 before_save :ensure_authentication_token
@@ -23,6 +23,10 @@ class User @@ -23,6 +23,10 @@ class User
23 def watchers 23 def watchers
24 App.all.map(&:watchers).flatten.select {|w| w.user_id.to_s == id.to_s} 24 App.all.map(&:watchers).flatten.select {|w| w.user_id.to_s == id.to_s}
25 end 25 end
  26 +
  27 + def per_page
  28 + self[:per_page] || PER_PAGE
  29 + end
26 30
27 def apps 31 def apps
28 # This is completely wasteful but became necessary 32 # This is completely wasteful but became necessary
spec/controllers/apps_controller_spec.rb
@@ -35,7 +35,8 @@ describe AppsController do @@ -35,7 +35,8 @@ describe AppsController do
35 render_views 35 render_views
36 context 'logged in as an admin' do 36 context 'logged in as an admin' do
37 before(:each) do 37 before(:each) do
38 - sign_in Factory(:admin) 38 + @user = Factory(:admin)
  39 + sign_in @user
39 @app = Factory(:app) 40 @app = Factory(:app)
40 @err = Factory :err, :app => @app 41 @err = Factory :err, :app => @app
41 @notice = Factory :notice, :err => @err 42 @notice = Factory :notice, :err => @err
@@ -56,6 +57,23 @@ describe AppsController do @@ -56,6 +57,23 @@ describe AppsController do
56 response.should be_success 57 response.should be_success
57 response.body.should match(@err.message) 58 response.body.should match(@err.message)
58 end 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 end 77 end
60 78
61 context 'logged in as a user' do 79 context 'logged in as a user' do
spec/controllers/errs_controller_spec.rb
@@ -14,7 +14,8 @@ describe ErrsController do @@ -14,7 +14,8 @@ describe ErrsController do
14 render_views 14 render_views
15 context 'when logged in as an admin' do 15 context 'when logged in as an admin' do
16 before(:each) do 16 before(:each) do
17 - sign_in Factory(:admin) 17 + @user = Factory(:admin)
  18 + sign_in @user
18 @notice = Factory :notice 19 @notice = Factory :notice
19 @err = @notice.err 20 @err = @notice.err
20 end 21 end
@@ -35,6 +36,23 @@ describe ErrsController do @@ -35,6 +36,23 @@ describe ErrsController do
35 1000.times { Factory :notice } 36 1000.times { Factory :notice }
36 lambda { get :index }.should_not raise_error 37 lambda { get :index }.should_not raise_error
37 end 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 end 56 end
39 57
40 context 'when logged in as a user' do 58 context 'when logged in as a user' do