update_all :position_name => nil
end
+ def self.default_or_middle
+ default || begin
+ priorities = active
+ priorities[(priorities.size - 1) / 2]
+ end
+ end
+
# Updates position_name for active priorities
# Called from migration 20121026003537_populate_enumerations_position_name
def self.compute_position_names
priorities = active
if priorities.any?
- default = priorities.detect(&:is_default?) || priorities[(priorities.size - 1) / 2]
+ default_position = default_or_middle.position
priorities.each_with_index do |priority, index|
name =
case
- when priority.position == default.position
+ when priority.position == default_position
"default"
- when priority.position < default.position
+ when priority.position < default_position
index == 0 ? "lowest" : "low#{index+1}"
else
index == (priorities.size - 1) ? "highest" : "high#{priorities.size - index}"
assert_nil IssuePriority.default
end
+ def test_default_or_middle_should_return_the_default_priority
+ assert_equal Enumeration.find_by_name('Normal'), IssuePriority.default_or_middle
+ end
+
+ def test_default_or_middle_should_return_middle_when_no_default_priority
+ IssuePriority.update_all :is_default => false
+ assert_equal Enumeration.find_by_name('High'), IssuePriority.default_or_middle
+ end
+
def test_should_be_an_enumeration
assert IssuePriority.ancestors.include?(Enumeration)
end