Disabling issues feature quietly disables Quality Management

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Originally raised by @brad and @wwjenkins in https://gitlab.slack.com/archives/C0411N5KAEA/p1668783010063879 (internal)

The customer was reporting that all projects in one group weren't showing the Test Cases menu and visiting the URL gave 404.

irb(main):001:0> project = Project.find_by_id(8598)
=> #<Project id:8598 group/project>
irb(main):002:0> project.licensed_feature_available?(:quality_management)
=> true
irb(main):003:0> project.feature_available?(:quality_management)
=> true
irb(main):004:0> project.feature_available?(:issues)
=> false

irb(main):005:0> user = User.find 476
=> #<User id:476 @admin_user>
irb(main):006:0> Ability.allowed?(user, :read_issue, project)
=> false
!context.project.licensed_feature_available?(:quality_management) || !can?(context.current_user, :read_issue, context.project)
  • What this says is hide the menu item if:
    • current user cannot read_issue in project (tried with admin and owner, both false)
    • if Quality Management isn't available for that project

When Issues feature is disabled, all read_issue authorisation checks return false by default.

In our documentation, we don't mention that disabling issues feature renders Quality Management unusable.

https://docs.gitlab.com/ee/user/project/settings/#project-feature-settings

When you disable a feature, the following additional features are also disabled:

    If you disable the Issues feature, project users cannot use:
        Issue Boards
        Service Desk
        Project users can still access Milestones from merge requests.
Edited by 🤖 GitLab Bot 🤖