]> source.dussan.org Git - redmine.git/commitdiff
Use open scope in version issues count methods.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 18 Dec 2011 13:05:46 +0000 (13:05 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 18 Dec 2011 13:05:46 +0000 (13:05 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8285 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue.rb
app/models/version.rb
test/unit/issue_test.rb

index be69d929f321cf8f1fb3994aeedc67fc323e860e..199efe1190838b296e7c896cce4c0899fff6e1e3 100644 (file)
@@ -63,7 +63,10 @@ class Issue < ActiveRecord::Base
   named_scope :visible, lambda {|*args| { :include => :project,
                                           :conditions => Issue.visible_condition(args.shift || User.current, *args) } }
 
-  named_scope :open, :conditions => ["#{IssueStatus.table_name}.is_closed = ?", false], :include => :status
+  named_scope :open, lambda {|*args|
+    is_closed = args.size > 0 ? !args.first : false
+    {:conditions => ["#{IssueStatus.table_name}.is_closed = ?", is_closed], :include => :status}
+  }
 
   named_scope :recently_updated, :order => "#{Issue.table_name}.updated_on DESC"
   named_scope :with_limit, lambda { |limit| { :limit => limit} }
index 3340be77ee471bf614d8130f9908e5dd340fb5c4..8002ac9c8d8d5643347e7e66b48319a72fb7de6c 100644 (file)
@@ -124,12 +124,12 @@ class Version < ActiveRecord::Base
 
   # Returns the total amount of open issues for this version.
   def open_issues_count
-    @open_issues_count ||= Issue.count(:all, :conditions => ["fixed_version_id = ? AND is_closed = ?", self.id, false], :include => :status)
+    @open_issues_count ||= Issue.open.count(:all, :conditions => ["fixed_version_id = ?", self.id])
   end
 
   # Returns the total amount of closed issues for this version.
   def closed_issues_count
-    @closed_issues_count ||= Issue.count(:all, :conditions => ["fixed_version_id = ? AND is_closed = ?", self.id, true], :include => :status)
+    @closed_issues_count ||= Issue.open(false).count(:all, :conditions => ["fixed_version_id = ?", self.id])
   end
 
   def wiki_page
index e23b52d1128b7a8afbe71bc7d31557bab19e40c3..a08ec3f87a8f07925799b421048ddcc4f142b0d1 100644 (file)
@@ -219,6 +219,16 @@ class IssueTest < ActiveSupport::TestCase
     assert_equal 0, Issue.find(1).descendants.visible.all.size
   end
 
+  def test_open_scope
+    issues = Issue.open.all
+    assert_nil issues.detect(&:closed?)
+  end
+
+  def test_open_scope_with_arg
+    issues = Issue.open(false).all
+    assert_equal issues, issues.select(&:closed?)
+  end
+
   def test_errors_full_messages_should_include_custom_fields_errors
     field = IssueCustomField.find_by_name('Database')