diff options
Diffstat (limited to 'spec/services/issues/build_service_spec.rb')
-rw-r--r-- | spec/services/issues/build_service_spec.rb | 70 |
1 files changed, 49 insertions, 21 deletions
diff --git a/spec/services/issues/build_service_spec.rb b/spec/services/issues/build_service_spec.rb index 93eef8a2732..16433d49ca1 100644 --- a/spec/services/issues/build_service_spec.rb +++ b/spec/services/issues/build_service_spec.rb @@ -3,11 +3,14 @@ require 'spec_helper.rb' RSpec.describe Issues::BuildService do - let(:project) { create(:project, :repository) } - let(:user) { create(:user) } - - before do - project.add_developer(user) + let_it_be(:project) { create(:project, :repository) } + let_it_be(:developer) { create(:user) } + let_it_be(:guest) { create(:user) } + let(:user) { developer } + + before_all do + project.add_developer(developer) + project.add_guest(guest) end def build_issue(issue_params = {}) @@ -134,31 +137,56 @@ RSpec.describe Issues::BuildService do end describe '#execute' do - it 'builds a new issues with given params' do - milestone = create(:milestone, project: project) - issue = build_issue(milestone_id: milestone.id) + context 'as developer' do + it 'builds a new issues with given params' do + milestone = create(:milestone, project: project) + issue = build_issue(milestone_id: milestone.id) - expect(issue.milestone).to eq(milestone) - end + expect(issue.milestone).to eq(milestone) + end - it 'sets milestone to nil if it is not available for the project' do - milestone = create(:milestone, project: create(:project)) - issue = build_issue(milestone_id: milestone.id) + it 'sets milestone to nil if it is not available for the project' do + milestone = create(:milestone, project: create(:project)) + issue = build_issue(milestone_id: milestone.id) - expect(issue.milestone).to be_nil + expect(issue.milestone).to be_nil + end end - context 'setting issue type' do - it 'sets the issue_type on the issue' do - issue = build_issue(issue_type: 'incident') + context 'as guest' do + let(:user) { guest } - expect(issue.issue_type).to eq('incident') + it 'cannot set milestone' do + milestone = create(:milestone, project: project) + issue = build_issue(milestone_id: milestone.id) + + expect(issue.milestone).to be_nil end - it 'defaults to issue if issue_type not given' do - issue = build_issue + context 'setting issue type' do + it 'defaults to issue if issue_type not given' do + issue = build_issue + + expect(issue).to be_issue + end + + it 'sets issue' do + issue = build_issue(issue_type: 'issue') + + expect(issue).to be_issue + end + + it 'sets incident' do + issue = build_issue(issue_type: 'incident') - expect(issue.issue_type).to eq('issue') + expect(issue).to be_incident + end + + it 'cannot set invalid type' do + expect do + build_issue(issue_type: 'invalid type') + end.to raise_error(ArgumentError, "'invalid type' is not a valid issue_type") + end end end end |