Skip to content

Organize specs issue build service around features not roles

Peter Leitzen requested to merge pl-spec-issues-build-tiny-refactor into master

What does this MR do and why?

This MR refactors some specs for issue build service and cluster examples by features (e.g. milestone, issue_type) and not by role.

This re-organization allows to tweak specs easily when permissions are changed - which is will happen soon for incidents in !69350 (merged).

Stumbled upon while working on !69350 (merged).

How to set up and validate locally

bin/rspec ./spec/services/issues/build_service_spec.rb

Format documentation

Before

Issues::BuildService
  ...
  #execute
    as developer
      builds a new issues with given params
      sets milestone to nil if it is not available for the project
      when issue_type is incident
        sets the correct issue type
    as guest
      cannot set milestone
      setting issue type
        cannot set invalid issue type
        with a corresponding WorkItem::Type
          issue_type: nil, work_item_type_id: type_issue_id, resulting_issue_type: "issue"
            behaves like builds an issue
              is expected to eq 37
          issue_type: "issue", work_item_type_id: type_issue_id, resulting_issue_type: "issue"
            behaves like builds an issue
              is expected to eq 37
          issue_type: "incident", work_item_type_id: type_incident_id, resulting_issue_type: "incident"
            behaves like builds an issue
              is expected to eq 38
          issue_type: "test_case", work_item_type_id: type_issue_id, resulting_issue_type: "issue"
            behaves like builds an issue
              is expected to eq 37
          issue_type: "requirement", work_item_type_id: type_issue_id, resulting_issue_type: "issue"
            behaves like builds an issue
              is expected to eq 37
          issue_type: "invalid", work_item_type_id: type_issue_id, resulting_issue_type: "issue"
            behaves like builds an issue
              is expected to eq 37

After

Issues::BuildService
  ...
  #execute
    setting milestone
      when developer
        builds a new issues with given params
        sets milestone to nil if it is not available for the project
      when guest
        cannot set milestone
    setting issue type
      with a corresponding WorkItem::Type
        issue_type: nil, current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"
          builds an issue
        issue_type: "issue", current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"
          builds an issue
        issue_type: "incident", current_user: guest, work_item_type_id: type_incident_id, resulting_issue_type: "incident"
          builds an issue
        issue_type: "test_case", current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"
          builds an issue
        issue_type: "requirement", current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"
          builds an issue
        issue_type: "invalid", current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"
          builds an issue
        issue_type: "project", current_user: guest, work_item_type_id: type_issue_id, resulting_issue_type: "issue"
          builds an issue

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Peter Leitzen

Merge request reports

Loading