Change custom_value_for to return values based on the multi_value? only

This commit is contained in:
Dombi Attila
2025-11-12 14:43:51 +02:00
parent 652551d537
commit bc11699ddd
6 changed files with 9 additions and 15 deletions
@@ -118,8 +118,6 @@ module Exports::PDF::Components::WpTable
list = key.map { |v| v&.value }
if list.empty?
nil
elsif list.length == 1
list.first
else
list
end
@@ -167,7 +167,7 @@ module Redmine
values = custom_field_values.select { |v| v.custom_field_id == custom_field.id }
if values.size > 1 && custom_field.multi_value?
if custom_field.multi_value?
values.sort_by { |v| v.id.to_i } # need to cope with nil
else
values.first
@@ -144,7 +144,7 @@ RSpec.describe "Custom field filter in boards",
# Expect custom field to be unchanged
work_package.reload
cv = work_package.custom_value_for(custom_field).typed_value
expect(cv).to eq "B"
cv = work_package.custom_value_for(custom_field).map(&:typed_value)
expect(cv).to eq ["B"]
end
end
@@ -77,12 +77,11 @@ RSpec.describe "multi version custom field", :js do
work_package.reload
# only one value, so no array
cvs = work_package
.custom_value_for(custom_field)
.typed_value
.map(&:typed_value)
expect(cvs).to eq version_old
expect(cvs).to eq [version_old]
end
context "with existing version values" do
@@ -133,12 +133,11 @@ RSpec.describe "support for non-open version values in version custom field", :j
work_package.reload
# only one value, so no array
cvs = work_package
.custom_value_for(custom_field)
.typed_value
.map(&:typed_value)
expect(cvs).to eq version_closed
expect(cvs).to eq [version_closed]
end
end
@@ -75,10 +75,8 @@ RSpec.describe WorkPackage do
let(:work_package) { create(:work_package, project:, type:) }
it "returns nil properly" do
# I suspect this should rather be
# expect(values.map(&:value)).to eq([nil])
expect(values.value).to be_nil
expect(typed_values).to be_nil
expect(values.map(&:value)).to eq([nil])
expect(typed_values).to eq([nil])
end
end