]> source.dussan.org Git - redmine.git/commitdiff
Code cleanup.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 25 May 2012 20:18:55 +0000 (20:18 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 25 May 2012 20:18:55 +0000 (20:18 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9714 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/projects_controller.rb
app/controllers/trackers_controller.rb
app/models/project.rb
app/models/tracker.rb
app/models/workflow.rb
app/views/custom_fields/_form.html.erb
test/unit/tracker_test.rb

index 5dcb934fe609f70be2f7cc185d92cd8a816684d8..c89167aa32fc36f840484ae1c3b40435172f3421 100644 (file)
@@ -65,14 +65,14 @@ class ProjectsController < ApplicationController
 
   def new
     @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
-    @trackers = Tracker.all
+    @trackers = Tracker.sorted.all
     @project = Project.new
     @project.safe_attributes = params[:project]
   end
 
   def create
     @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
-    @trackers = Tracker.all
+    @trackers = Tracker.sorted.all
     @project = Project.new
     @project.safe_attributes = params[:project]
 
@@ -105,7 +105,7 @@ class ProjectsController < ApplicationController
 
   def copy
     @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
-    @trackers = Tracker.all
+    @trackers = Tracker.sorted.all
     @root_projects = Project.find(:all,
                                   :conditions => "parent_id IS NULL AND status = #{Project::STATUS_ACTIVE}",
                                   :order => 'name')
@@ -175,7 +175,7 @@ class ProjectsController < ApplicationController
     @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position")
     @issue_category ||= IssueCategory.new
     @member ||= @project.members.new
-    @trackers = Tracker.all
+    @trackers = Tracker.sorted.all
     @wiki ||= @project.wiki
   end
 
index 7dd88f5e4e19afb8ec5dcb7232d5a089703a62e1..a67583c16387d321a8b29239f7a1b63c26c63773 100644 (file)
@@ -29,7 +29,7 @@ class TrackersController < ApplicationController
         render :action => "index", :layout => false if request.xhr?
       }
       format.api {
-        @trackers = Tracker.all
+        @trackers = Tracker.sorted.all
       }
     end
   end
index aad320b338e15ccfa76cc6f34ce4c2d9ec909c07..1b8f30db38bb0531612150d71b698021476cf966 100644 (file)
@@ -121,7 +121,7 @@ class Project < ActiveRecord::Base
       self.enabled_module_names = Setting.default_projects_modules
     end
     if !initialized.key?('trackers') && !initialized.key?('tracker_ids')
-      self.trackers = Tracker.all
+      self.trackers = Tracker.sorted.all
     end
   end
 
index d489d6d4511681968a832cddb442fd8d79e5a53a..ce34f782cd93ccaab22c69abb1cce63a55f3d716 100644 (file)
@@ -32,7 +32,8 @@ class Tracker < ActiveRecord::Base
   validates_uniqueness_of :name
   validates_length_of :name, :maximum => 30
 
-  scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
+  scope :sorted, order("#{table_name}.position ASC")
+  scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)}
 
   def to_s; name end
 
@@ -40,10 +41,6 @@ class Tracker < ActiveRecord::Base
     position <=> tracker.position
   end
 
-  def self.all
-    find(:all, :order => 'position')
-  end
-
   # Returns an array of IssueStatus that are used
   # in the tracker's workflows
   def issue_statuses
@@ -63,6 +60,6 @@ class Tracker < ActiveRecord::Base
 
 private
   def check_integrity
-    raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id])
+    raise Exception.new("Can't delete tracker") if Issue.where(:tracker_id => self.id).any?
   end
 end
index 059d2c1eeac499596ecf3b151aa67bae340643f6..5c1ef5deac2212380f9379ee30a4ae06b40c5a74 100644 (file)
@@ -50,7 +50,7 @@ class Workflow < ActiveRecord::Base
     target_trackers = [target_trackers].flatten.compact
     target_roles = [target_roles].flatten.compact
 
-    target_trackers = Tracker.all if target_trackers.empty?
+    target_trackers = Tracker.sorted.all if target_trackers.empty?
     target_roles = Role.all if target_roles.empty?
 
     target_trackers.each do |target_tracker|
index 84f08457e48e3748407a9049ad3b939d8e87e9a1..afc15b53c3502aeea52831038a32f6f31207005e 100644 (file)
@@ -89,7 +89,7 @@ function toggle_custom_field_format() {
 when "IssueCustomField" %>
 
     <fieldset><legend><%=l(:label_tracker_plural)%></legend>
-    <% Tracker.all.each do |tracker| %>
+    <% Tracker.sorted.all.each do |tracker| %>
       <%= check_box_tag "custom_field[tracker_ids][]",
                         tracker.id,
                         (@custom_field.trackers.include? tracker),
index 493637db50eedbe636c1b74305171976cff414f3..9cf6866a9a16dd304d1db4006410112a2ebd8c14 100644 (file)
 require File.expand_path('../../test_helper', __FILE__)
 
 class TrackerTest < ActiveSupport::TestCase
-  fixtures :trackers, :workflows, :issue_statuses, :roles
+  fixtures :trackers, :workflows, :issue_statuses, :roles, :issues
+
+  def test_sorted_scope
+    assert_equal Tracker.all.sort, Tracker.sorted.all
+  end
+
+  def test_named_scope
+    assert_equal Tracker.find_by_name('Feature'), Tracker.named('feature').first
+  end
 
   def test_copy_workflows
     source = Tracker.find(1)
@@ -57,4 +65,25 @@ class TrackerTest < ActiveSupport::TestCase
 
     assert_equal [b, a], [a, b].sort
   end
+
+  def test_destroying_a_tracker_without_issues_should_not_raise_an_error
+    tracker = Tracker.find(1)
+    Issue.delete_all :tracker_id => tracker.id
+
+    assert_difference 'Tracker.count', -1 do
+      assert_nothing_raised do
+        tracker.destroy
+      end
+    end
+  end
+
+  def test_destroying_a_tracker_with_issues_should_raise_an_error
+    tracker = Tracker.find(1)
+
+    assert_no_difference 'Tracker.count' do
+      assert_raise Exception do
+        tracker.destroy
+      end
+    end
+  end
 end