Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/ml/model_version_spec.rb')
-rw-r--r--spec/models/ml/model_version_spec.rb29
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') }