diff --git a/modules/meeting/app/workers/meetings/pdf/common/agenda.rb b/modules/meeting/app/workers/meetings/pdf/common/agenda.rb
index a8a427940c8..c9a1aa69609 100644
--- a/modules/meeting/app/workers/meetings/pdf/common/agenda.rb
+++ b/modules/meeting/app/workers/meetings/pdf/common/agenda.rb
@@ -61,12 +61,16 @@ module Meetings::PDF::Common::Agenda
make_link_href(
href,
prawn_table_cell_inline_formatting_data(
- "#{work_package.type.name} ##{work_package.id} #{work_package.subject}",
+ work_package_title_text(work_package),
{ styles: [:underline] }
)
)
end
+ def work_package_title_text(work_package)
+ "#{work_package.type.name} #{work_package.formatted_id} #{work_package.subject}"
+ end
+
def agenda_wp_title_row(agenda_item)
if agenda_item.visible_work_package?
work_package = agenda_item.work_package
@@ -109,7 +113,7 @@ module Meetings::PDF::Common::Agenda
def write_visible_work_package_outcome(work_package)
href = url_helpers.work_package_url(work_package)
- link_text = "#{work_package.type.name} ##{work_package.id} #{work_package.subject}"
+ link_text = work_package_title_text(work_package)
status_text = " (#{work_package.status.name})"
base_style = styles.outcome_work_package
pdf.formatted_text([
diff --git a/modules/meeting/spec/workers/meetings/pdf/default/exporter_spec.rb b/modules/meeting/spec/workers/meetings/pdf/default/exporter_spec.rb
index bd27a51e2f4..183d160844e 100644
--- a/modules/meeting/spec/workers/meetings/pdf/default/exporter_spec.rb
+++ b/modules/meeting/spec/workers/meetings/pdf/default/exporter_spec.rb
@@ -250,6 +250,52 @@ RSpec.describe Meetings::PDF::Default::Exporter do
expect(subject).to eq expected_document
end
end
+
+ context "with semantic work package identifiers",
+ with_settings: { work_packages_identifier: "semantic" } do
+ let(:options) do
+ {
+ participants: "0",
+ outcomes: "0",
+ backlog: "0",
+ attachments: "0"
+ }
+ end
+ let(:wp_agenda_item) do
+ create(:wp_meeting_agenda_item,
+ meeting:,
+ meeting_section: meeting_section_second,
+ work_package:,
+ duration_in_minutes: 10,
+ notes: "##{work_package.id}")
+ end
+
+ before do
+ work_package.update_columns(identifier: "MEET-1", sequence_number: 1)
+ end
+
+ it "renders the semantic identifier for the agenda item and the mention in its notes" do
+ expected_document = [
+ *expected_cover_page,
+ *meeting_head,
+
+ "Untitled section", " ", "15 mins",
+ "Agenda Item TOP 1", " ", "15 mins", " ", "Export User",
+ "foo",
+
+ "Second section", " ", "10 mins",
+ "Task", "MEET-1", "Important task", " (Workin' on it)", " ", "10 mins",
+ "MEET-1",
+
+ "1", # Page number
+ export_time_formatted,
+ project.name
+ ].join(" ")
+
+ expect(subject).to eq expected_document
+ end
+ end
end
context "with a meeting with special work package agenda item" do
@@ -362,6 +408,32 @@ RSpec.describe Meetings::PDF::Default::Exporter do
expect(subject).to eq expected_document
end
+
+ context "with semantic work package identifiers",
+ with_settings: { work_packages_identifier: "semantic" } do
+ before do
+ outcome_work_package.update_columns(identifier: "MEET-1", sequence_number: 1)
+ end
+
+ it "renders the work package outcome with the semantic identifier" do
+ expected_document = [
+ *expected_cover_page,
+ *meeting_head,
+
+ "Section with outcomes", " ", "15 mins",
+ "Agenda Item", " ", "15 mins", " ", "Export User",
+ "Agenda item notes",
+ "✓ Outcome",
+ "Task", "MEET-1", "Outcome WP", " (In Progress)",
+
+ "1", # Page number
+ export_time_formatted,
+ project.name
+ ].join(" ")
+
+ expect(subject).to eq expected_document
+ end
+ end
end
context "with a hidden work package outcome" do
diff --git a/modules/meeting/spec/workers/meetings/pdf/minutes/exporter_spec.rb b/modules/meeting/spec/workers/meetings/pdf/minutes/exporter_spec.rb
index 7113ff27fbe..aea6f0674f9 100644
--- a/modules/meeting/spec/workers/meetings/pdf/minutes/exporter_spec.rb
+++ b/modules/meeting/spec/workers/meetings/pdf/minutes/exporter_spec.rb
@@ -258,6 +258,50 @@ RSpec.describe Meetings::PDF::Minutes::Exporter do
expect(subject).to eq expected_document
end
end
+
+ context "with semantic work package identifiers",
+ with_settings: { work_packages_identifier: "semantic" } do
+ let(:options) do
+ default_options.merge(
+ {
+ first_page_header_left: "",
+ outcomes: "0",
+ author: ""
+ }
+ )
+ end
+ let(:wp_agenda_item) do
+ create(:wp_meeting_agenda_item,
+ meeting:,
+ meeting_section: meeting_section_second,
+ work_package:,
+ duration_in_minutes: 10,
+ notes: "##{work_package.id}")
+ end
+
+ before do
+ work_package.update_columns(identifier: "MEET-1", sequence_number: 1)
+ end
+
+ it "renders the semantic identifier for the agenda item and the mention in its notes" do
+ expected_document = [
+ meeting.title,
+ *meeting_info,
+ "1. Untitled section", " ", "15 mins",
+ "1.1. Agenda Item TOP 1",
+ "foo",
+
+ "2. Second section", " ", "10 mins",
+ "2.1. Task", "MEET-1", "Important task", " (Workin' on it)",
+ "MEET-1",
+
+ *expected_footer
+ ].join(" ")
+
+ expect(subject).to eq expected_document
+ end
+ end
end
context "with a meeting with special work package agenda item" do
@@ -352,6 +396,29 @@ RSpec.describe Meetings::PDF::Minutes::Exporter do
expect(subject).to eq expected_document
end
+
+ context "with semantic work package identifiers",
+ with_settings: { work_packages_identifier: "semantic" } do
+ before do
+ outcome_work_package.update_columns(identifier: "MEET-1", sequence_number: 1)
+ end
+
+ it "renders the work package outcome with the semantic identifier" do
+ expected_document = [
+ meeting.title,
+ *meeting_info,
+ *meeting_info_custom,
+ "1. Section with outcomes", " ", "15 mins",
+ "1.1. Agenda Item",
+ "Agenda item notes",
+ "✓ Outcome",
+ "Task", "MEET-1", "Outcome WP", " (In Progress)",
+ *expected_header_footer
+ ].join(" ")
+
+ expect(subject).to eq expected_document
+ end
+ end
end
context "with a hidden work package outcome" do