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 | ... | ... |