spec/lib/release_tools/pre/release_note_spec.rb (73 lines of code) (raw):

# frozen_string_literal: true require 'spec_helper' describe ReleaseTools::Pre::ReleaseNote do subject(:release_note) do described_class.new(pipeline_id: pipeline.id, deploy_version: deploy_version) end let(:user) { create(:user) } let(:pipeline) { create(:pipeline, user: user) } let(:deploy_version) { '16.9.202402091206-d530de1fcd9.d71cbbdb4bc' } let(:definitions) do instance_spy(ReleaseTools::ReleaseManagers::Definitions) end let(:release_manager_schedule) do instance_spy( ReleaseTools::ReleaseManagers::Schedule, active_version: ReleaseTools::Version.new('16.9') ) end let(:monthly_issue) do instance_spy(ReleaseTools::MonthlyIssue, url: 'http://test.com') end let(:release_manager_definition) do ReleaseTools::ReleaseManagers::Definitions::User.new( user.username, { 'gitlab.com' => user.username } ) end before do allow(ReleaseTools::GitlabOpsClient) .to receive(:pipeline) .and_return(pipeline) allow(ReleaseTools::ReleaseManagers::Schedule) .to receive(:new) .and_return(release_manager_schedule) allow(ReleaseTools::ReleaseManagers::Definitions) .to receive(:new) .and_return(definitions) allow(definitions) .to receive(:find_user) .with(user.username, instance: :ops) .and_return(release_manager_definition) allow(ReleaseTools::MonthlyIssue) .to receive(:new) .and_return(monthly_issue) end describe '#execute' do it 'links the pipeline' do expect(ReleaseTools::GitlabClient) .to receive(:create_issue_note) .with( monthly_issue.project, hash_including(body: include("[pipeline](#{pipeline.web_url})")) ) without_dry_run do release_note.execute end end it 'pings the release manager based on the pipeline' do expect(ReleaseTools::GitlabClient) .to receive(:create_issue_note) .with(monthly_issue.project, hash_including(body: include(user.username))) without_dry_run do release_note.execute end end context 'with dry run mode' do it 'does not create note' do expect(ReleaseTools::GitlabClient) .not_to receive(:create_issue_note) release_note.execute end end end end