summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2025-01-05 03:04:59 +0000
committerGo MAEDA <maeda@farend.jp>2025-01-05 03:04:59 +0000
commit3712ecb01ffb42ca47061ed94fdb375e97647266 (patch)
tree2e6bc2632e12cefb2695950945b2690877848c5f
parent32203e4ebb5d0621ab315f3cbf0ac6c5611fd543 (diff)
downloadredmine-3712ecb01ffb42ca47061ed94fdb375e97647266.tar.gz
redmine-3712ecb01ffb42ca47061ed94fdb375e97647266.zip
Fix NoMethodError in IssuePriority#high and #low when no default or active priorities exist (#42066).
Patch by Go MAEDA (user:maeda). git-svn-id: https://svn.redmine.org/redmine/trunk@23431 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/models/issue_priority.rb8
-rw-r--r--test/unit/issue_priority_test.rb16
2 files changed, 22 insertions, 2 deletions
diff --git a/app/models/issue_priority.rb b/app/models/issue_priority.rb
index d60098c06..1bad524dc 100644
--- a/app/models/issue_priority.rb
+++ b/app/models/issue_priority.rb
@@ -60,11 +60,15 @@ class IssuePriority < Enumeration
end
def high?
- position > self.class.default_or_middle.position
+ return false unless (baseline_position = self.class.default_or_middle&.position)
+
+ position > baseline_position
end
def low?
- position < self.class.default_or_middle.position
+ return false unless (baseline_position = self.class.default_or_middle&.position)
+
+ position < baseline_position
end
# Updates position_name for active priorities
diff --git a/test/unit/issue_priority_test.rb b/test/unit/issue_priority_test.rb
index e076afe67..80dc11e1c 100644
--- a/test/unit/issue_priority_test.rb
+++ b/test/unit/issue_priority_test.rb
@@ -156,4 +156,20 @@ class IssuePriorityTest < ActiveSupport::TestCase
IssuePriority.find_by_position_name('highest').destroy
assert_equal %w(lowest default high2 highest), IssuePriority.active.to_a.sort.map(&:position_name)
end
+
+ def test_high_should_return_false_when_no_default_priority_and_no_active_priorities
+ IssuePriority.update_all(active: false, is_default: false)
+ priority = IssuePriority.order(:position).last # Highest priority
+ assert_nothing_raised do
+ assert_equal false, priority.high?
+ end
+ end
+
+ def test_low_should_return_false_when_no_default_priority_and_no_active_priorities
+ IssuePriority.update_all(active: false, is_default: false)
+ priority = IssuePriority.order(:position).first # Lowest priority
+ assert_nothing_raised do
+ assert_equal false, priority.low?
+ end
+ end
end