Commit e9db56dc authored by Igor Drozdov's avatar Igor Drozdov

Merge branch 'pl-spec-issues-build-tiny-refactor' into 'master'

Organize specs issue build service around features not roles

See merge request gitlab-org/gitlab!72609
parents c6479a09 48110d21
...@@ -140,14 +140,13 @@ RSpec.describe Issues::BuildService do ...@@ -140,14 +140,13 @@ RSpec.describe Issues::BuildService do
end end
describe '#execute' do describe '#execute' do
context 'as developer' do describe 'setting milestone' do
context 'when developer' do
it 'builds a new issues with given params' do it 'builds a new issues with given params' do
milestone = create(:milestone, project: project) milestone = create(:milestone, project: project)
issue = build_issue(milestone_id: milestone.id) issue = build_issue(milestone_id: milestone.id)
expect(issue.milestone).to eq(milestone) expect(issue.milestone).to eq(milestone)
expect(issue.issue_type).to eq('issue')
expect(issue.work_item_type.base_type).to eq('issue')
end end
it 'sets milestone to nil if it is not available for the project' do it 'sets milestone to nil if it is not available for the project' do
...@@ -156,18 +155,9 @@ RSpec.describe Issues::BuildService do ...@@ -156,18 +155,9 @@ RSpec.describe Issues::BuildService do
expect(issue.milestone).to be_nil expect(issue.milestone).to be_nil
end end
context 'when issue_type is incident' do
it 'sets the correct issue type' do
issue = build_issue(issue_type: 'incident')
expect(issue.issue_type).to eq('incident')
expect(issue.work_item_type.base_type).to eq('incident')
end
end
end end
context 'as guest' do context 'when guest' do
let(:user) { guest } let(:user) { guest }
it 'cannot set milestone' do it 'cannot set milestone' do
...@@ -176,38 +166,35 @@ RSpec.describe Issues::BuildService do ...@@ -176,38 +166,35 @@ RSpec.describe Issues::BuildService do
expect(issue.milestone).to be_nil expect(issue.milestone).to be_nil
end end
context 'setting issue type' do
shared_examples 'builds an issue' do
specify do
issue = build_issue(issue_type: issue_type)
expect(issue.issue_type).to eq(resulting_issue_type)
expect(issue.work_item_type_id).to eq(work_item_type_id)
end end
end end
it 'cannot set invalid issue type' do describe 'setting issue type' do
issue = build_issue(issue_type: 'project')
expect(issue).to be_issue
end
context 'with a corresponding WorkItem::Type' do context 'with a corresponding WorkItem::Type' do
let_it_be(:type_issue_id) { WorkItem::Type.default_issue_type.id } let_it_be(:type_issue_id) { WorkItem::Type.default_issue_type.id }
let_it_be(:type_incident_id) { WorkItem::Type.default_by_type(:incident).id } let_it_be(:type_incident_id) { WorkItem::Type.default_by_type(:incident).id }
where(:issue_type, :work_item_type_id, :resulting_issue_type) do where(:issue_type, :current_user, :work_item_type_id, :resulting_issue_type) do
nil | ref(:type_issue_id) | 'issue' nil | ref(:guest) | ref(:type_issue_id) | 'issue'
'issue' | ref(:type_issue_id) | 'issue' 'issue' | ref(:guest) | ref(:type_issue_id) | 'issue'
'incident' | ref(:type_incident_id) | 'incident' 'incident' | ref(:guest) | ref(:type_incident_id) | 'incident'
'test_case' | ref(:type_issue_id) | 'issue' # update once support for test_case is enabled # update once support for test_case is enabled
'requirement' | ref(:type_issue_id) | 'issue' # update once support for requirement is enabled 'test_case' | ref(:guest) | ref(:type_issue_id) | 'issue'
'invalid' | ref(:type_issue_id) | 'issue' # update once support for requirement is enabled
'requirement' | ref(:guest) | ref(:type_issue_id) | 'issue'
'invalid' | ref(:guest) | ref(:type_issue_id) | 'issue'
# ensure that we don't set a value which has a permission check but is an invalid issue type
'project' | ref(:guest) | ref(:type_issue_id) | 'issue'
end end
with_them do with_them do
it_behaves_like 'builds an issue' let(:user) { current_user }
it 'builds an issue' do
issue = build_issue(issue_type: issue_type)
expect(issue.issue_type).to eq(resulting_issue_type)
expect(issue.work_item_type_id).to eq(work_item_type_id)
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment