Skip to content

Commit 60493b1

Browse files
authored
Merge pull request opf#18440 from opf/bug/62500-shared-versions-are-not-available-on-version-filter-on-global-wp-page
[#62500] Shared versions are not available on Version filter on global wp page
2 parents c76232b + 550f06b commit 60493b1

File tree

2 files changed

+78
-50
lines changed

2 files changed

+78
-50
lines changed

lib/api/v3/versions/versions_api.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class VersionsAPI < ::API::OpenProjectAPI
3636
# the distinct(false) is added in order to allow ORDER BY LOWER(name)
3737
# which would otherwise be invalid in postgresql
3838
# SELECT DISTINCT, ORDER BY expressions must appear in select list
39-
Version.visible(current_user).distinct(false)
39+
Version.visible(current_user).or(Version.systemwide).distinct(false)
4040
})
4141
.mount
4242

spec/features/work_packages/table/queries/filter_spec.rb

+77-49
Original file line numberDiff line numberDiff line change
@@ -70,82 +70,110 @@
7070
end
7171
end
7272

73-
context "by version in project" do
73+
context "when filtering version" do
7474
shared_let(:other_project) { create(:project) }
75-
shared_let(:inaccessible_version) { create(:version, project: other_project) }
76-
shared_let(:shared_version) { create(:version, project: other_project, sharing: "system") }
75+
shared_let(:inaccessible_version) { create(:version, name: "Inaccessible Version", project: other_project) }
76+
shared_let(:shared_version) { create(:version, name: "Shared Version", project: other_project, sharing: "system") }
7777

78-
let(:version) { create(:version, project:) }
79-
let(:work_package_with_version) do
78+
let!(:version) { create(:version, project:) }
79+
let!(:work_package_with_version) do
8080
create(:work_package, project:, subject: "With version", version:)
8181
end
82-
let(:work_package_without_version) { create(:work_package, subject: "Without version", project:) }
82+
let!(:work_package_without_version) { create(:work_package, subject: "Without version", project:) }
8383

8484
before do
85-
work_package_with_version
86-
work_package_without_version
87-
8885
wp_table.visit!
89-
end
9086

91-
it "allows filtering, saving, retrieving and altering the saved filter" do
9287
filters.open
93-
9488
# Expect filters to be grouped by project name
9589
filters.add_filter("Version")
90+
end
9691

97-
expect_ng_option(
98-
page.find_by_id("values-version"),
99-
version,
100-
grouping: project.name,
101-
results_selector: "body"
102-
)
92+
context "in a project" do
93+
let(:wp_table) { Pages::WorkPackagesTable.new(project) }
10394

104-
expect_ng_option(
105-
page.find_by_id("values-version"),
106-
shared_version,
107-
grouping: other_project.name,
108-
results_selector: "body"
109-
)
95+
it "allows filtering, saving, retrieving and altering the saved filter" do
96+
expect_ng_option(
97+
page.find_by_id("values-version"),
98+
version,
99+
grouping: project.name,
100+
results_selector: "body"
101+
)
110102

111-
expect_no_ng_option(
112-
page.find_by_id("values-version"),
113-
inaccessible_version,
114-
results_selector: "body"
115-
)
103+
expect_ng_option(
104+
page.find_by_id("values-version"),
105+
shared_version,
106+
grouping: other_project.name,
107+
results_selector: "body"
108+
)
116109

117-
filters.remove_filter "version"
110+
expect_no_ng_option(
111+
page.find_by_id("values-version"),
112+
inaccessible_version,
113+
results_selector: "body"
114+
)
118115

119-
filters.add_filter_by("Version", "is (OR)", version.name)
116+
filters.remove_filter "version"
120117

121-
loading_indicator_saveguard
122-
wp_table.expect_work_package_listed work_package_with_version
123-
wp_table.ensure_work_package_not_listed! work_package_without_version
118+
filters.add_filter_by("Version", "is (OR)", version.name)
124119

125-
wp_table.save_as("Some query name")
120+
loading_indicator_saveguard
121+
wp_table.expect_work_package_listed work_package_with_version
122+
wp_table.ensure_work_package_not_listed! work_package_without_version
126123

127-
filters.remove_filter "version"
124+
wp_table.save_as("Some query name")
128125

129-
loading_indicator_saveguard
130-
wp_table.expect_work_package_listed work_package_with_version, work_package_without_version
126+
filters.remove_filter "version"
131127

132-
last_query = Query.last
128+
loading_indicator_saveguard
129+
wp_table.expect_work_package_listed work_package_with_version, work_package_without_version
133130

134-
wp_table.visit_query(last_query)
131+
last_query = Query.last
135132

136-
loading_indicator_saveguard
137-
wp_table.expect_work_package_listed work_package_with_version
138-
wp_table.ensure_work_package_not_listed! work_package_without_version
133+
wp_table.visit_query(last_query)
139134

140-
filters.open
135+
loading_indicator_saveguard
136+
wp_table.expect_work_package_listed work_package_with_version
137+
wp_table.ensure_work_package_not_listed! work_package_without_version
141138

142-
filters.expect_filter_by("Version", "is (OR)", version.name)
139+
filters.open
143140

144-
filters.set_operator "Version", "is not"
141+
filters.expect_filter_by("Version", "is (OR)", version.name)
145142

146-
loading_indicator_saveguard
147-
wp_table.expect_work_package_listed work_package_without_version
148-
wp_table.ensure_work_package_not_listed! work_package_with_version
143+
filters.set_operator "Version", "is not"
144+
145+
loading_indicator_saveguard
146+
wp_table.expect_work_package_listed work_package_without_version
147+
wp_table.ensure_work_package_not_listed! work_package_with_version
148+
end
149+
end
150+
151+
context "in the global page" do
152+
shared_let(:user) { create(:user, preferences: { time_zone: "Etc/UTC" }) }
153+
shared_let(:project) { create(:project, members: { user => role }) }
154+
let(:wp_table) { Pages::WorkPackagesTable.new }
155+
156+
it "allows filtering, saving, retrieving and altering the saved filter" do
157+
expect_ng_option(
158+
page.find_by_id("values-version"),
159+
version,
160+
grouping: project.name,
161+
results_selector: "body"
162+
)
163+
164+
expect_ng_option(
165+
page.find_by_id("values-version"),
166+
shared_version,
167+
grouping: "Project N/A",
168+
results_selector: "body"
169+
)
170+
171+
expect_no_ng_option(
172+
page.find_by_id("values-version"),
173+
inaccessible_version,
174+
results_selector: "body"
175+
)
176+
end
149177
end
150178
end
151179

0 commit comments

Comments
 (0)