Commit 02696d83c7751d787675ae9737e997c19ed7067a
1 parent
86f245d1
Exists in
master
and in
1 other branch
fix error when only one app is present
It fixes ActionView::Template::Error (undefined method `>' for nil:NilClass) error. This error was showing when there is only one app was present. In AppsController when we were trying to sort our apps and if apps.count == 1 the sort method actually doesn't call block so we had empty @unresolved_counts, @problem_counts assigns.
Showing
2 changed files
with
30 additions
and
3 deletions
Show diff stats
app/controllers/apps_controller.rb
... | ... | @@ -50,10 +50,26 @@ class AppsController < InheritedResources::Base |
50 | 50 | |
51 | 51 | protected |
52 | 52 | def collection |
53 | - # Sort apps by number of unresolved errs, descending. | |
54 | - # Caches the unresolved err counts while performing the sort. | |
55 | 53 | @unresolved_counts, @problem_counts = {}, {} |
56 | - @apps ||= end_of_association_chain.all.sort{|a,b| | |
54 | + @apps ||= begin | |
55 | + apps = end_of_association_chain.all | |
56 | + | |
57 | + if apps.count > 1 | |
58 | + apps = sort_by_unresolved_errs(apps) | |
59 | + elsif apps.count > 0 | |
60 | + app = apps.first | |
61 | + @unresolved_counts[app.id] ||= app.problems.unresolved.count | |
62 | + @problem_counts[app.id] ||= app.problems.count | |
63 | + end | |
64 | + | |
65 | + apps | |
66 | + end | |
67 | + end | |
68 | + | |
69 | + # Sort apps by number of unresolved errs, descending. | |
70 | + # Caches the unresolved err counts while performing the sort. | |
71 | + def sort_by_unresolved_errs(apps) | |
72 | + apps.sort{|a,b| | |
57 | 73 | [a,b].each do |app| |
58 | 74 | @unresolved_counts[app.id] ||= app.problems.unresolved.count |
59 | 75 | @problem_counts[app.id] ||= app.problems.count | ... | ... |
spec/controllers/apps_controller_spec.rb
... | ... | @@ -31,6 +31,17 @@ describe AppsController do |
31 | 31 | assigns(:apps).should_not include(unwatched_app) |
32 | 32 | end |
33 | 33 | end |
34 | + | |
35 | + context 'when there is only one app' do | |
36 | + it 'sets unresolved_counts and problem_counts variables' do | |
37 | + sign_in Fabricate(:admin) | |
38 | + app = Fabricate(:app) | |
39 | + get :index | |
40 | + | |
41 | + assigns(:unresolved_counts).should == {app.id => 0} | |
42 | + assigns(:problem_counts).should == {app.id => 0} | |
43 | + end | |
44 | + end | |
34 | 45 | end |
35 | 46 | |
36 | 47 | describe "GET /apps/:id" do | ... | ... |