diff options
Diffstat (limited to 'spec/models/ci/catalog/resources/version_spec.rb')
-rw-r--r-- | spec/models/ci/catalog/resources/version_spec.rb | 48 |
1 files changed, 25 insertions, 23 deletions
diff --git a/spec/models/ci/catalog/resources/version_spec.rb b/spec/models/ci/catalog/resources/version_spec.rb index bacaa6355fe..c91b2c71241 100644 --- a/spec/models/ci/catalog/resources/version_spec.rb +++ b/spec/models/ci/catalog/resources/version_spec.rb @@ -119,29 +119,6 @@ RSpec.describe Ci::Catalog::Resources::Version, type: :model, feature_category: end end - describe '#update_catalog_resource' do - let_it_be(:release) { create(:release, project: project1, tag: 'v1') } - let(:version) { build(:ci_catalog_resource_version, catalog_resource: resource1, release: release) } - - context 'when a version is created' do - it 'calls update_catalog_resource' do - expect(version).to receive(:update_catalog_resource).once - - version.save! - end - end - - context 'when a version is destroyed' do - it 'calls update_catalog_resource' do - version.save! - - expect(version).to receive(:update_catalog_resource).once - - version.destroy! - end - end - end - describe '#name' do it 'is equivalent to release.tag' do v1_0.release.update!(name: 'Release v1.0') @@ -172,4 +149,29 @@ RSpec.describe Ci::Catalog::Resources::Version, type: :model, feature_category: expect(v1_1.readme.data).to include('Readme v1.1') end end + + describe 'synchronizing released_at with `releases` table using model callbacks' do + let_it_be(:project) { create(:project) } + let_it_be(:resource) { create(:ci_catalog_resource, project: project) } + + let_it_be_with_reload(:release) do + create(:release, :with_catalog_resource_version, project: project, tag: 'v1', released_at: '2023-01-01T00:00:00Z') + end + + let(:version) { release.catalog_resource_version } + + context 'when the version is created' do + it 'updates released_at to match the release' do + expect(version.read_attribute(:released_at)).to eq(release.released_at) + end + end + + context 'when release.released_at is updated' do + it 'updates released_at to match the release' do + release.update!(released_at: '2023-02-02T00:00:00Z') + + expect(version.read_attribute(:released_at)).to eq(release.released_at) + end + end + end end |