spec/lib/release_tools/version_client_spec.rb (52 lines of code) (raw):

# frozen_string_literal: true require 'spec_helper' describe ReleaseTools::VersionClient do subject(:version_client) { described_class } describe '.versions' do it 'returns an Array of version entries', vcr: { cassette_name: 'versions/list' } do versions = version_client.versions expect(versions.length).to eq(150) expect(versions.first.version).to eq('17.9.7') # The first entry is NOT always the latest version end end describe '.create_version' do it 'creates new version', vcr: { cassette_name: 'versions/create' } do version = version_client.create_version('42.0.0') expect(version.version).to eq('42.0.0') end context 'with patch releases', vcr: { cassette_name: 'versions/create_patch' } do # There is no difference in the response between creating a patch version and a non-patch version. The only difference # is that the previous version (e.g. 42.0.0 and 42.0.1) is marked as vulnerable. However, it is done by the server # side, so we don't test it from the client side. it 'create regular patch version' do version = version_client.create_version('42.0.1', version_type: :patch_regular) expect(version.version).to eq('42.0.1') expect(WebMock).to have_requested(:post, "https://version.gitlab.com/api/v1/versions") .with( body: { version: '42.0.1', security_release_type: 'non_critical' } ) end it 'create critical patch version' do version = version_client.create_version('42.0.1', version_type: :patch_critical) expect(version.version).to eq('42.0.1') expect(WebMock).to have_requested(:post, "https://version.gitlab.com/api/v1/versions") .with( body: { version: '42.0.1', security_release_type: 'critical' } ) end end context 'when an invalid version_type is provided' do it 'does not send any request' do expect { version_client.create_version('42.0.1', version_type: :something) }.to raise_error(ArgumentError) end end end describe '.get_version' do it 'gets single version', vcr: { cassette_name: 'versions/get' } do version = version_client.get_version('16.11.0') expect(version.version).to eq('16.11.0') end end end