spec/lib/release_tools/internal_release/metadata_spec.rb (118 lines of code) (raw):

# frozen_string_literal: true require 'spec_helper' describe ReleaseTools::InternalRelease::Metadata do subject(:metadata) { described_class.new(version: internal_version) } let(:commit) { create(:commit, id: "123") } let(:gitlab_client) { stub_const('ReleaseTools::GitlabClient', spy) } let(:internal_version) { '16.1.0-internal0' } let(:release_metadata) { ReleaseTools::ReleaseMetadata.new } let(:stable_branch) { '16-1-stable' } let(:stable_branch_gitlab) { '16-1-stable-ee' } let(:uploader) { stub_const('ReleaseTools::ReleaseMetadataUploader', spy) } describe '#record' do before do allow(gitlab_client).to receive(:commit).and_return(commit) allow(ReleaseTools::ReleaseMetadata).to receive(:new).and_return(release_metadata) allow(ReleaseTools::ReleaseMetadataUploader).to receive(:new).and_return(uploader) allow(uploader).to receive(:upload) end context 'when recording metadata about an internal version' do it 'gets the latest commit on the stable branches for every project under managed versioning' do expect(gitlab_client) .to receive(:commit) .with("gitlab-org/security/charts/components/images", ref: stable_branch) expect(gitlab_client) .to receive(:commit) .with("gitlab-org/security/gitaly", ref: stable_branch) expect(gitlab_client) .to receive(:commit) .with("gitlab-org/security/gitlab", ref: stable_branch_gitlab) expect(gitlab_client) .to receive(:commit) .with("gitlab-org/security/gitlab-pages", ref: stable_branch) expect(gitlab_client) .to receive(:commit) .with("gitlab-org/security/omnibus-gitlab", ref: stable_branch) metadata.record end it 'adds the release metadata' do expect(release_metadata) .to receive(:add_release) .with( { name: 'gitlab-ee', version: '16.1.0-internal0', sha: '123', ref: '123', tag: false } ) expect(release_metadata) .to receive(:add_release) .with( { name: 'cng-ee', version: '16.1.0-internal0', sha: '123', ref: '123', tag: false } ) expect(release_metadata) .to receive(:add_release) .with( { name: 'gitaly', version: '16.1.0-internal0', sha: '123', ref: '123', tag: false } ) expect(release_metadata) .to receive(:add_release) .with( { name: 'gitlab-pages', version: '16.1.0-internal0', sha: '123', ref: '123', tag: false } ) expect(release_metadata) .to receive(:add_release) .with( { name: 'omnibus-gitlab-ee', version: '16.1.0-internal0', sha: '123', ref: '123', tag: false } ) without_dry_run do metadata.record end end it 'uploads the release metadata' do expect(uploader) .to receive(:upload) .with( "16.1.0-internal0", release_metadata, auto_deploy: false ) without_dry_run do metadata.record end end context 'when it is a dry run' do it 'does not upload the release metadata' do expect(uploader) .not_to receive(:upload) metadata.record end end end end end