blob: 88647f23ad91a4b3a49199bbb34081f3c739a870 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe ::Ml::FindOrCreateModelVersionService, feature_category: :mlops do
let_it_be(:existing_version) { create(:ml_model_versions) }
let_it_be(:another_project) { create(:project) }
let_it_be(:user) { create(:user) }
let(:package) { nil }
let(:description) { nil }
let(:params) do
{
model_name: name,
version: version,
package: package,
description: description,
user: user
}
end
subject(:model_version) { described_class.new(project, params).execute }
describe '#execute' do
context 'when model version exists' do
let(:name) { existing_version.name }
let(:version) { existing_version.version }
let(:project) { existing_version.project }
it 'returns existing model version', :aggregate_failures do
expect { model_version }.to change { Ml::ModelVersion.count }.by(0)
expect { model_version }.to change { Ml::Candidate.count }.by(0)
expect(model_version).to eq(existing_version)
end
end
context 'when model does not exist' do
let(:project) { existing_version.project }
let(:name) { 'a_new_model' }
let(:version) { '2.0.0' }
it 'does not create a new model version', :aggregate_failures do
expect { model_version }.to change { Ml::ModelVersion.count }.by(0)
end
end
context 'when model exists and model version does not' do
let(:project) { existing_version.project }
let(:name) { existing_version.name }
let(:version) { '2.0.0' }
let(:description) { 'A model version' }
let(:package) { create(:ml_model_package, project: project, name: name, version: version) }
it 'creates a new model version', :aggregate_failures do
expect { model_version }.to change { Ml::ModelVersion.count }.by(1)
expect(model_version.version).to eq(version)
expect(model_version.model).to eq(existing_version.model)
expect(model_version.description).to eq(description)
end
end
end
end
|