Skip to content

GraphQL field `Milestone.report` should never raise an exception

The GraphQL field Milestone.report (along with all fields implemented by ee/app/graphql/resolvers/timebox_report_resolver.rb) is implemented incorrectly.

Specifically, resolvers should be pure functions, and never raise for expected states. The field here raises if:

  • the milestone does not have a due date set
  • the milestone does not have a start date set
  • the license does not support burnup reports
  • other states?

We should not raise exceptions here - especially not when milestones lack the date fields, which is a completely normal and legal state.