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 FilterNormalizerServiceSpec for status wrapped in an ID hash.
  • Add GraphQL mutation regression specs for both workItemSavedViewCreate and workItemSavedViewUpdate covering 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.

Merge request reports

Loading
Loading