Skip to content

Commit 1ed7d4f

Browse files
Merge pull request #21255 from opf/date-subject-format
Format subject dates according to instance setting
2 parents d8ee971 + 021c7bd commit 1ed7d4f

4 files changed

Lines changed: 22 additions & 10 deletions

File tree

app/models/work_package_types/patterns/token_property_mapper.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ module Patterns
3333
class TokenPropertyMapper
3434
STRING_OR_NIL = ->(v) { v&.to_s }
3535
ARRAY = ->(v) { v.compact.presence&.join(", ") }
36-
DATE = ->(v) { v&.strftime("%Y-%m-%d") }
36+
DATE = ->(v) { v&.strftime(Setting.date_format || "%Y-%m-%d") }
3737
DURATION = ->(v) { DurationConverter.output(v) }
3838

3939
class << self
@@ -120,11 +120,13 @@ def prefixed_label(context, attribute_label)
120120
end
121121

122122
def tokenize(custom_field_scope, prefix = nil)
123-
custom_field_scope.pluck(:name, :id, :multi_value).map do |name, id, multiple|
123+
custom_field_scope.pluck(:name, :id, :field_format, :multi_value).map do |name, id, format, multiple|
124124
formatter = if multiple
125125
ARRAY
126+
elsif format == "date"
127+
DATE
126128
else
127-
->(v) { v.is_a?(Symbol) ? v : v&.to_s }
129+
->(v) { v.is_a?(Symbol) ? v : STRING_OR_NIL.call(v) }
128130
end
129131
AttributeToken.new(
130132
:"#{prefix}custom_field_#{id}",

spec/features/work_packages/details/relations/hierarchy_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def visit_relations
6363

6464
it "allows to manage hierarchy" do
6565
# Add parent
66-
relations.add_parent(parent.id, parent)
66+
relations.add_parent(parent)
6767
wp_page.expect_and_dismiss_toaster(message: "Successful update.")
6868
relations.expect_parent(parent)
6969
tabs.expect_counter(relations_tab, 1)
@@ -150,7 +150,7 @@ def visit_relations
150150

151151
it "is able to link parent and children" do
152152
# Add parent
153-
relations.add_parent(parent.id, parent)
153+
relations.add_parent(parent)
154154
wp_page.expect_and_dismiss_toaster(message: "Successful update.")
155155
relations.expect_parent(parent)
156156
tabs.expect_counter(relations_tab, 3)

spec/models/work_package_types/patterns/token_property_mapper_spec.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@
133133
expect(token.call(work_package)).to eq("false")
134134
end
135135

136-
it "formats date custom fields correctly" do
136+
it "formats date custom fields with a default format" do
137137
enabled, = subject
138138
token = enabled.detect do |t|
139139
t.key == :"custom_field_#{date_custom_field.id}"
@@ -175,6 +175,17 @@
175175
expect(detect(enabled, :"custom_field_#{cf.id}")).to be_nil
176176
expect(detect(disabled, :"custom_field_#{cf.id}")&.label).to eq(cf.name)
177177
end
178+
179+
context "when defining an instance date format", with_settings: { date_format: "%d.%m.%Y" } do
180+
it "formats date custom fields according to the instance date format" do
181+
enabled, = subject
182+
token = enabled.detect do |t|
183+
t.key == :"custom_field_#{date_custom_field.id}"
184+
end
185+
186+
expect(token.call(work_package)).to eq("03.10.2025")
187+
end
188+
end
178189
end
179190

180191
private

spec/support/components/work_packages/relations.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ def expect_no_relations
307307
expect(page).to have_test_selector("no-relations-blankslate", text: "This work package does not have any relations yet.")
308308
end
309309

310-
def add_parent(query, work_package)
310+
def add_parent(work_package)
311311
# Open the parent edit
312312
SeleniumHubWaiter.wait
313313
find(".wp-relation--parent-change").click
@@ -316,9 +316,8 @@ def add_parent(query, work_package)
316316
SeleniumHubWaiter.wait
317317
autocomplete = page.find_test_selector("wp-relations-autocomplete")
318318
select_autocomplete autocomplete,
319-
query:,
320-
results_selector: ".ng-dropdown-panel-items",
321-
select_text: work_package.id
319+
query: work_package.subject,
320+
results_selector: ".ng-dropdown-panel-items"
322321
end
323322

324323
def expect_parent(work_package)

0 commit comments

Comments
 (0)