diff options
Diffstat (limited to 'spec/models/ml/model_version_spec.rb')
-rw-r--r-- | spec/models/ml/model_version_spec.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/spec/models/ml/model_version_spec.rb b/spec/models/ml/model_version_spec.rb index 95d4a545f52..9db9f7e34ab 100644 --- a/spec/models/ml/model_version_spec.rb +++ b/spec/models/ml/model_version_spec.rb @@ -19,6 +19,7 @@ RSpec.describe Ml::ModelVersion, feature_category: :mlops do it { is_expected.to belong_to(:model) } it { is_expected.to belong_to(:package).class_name('Packages::MlModel::Package') } it { is_expected.to have_one(:candidate).class_name('Ml::Candidate') } + it { is_expected.to have_many(:metadata) } end describe 'validation' do @@ -99,6 +100,34 @@ RSpec.describe Ml::ModelVersion, feature_category: :mlops do end end + describe '#add_metadata' do + it 'accepts an array of metadata and persists it to the model version' do + input = [ + { project_id: base_project.id, key: 'tag1', value: 'value1' }, + { project_id: base_project.id, key: 'tag2', value: 'value2' } + ] + + expect { model_version1.add_metadata(input) }.to change { model_version1.metadata.count }.by(2) + end + + it 'raises an error when duplicate key names are supplied' do + input = [ + { project_id: base_project.id, key: 'tag1', value: 'value1' }, + { project_id: base_project.id, key: 'tag1', value: 'value2' } + ] + + expect { model_version1.add_metadata(input) }.to raise_error(ActiveRecord::RecordInvalid) + end + + it 'raises an error when validation fails' do + input = [ + { project_id: base_project.id, key: nil, value: 'value1' } + ] + + expect { model_version1.add_metadata(input) }.to raise_error(ActiveRecord::RecordInvalid) + end + end + describe '#find_or_create!' do let_it_be(:existing_model_version) { create(:ml_model_versions, model: model1, version: '1.0.0') } |