Skip to content

namespace contracts and services to be under Backlogs#23467

Open
toy wants to merge 3 commits into
devfrom
namespaces-contracts-and-services-in-backlogs
Open

namespace contracts and services to be under Backlogs#23467
toy wants to merge 3 commits into
devfrom
namespaces-contracts-and-services-in-backlogs

Conversation

@toy
Copy link
Copy Markdown
Contributor

@toy toy commented May 29, 2026

While working on https://community.openproject.org/wp/74386:

moved all contracts and services under Backlogs namespace
compacted Backlogs::BacklogBuckets… to Backlogs::Buckets… (also for controller)
renamed Stories::UpdateService to Backlogs::WorkPackages::UpdateService

@@ -28,7 +28,7 @@
# See COPYRIGHT and LICENSE files for more details.
#++

module Sprints
module Backlogs::Buckets
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should have matched with modules/backlogs/app/contracts/backlogs/sprints/update_contract.rb instead

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes - rename heuristics are a bit wonky!

Comment on lines 30 to +31

module BacklogBuckets
module Backlogs::Sprints
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should have matched with modules/backlogs/app/contracts/backlogs/buckets/update_contract.rb instead

@toy toy force-pushed the namespaces-contracts-and-services-in-backlogs branch 2 times, most recently from 9bdf3b9 to daaabcd Compare May 29, 2026 16:25
@toy toy marked this pull request as ready for review May 29, 2026 16:25
@toy toy force-pushed the namespaces-contracts-and-services-in-backlogs branch from daaabcd to 2c090cd Compare May 29, 2026 17:00
@toy toy requested a review from Copilot May 29, 2026 17:03
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates Backlogs-related contracts and services under the Backlogs::... namespace (instead of generic/top-level namespaces) and renames the “backlog buckets” controller/routes to a simpler buckets naming, updating all call sites and specs accordingly.

Changes:

  • Namespace Backlogs services/contracts under Backlogs::WorkPackages, Backlogs::Sprints, Backlogs::Buckets, and Backlogs::Projects.
  • Rename bucket routes/controller from backlog_buckets / Backlogs::BacklogBucketsController to buckets / Backlogs::BucketsController, updating permission mappings and route helpers.
  • Update specs and introduce shared contract spec contexts to reduce duplication.

Reviewed changes

Copilot reviewed 62 out of 64 changed files in this pull request and generated no comments.

Show a summary per file
File Description
modules/backlogs/spec/services/backlogs/work_packages/update_service_spec.rb Updates spec to new Backlogs::WorkPackages::UpdateService constant.
modules/backlogs/spec/services/backlogs/work_packages/rebuild_positions_service_integration_spec.rb Updates integration spec to new Backlogs::WorkPackages::RebuildPositionsService constant.
modules/backlogs/spec/services/backlogs/sprints/start_service_spec.rb Updates spec to Backlogs::Sprints::StartService.
modules/backlogs/spec/services/backlogs/sprints/set_attributes_service_spec.rb Updates spec and contract double to Backlogs::Sprints namespace.
modules/backlogs/spec/services/backlogs/sprints/finish_service_spec.rb Updates spec to Backlogs::Sprints::FinishService.
modules/backlogs/spec/services/backlogs/sprints/create_service_spec.rb Updates spec to Backlogs::Sprints::CreateService.
modules/backlogs/spec/services/backlogs/buckets/update_service_spec.rb Updates spec to Backlogs::Buckets::UpdateService.
modules/backlogs/spec/services/backlogs/buckets/set_attributes_service_spec.rb Updates spec and contract double to Backlogs::Buckets namespace.
modules/backlogs/spec/services/backlogs/buckets/delete_service_spec.rb Updates spec to Backlogs::Buckets::DeleteService.
modules/backlogs/spec/services/backlogs/buckets/create_service_spec.rb Updates spec to Backlogs::Buckets::CreateService.
modules/backlogs/spec/routing/backlogs/buckets_routing_spec.rb Updates routing expectations to /backlogs/buckets and new route helpers.
modules/backlogs/spec/controllers/projects/settings/backlogs_controller_spec.rb Updates expected contract class to Backlogs::Projects::BacklogsTypesAndStatusesContract.
modules/backlogs/spec/controllers/projects/settings/backlog_sharings_controller_spec.rb Updates expected contract class to Backlogs::Projects::BacklogSettingsContract.
modules/backlogs/spec/controllers/backlogs/work_packages_controller_spec.rb Updates mocked update service to Backlogs::WorkPackages::UpdateService.
modules/backlogs/spec/controllers/backlogs/sprints_controller_spec.rb Updates mocked sprint services to Backlogs::Sprints::*Service.
modules/backlogs/spec/controllers/backlogs/buckets_controller_spec.rb Updates described controller to Backlogs::BucketsController.
modules/backlogs/spec/contracts/backlogs/sprints/update_contract_spec.rb Updates contract spec to Backlogs::Sprints::UpdateContract.
modules/backlogs/spec/contracts/backlogs/sprints/start_contract_spec.rb Updates contract spec to Backlogs::Sprints::StartContract.
modules/backlogs/spec/contracts/backlogs/sprints/shared_contract_examples.rb Adds shared sprint contract examples for spec reuse.
modules/backlogs/spec/contracts/backlogs/sprints/finish_contract_spec.rb Updates contract spec to Backlogs::Sprints::FinishContract.
modules/backlogs/spec/contracts/backlogs/sprints/create_contract_spec.rb Updates contract spec to Backlogs::Sprints::CreateContract.
modules/backlogs/spec/contracts/backlogs/projects/backlogs_types_and_statuses_contract_spec.rb Updates contract spec to Backlogs::Projects::BacklogsTypesAndStatusesContract.
modules/backlogs/spec/contracts/backlogs/projects/backlog_settings_contract_spec.rb Updates contract spec to Backlogs::Projects::BacklogSettingsContract.
modules/backlogs/spec/contracts/backlogs/buckets/update_contract_spec.rb Updates contract spec to Backlogs::Buckets::UpdateContract.
modules/backlogs/spec/contracts/backlogs/buckets/shared_contract_examples.rb Adds shared backlog bucket contract examples for spec reuse.
modules/backlogs/spec/contracts/backlogs/buckets/delete_contract_spec.rb Updates contract spec to Backlogs::Buckets::DeleteContract.
modules/backlogs/spec/contracts/backlogs/buckets/create_contract_spec.rb Updates contract spec to Backlogs::Buckets::CreateContract.
modules/backlogs/lib/open_project/backlogs/engine.rb Updates permission mapping to new backlogs/buckets controller path.
modules/backlogs/config/routes.rb Renames resource routes from backlog_buckets to buckets.
modules/backlogs/app/services/backlogs/work_packages/update_service.rb Renames service constant to Backlogs::WorkPackages::UpdateService and qualifies ::WorkPackages::UpdateService.
modules/backlogs/app/services/backlogs/work_packages/rebuild_positions_service.rb Renames service constant to Backlogs::WorkPackages::RebuildPositionsService.
modules/backlogs/app/services/backlogs/sprints/update_service.rb Renames service constant to Backlogs::Sprints::UpdateService.
modules/backlogs/app/services/backlogs/sprints/start_service.rb Renames service constant to Backlogs::Sprints::StartService and updates default contract reference.
modules/backlogs/app/services/backlogs/sprints/set_attributes_service.rb Moves set-attributes service under Backlogs::Sprints.
modules/backlogs/app/services/backlogs/sprints/finish_service.rb Renames service constant to Backlogs::Sprints::FinishService and qualifies referenced contracts/services.
modules/backlogs/app/services/backlogs/sprints/create_service.rb Renames service constant to Backlogs::Sprints::CreateService.
modules/backlogs/app/services/backlogs/buckets/update_service.rb Renames service constant to Backlogs::Buckets::UpdateService.
modules/backlogs/app/services/backlogs/buckets/set_attributes_service.rb Renames service constant to Backlogs::Buckets::SetAttributesService.
modules/backlogs/app/services/backlogs/buckets/delete_service.rb Renames service constant to Backlogs::Buckets::DeleteService and qualifies referenced contracts/services.
modules/backlogs/app/services/backlogs/buckets/create_service.rb Renames service constant to Backlogs::Buckets::CreateService.
modules/backlogs/app/controllers/projects/settings/backlogs_controller.rb Updates referenced contracts/services to Backlogs::... namespace.
modules/backlogs/app/controllers/projects/settings/backlog_sharings_controller.rb Updates referenced contract to Backlogs::Projects::BacklogSettingsContract.
modules/backlogs/app/controllers/backlogs/work_packages_controller.rb Updates update service call to Backlogs::WorkPackages::UpdateService.
modules/backlogs/app/controllers/backlogs/sprints_controller.rb Updates sprint services and contracts to Backlogs::Sprints::*.
modules/backlogs/app/controllers/backlogs/buckets_controller.rb Renames controller class to Backlogs::BucketsController and updates referenced services.
modules/backlogs/app/controllers/backlogs/backlog_controller.rb Qualifies WorkPackages::WithSplitView with :: to avoid namespace ambiguity.
modules/backlogs/app/contracts/backlogs/work_packages/move_to_backlog_contract.rb Moves contract under Backlogs::WorkPackages.
modules/backlogs/app/contracts/backlogs/work_packages/move_between_sprints_contract.rb Moves contract under Backlogs::WorkPackages.
modules/backlogs/app/contracts/backlogs/sprints/update_contract.rb Moves contract under Backlogs::Sprints.
modules/backlogs/app/contracts/backlogs/sprints/start_contract.rb Moves contract under Backlogs::Sprints.
modules/backlogs/app/contracts/backlogs/sprints/finish_contract.rb Moves contract under Backlogs::Sprints.
modules/backlogs/app/contracts/backlogs/sprints/create_contract.rb Moves contract under Backlogs::Sprints.
modules/backlogs/app/contracts/backlogs/sprints/base_contract.rb Moves base contract under Backlogs::Sprints.
modules/backlogs/app/contracts/backlogs/projects/backlogs_types_and_statuses_contract.rb Moves contract under Backlogs::Projects.
modules/backlogs/app/contracts/backlogs/projects/backlog_settings_contract.rb Moves contract under Backlogs::Projects.
modules/backlogs/app/contracts/backlogs/buckets/update_contract.rb Moves contract under Backlogs::Buckets.
modules/backlogs/app/contracts/backlogs/buckets/delete_contract.rb Moves contract under Backlogs::Buckets.
modules/backlogs/app/contracts/backlogs/buckets/create_contract.rb Moves contract under Backlogs::Buckets.
modules/backlogs/app/contracts/backlogs/buckets/base_contract.rb Renames base contract constant to Backlogs::Buckets::BaseContract.
modules/backlogs/app/components/backlogs/sprint_component.rb Updates contract references to Backlogs::Sprints::StartContract.
modules/backlogs/app/components/backlogs/bucket_form_component.rb Updates route helper calls to new buckets helpers.
modules/backlogs/app/components/backlogs/bucket_destroy_modal_component.rb Updates destroy form action to new project_backlogs_bucket_path.
modules/backlogs/app/components/backlogs/bucket_component.html.erb Updates dialog route helpers to new buckets helpers.
modules/backlogs/app/components/backlogs/backlog_component.html.erb Updates “new bucket” link to new_dialog_project_backlogs_buckets_path.

@toy toy force-pushed the namespaces-contracts-and-services-in-backlogs branch from 2c090cd to 4df5f01 Compare May 29, 2026 17:15
@toy toy force-pushed the namespaces-contracts-and-services-in-backlogs branch from 4df5f01 to a5466fd Compare May 29, 2026 17:20
@toy toy force-pushed the namespaces-contracts-and-services-in-backlogs branch from a5466fd to e46f409 Compare May 29, 2026 17:40
Copy link
Copy Markdown
Contributor

@myabc myabc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💯 👍🏻 for the Backlogs::BucketControllerBacklogs::BucketsController rename and the simpler route names, etc.

Since we're not calling isolate_namespace in the Backlogs engine we don't need to namespace code. I'm personally fine with it, but I'd want to ensure we're consistent across OpenProject. As such, a second or third opinion from someone in the stream would be excellent!

@@ -54,7 +54,7 @@ See COPYRIGHT and LICENSE files for more details.
render Primer::Beta::Button.new(
tag: :a,
label: BacklogBucket.human_model_name,
href: new_dialog_project_backlogs_backlog_buckets_path(project, all_backlogs_params),
href: new_dialog_project_backlogs_buckets_path(project, all_backlogs_params),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻

@@ -28,7 +28,7 @@
# See COPYRIGHT and LICENSE files for more details.
#++

module Sprints
module Backlogs::Buckets
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes - rename heuristics are a bit wonky!

Comment thread modules/backlogs/app/services/backlogs/sprints/finish_service.rb
@toy
Copy link
Copy Markdown
Contributor Author

toy commented May 29, 2026

My goal with namespace was about clarity what is only part of the module and what is not, though this PR doesn't namespace everything, as at least models are not namespaced

@myabc
Copy link
Copy Markdown
Contributor

myabc commented May 29, 2026

as at least models are not namespaced

👍🏻 I would definitely hold off on that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants