From bc358f5a7522ca5de3058c031c10b7b3146d7632 Mon Sep 17 00:00:00 2001 From: Jan Schulz-Hofen Date: Mon, 2 Dec 2019 20:18:47 +0100 Subject: [PATCH 2/4] =?UTF-8?q?Extract=20finding=20the=20default=20or=20?= =?UTF-8?q?=E2=80=9Cmiddle=E2=80=9D=20issue=20priority=20into=20its=20own?= =?UTF-8?q?=20class=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/issue_priority.rb | 13 ++++++++++--- test/unit/issue_priority_test.rb | 9 +++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/models/issue_priority.rb b/app/models/issue_priority.rb index 05be79dd1c..8326b8ffa9 100644 --- a/app/models/issue_priority.rb +++ b/app/models/issue_priority.rb @@ -47,18 +47,25 @@ class IssuePriority < Enumeration 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}" diff --git a/test/unit/issue_priority_test.rb b/test/unit/issue_priority_test.rb index 07cd5c6cf2..2fb863aceb 100644 --- a/test/unit/issue_priority_test.rb +++ b/test/unit/issue_priority_test.rb @@ -39,6 +39,15 @@ class IssuePriorityTest < ActiveSupport::TestCase 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 -- 2.17.0