git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9714 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/2.1.0
@@ -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 | |||
@@ -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 |
@@ -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 | |||
@@ -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 |
@@ -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| |
@@ -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), |
@@ -18,7 +18,15 @@ | |||
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 |