validates_uniqueness_of :name, :scope => [:type, :project_id]
validates_length_of :name, :maximum => 30
- scope :shared, :conditions => { :project_id => nil }
- scope :active, :conditions => { :active => true }
- scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
+ scope :shared, where(:project_id => nil)
+ scope :active, where(:active => true)
+ scope :named, lambda {|arg| where("LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip)}
def self.default
# Creates a fake default scope so Enumeration.default will check
# it's type. STI subclasses will automatically add their own
# types to the finder.
if self.descends_from_active_record?
- find(:first, :conditions => { :is_default => true, :type => 'Enumeration' })
+ where(:is_default => true, :type => 'Enumeration').first
else
# STI classes are
- find(:first, :conditions => { :is_default => true })
+ where(:is_default => true).first
end
end
def check_default
if is_default? && is_default_changed?
- Enumeration.update_all("is_default = #{connection.quoted_false}", {:type => type})
+ Enumeration.update_all({:is_default => false}, {:type => type})
end
end
class IssuePriorityTest < ActiveSupport::TestCase
fixtures :enumerations, :issues
+ def test_named_scope
+ assert_equal Enumeration.find_by_name('Normal'), Enumeration.named('normal').first
+ end
+
+ def test_default_should_return_the_default_priority
+ assert_equal Enumeration.find_by_name('Normal'), IssuePriority.default
+ end
+
+ def test_default_should_return_nil_when_no_default_priority
+ IssuePriority.update_all :is_default => false
+ assert_nil IssuePriority.default
+ end
+
def test_should_be_an_enumeration
assert IssuePriority.ancestors.include?(Enumeration)
end