diff options
Diffstat (limited to 'spec/models/ci/runner_spec.rb')
-rw-r--r-- | spec/models/ci/runner_spec.rb | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb index 8a1dcbfbdeb..74d8b012b29 100644 --- a/spec/models/ci/runner_spec.rb +++ b/spec/models/ci/runner_spec.rb @@ -1002,8 +1002,11 @@ RSpec.describe Ci::Runner do describe '#heartbeat' do let(:runner) { create(:ci_runner, :project) } let(:executor) { 'shell' } + let(:version) { '15.0.1' } - subject { runner.heartbeat(architecture: '18-bit', config: { gpus: "all" }, executor: executor) } + subject(:heartbeat) do + runner.heartbeat(architecture: '18-bit', config: { gpus: "all" }, executor: executor, version: version) + end context 'when database was updated recently' do before do @@ -1013,7 +1016,7 @@ RSpec.describe Ci::Runner do it 'updates cache' do expect_redis_update - subject + heartbeat end end @@ -1047,7 +1050,7 @@ RSpec.describe Ci::Runner do it 'updates with expected executor type' do expect_redis_update - subject + heartbeat expect(runner.reload.read_attribute(:executor_type)).to eq(expected_executor_type) end @@ -1059,6 +1062,18 @@ RSpec.describe Ci::Runner do end end end + + context 'with updated version' do + before do + runner.version = '1.2.3' + end + + it 'updates version components with new version' do + heartbeat + + expect(runner.reload.read_attribute(:semver)).to eq '15.0.1' + end + end end def expect_redis_update @@ -1069,10 +1084,11 @@ RSpec.describe Ci::Runner do end def does_db_update - expect { subject }.to change { runner.reload.read_attribute(:contacted_at) } + expect { heartbeat }.to change { runner.reload.read_attribute(:contacted_at) } .and change { runner.reload.read_attribute(:architecture) } .and change { runner.reload.read_attribute(:config) } .and change { runner.reload.read_attribute(:executor_type) } + .and change { runner.reload.read_attribute(:semver) } end end @@ -1683,4 +1699,42 @@ RSpec.describe Ci::Runner do end end end + + describe '.save' do + context 'with initial value' do + let(:runner) { create(:ci_runner, version: 'v1.2.3') } + + it 'updates semver column' do + expect(runner.semver).to eq '1.2.3' + end + end + + context 'with no initial version value' do + let(:runner) { build(:ci_runner) } + + context 'with version change' do + subject(:update_version) { runner.update!(version: new_version) } + + context 'to invalid version' do + let(:new_version) { 'invalid version' } + + it 'updates semver column to nil' do + update_version + + expect(runner.reload.semver).to be_nil + end + end + + context 'to v14.10.1' do + let(:new_version) { 'v14.10.1' } + + it 'updates semver column' do + update_version + + expect(runner.reload.semver).to eq '14.10.1' + end + end + end + end + end end |