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