Content
View differences
Updated by Andrej Sandorf 5 days ago
### Steps to reproduce
1. Group by version (multiple versions off!)
2. Export a work package list
### What is the buggy behavior?
* An error is thrown: "undefined method 'version' for an instance of WorkPackage"
### What is the expected behavior?
* No error should be thrown
### **Logs**
[https://appsignal.com/openproject-gmbh/sites/67ec0573b9811010d8c9071a/exceptions/incidents/863](https://appsignal.com/openproject-gmbh/sites/67ec0573b9811010d8c9071a/exceptions/incidents/863)
#### Reproducible spec
spec/models/work\_package/pdf\_export/work\_package\_list\_to\_pdf\_version\_grouping\_spec.rb
```ruby
require "spec_helper"
RSpec.describe WorkPackage::PDFExport::WorkPackageListToPdf,
"grouped by version",
with_settings: { work_package_multiple_versions: false } do
include PDFExportSpecUtils
shared_let(:project) { create(:project) }
shared_let(:user) do
create(:user, member_with_permissions: { project => %w[view_work_packages export_work_packages] })
end
shared_let(:version) { create(:version, project:, name: "1.0") }
shared_let(:work_package) do
create(:work_package,
project:,
subject: "Grouped work package",
start_date: Date.new(2024, 4, 21),
due_date: Date.new(2024, 4, 23))
end
let(:query) do
build(:query, user:, project:, group_by: "version") do |q|
q.column_names = %w[id subject]
q.sort_criteria = [%w[id asc]]
end
end
let(:export) do
login_as(user)
described_class.new(query, options)
end
let(:pdf_strings) do
PDF::Inspector::Text
.analyze(File.read(export.export!.content.path))
.strings.join(" ").squeeze(" ")
end
before do
create(:work_package_version, work_package:, version:)
end
context "with a table export" do
let(:options) { { pdf_export_type: "table" } }
it "heads the group with the target version" do
expect(pdf_strings).to include(
[version.name,
column_title("id"), column_title("subject"),
work_package.display_id.to_s, work_package.subject].join(" ")
)
end
end
context "with a gantt export" do
let(:options) { { pdf_export_type: "gantt", gantt_mode: "day", gantt_width: "wide", paper_size: "EXECUTIVE" } }
it "heads the group with the target version" do
expect(pdf_strings).to include([version.name, work_package.type.name].join(" "))
end
end
end
```
### Environment information
**OpenProject installation type**
* Hosted cloud edition
**OpenProject version**
_v17.8_
1. Group by version (multiple versions off!)
2. Export a work package list
### What is the buggy behavior?
* An error is thrown: "undefined method 'version' for an instance of WorkPackage"
### What is the expected behavior?
* No error should be thrown
### **Logs**
[https://appsignal.com/openproject-gmbh/sites/67ec0573b9811010d8c9071a/exceptions/incidents/863](https://appsignal.com/openproject-gmbh/sites/67ec0573b9811010d8c9071a/exceptions/incidents/863)
#### Reproducible spec
spec/models/work\_package/pdf\_export/work\_package\_list\_to\_pdf\_version\_grouping\_spec.rb
```ruby
require "spec_helper"
RSpec.describe WorkPackage::PDFExport::WorkPackageListToPdf,
"grouped by version",
with_settings: { work_package_multiple_versions: false } do
include PDFExportSpecUtils
shared_let(:project) { create(:project) }
shared_let(:user) do
create(:user, member_with_permissions: { project => %w[view_work_packages export_work_packages] })
end
shared_let(:version) { create(:version, project:, name: "1.0") }
shared_let(:work_package) do
create(:work_package,
project:,
subject: "Grouped work package",
start_date: Date.new(2024, 4, 21),
due_date: Date.new(2024, 4, 23))
end
let(:query) do
build(:query, user:, project:, group_by: "version") do |q|
q.column_names = %w[id subject]
q.sort_criteria = [%w[id asc]]
end
end
let(:export) do
login_as(user)
described_class.new(query, options)
end
let(:pdf_strings) do
PDF::Inspector::Text
.analyze(File.read(export.export!.content.path))
.strings.join(" ").squeeze(" ")
end
before do
create(:work_package_version, work_package:, version:)
end
context "with a table export" do
let(:options) { { pdf_export_type: "table" } }
it "heads the group with the target version" do
expect(pdf_strings).to include(
[version.name,
column_title("id"), column_title("subject"),
work_package.display_id.to_s, work_package.subject].join(" ")
)
end
end
context "with a gantt export" do
let(:options) { { pdf_export_type: "gantt", gantt_mode: "day", gantt_width: "wide", paper_size: "EXECUTIVE" } }
it "heads the group with the target version" do
expect(pdf_strings).to include([version.name, work_package.type.name].join(" "))
end
end
end
```
### Environment information
**OpenProject installation type**
* Hosted cloud edition
**OpenProject version**
_v17.8_