Loading
Preserve saved view status filters supplied by ID
What does this MR do and why?
When saving a work item saved view with a status filter given by Global ID (status: { id: "gid://..." }), the filter is currently silently dropped.
StatusFilterInputType uses prepare on :id to resolve the GlobalID into a WorkItems::Statuses::Status object, so GraphQL passes { id: <Status object> } to FilterNormalizerService. The normalizer previously only recognized a bare Status object or a hash containing :name, causing any status filter provided by ID to be skipped.
This MR unwraps the prepared Status object from the ID hash before normalization, ensuring it is preserved with input_format: :id.
- Add unit test coverage in
FilterNormalizerServiceSpecfor status wrapped in an ID hash. - Add GraphQL mutation regression specs for both
workItemSavedViewCreateandworkItemSavedViewUpdatecovering system-defined and custom status Global IDs.
Closes #638187 (closed)
MR acceptance checklist
- Conforms to GitLab Ruby style guidelines.
- Includes unit and GraphQL regression specs.
- Preserves existing name-based status filter behavior.