Organize specs issue build service around features not roles
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.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Peter Leitzen