diff options
Diffstat (limited to 'spec/helpers/projects')
-rw-r--r-- | spec/helpers/projects/ml/experiments_helper_spec.rb | 43 | ||||
-rw-r--r-- | spec/helpers/projects/project_members_helper_spec.rb | 10 |
2 files changed, 37 insertions, 16 deletions
diff --git a/spec/helpers/projects/ml/experiments_helper_spec.rb b/spec/helpers/projects/ml/experiments_helper_spec.rb index e6959a03c4a..2b70201456a 100644 --- a/spec/helpers/projects/ml/experiments_helper_spec.rb +++ b/spec/helpers/projects/ml/experiments_helper_spec.rb @@ -9,7 +9,7 @@ RSpec.describe Projects::Ml::ExperimentsHelper, feature_category: :mlops do let_it_be(:project) { create(:project, :private) } let_it_be(:experiment) { create(:ml_experiments, user_id: project.creator, project: project) } let_it_be(:candidate0) do - create(:ml_candidates, experiment: experiment, user: project.creator).tap do |c| + create(:ml_candidates, :with_artifact, experiment: experiment, user: project.creator).tap do |c| c.params.build([{ name: 'param1', value: 'p1' }, { name: 'param2', value: 'p2' }]) c.metrics.create!( [{ name: 'metric1', value: 0.1 }, { name: 'metric2', value: 0.2 }, { name: 'metric3', value: 0.3 }] @@ -18,7 +18,7 @@ RSpec.describe Projects::Ml::ExperimentsHelper, feature_category: :mlops do end let_it_be(:candidate1) do - create(:ml_candidates, experiment: experiment, user: project.creator).tap do |c| + create(:ml_candidates, experiment: experiment, user: project.creator, name: 'candidate1').tap do |c| c.params.build([{ name: 'param2', value: 'p3' }, { name: 'param3', value: 'p4' }]) c.metrics.create!(name: 'metric3', value: 0.4) end @@ -27,17 +27,39 @@ RSpec.describe Projects::Ml::ExperimentsHelper, feature_category: :mlops do let_it_be(:candidates) { [candidate0, candidate1] } describe '#candidates_table_items' do - subject { helper.candidates_table_items(candidates) } + subject { Gitlab::Json.parse(helper.candidates_table_items(candidates)) } - it 'creates the correct model for the table' do - expected_value = [ + it 'creates the correct model for the table', :aggregate_failures do + expected_values = [ { 'param1' => 'p1', 'param2' => 'p2', 'metric1' => '0.1000', 'metric2' => '0.2000', 'metric3' => '0.3000', - 'artifact' => nil, 'details' => "/#{project.full_path}/-/ml/candidates/#{candidate0.iid}" }, + 'artifact' => "/#{project.full_path}/-/packages/#{candidate0.artifact.id}", + 'details' => "/#{project.full_path}/-/ml/candidates/#{candidate0.iid}", + 'name' => candidate0.name, + 'created_at' => candidate0.created_at.strftime('%Y-%m-%dT%H:%M:%S.%LZ'), + 'user' => { 'username' => candidate0.user.username, 'path' => "/#{candidate0.user.username}" } }, { 'param2' => 'p3', 'param3' => 'p4', 'metric3' => '0.4000', - 'artifact' => nil, 'details' => "/#{project.full_path}/-/ml/candidates/#{candidate1.iid}" } + 'artifact' => nil, 'details' => "/#{project.full_path}/-/ml/candidates/#{candidate1.iid}", + 'name' => candidate1.name, + 'created_at' => candidate1.created_at.strftime('%Y-%m-%dT%H:%M:%S.%LZ'), + 'user' => { 'username' => candidate1.user.username, 'path' => "/#{candidate1.user.username}" } } ] - expect(Gitlab::Json.parse(subject)).to match_array(expected_value) + subject.sort_by! { |s| s[:name] } + + expect(subject[0]).to eq(expected_values[0]) + expect(subject[1]).to eq(expected_values[1]) + end + + context 'when candidate does not have user' do + let(:candidates) { [candidate0] } + + before do + allow(candidate0).to receive(:user).and_return(nil) + end + + it 'has the user property, but is nil' do + expect(subject[0]['user']).to be_nil + end end end @@ -57,9 +79,6 @@ RSpec.describe Projects::Ml::ExperimentsHelper, feature_category: :mlops do describe '#candidate_as_data' do let(:candidate) { candidate0 } - let(:package) do - create(:generic_package, name: candidate.package_name, version: candidate.package_version, project: project) - end subject { Gitlab::Json.parse(helper.candidate_as_data(candidate)) } @@ -81,7 +100,7 @@ RSpec.describe Projects::Ml::ExperimentsHelper, feature_category: :mlops do it 'generates the correct info' do expected_info = { 'iid' => candidate.iid, - 'path_to_artifact' => "/#{project.full_path}/-/packages/#{package.id}", + 'path_to_artifact' => "/#{project.full_path}/-/packages/#{candidate.artifact.id}", 'experiment_name' => candidate.experiment.name, 'path_to_experiment' => "/#{project.full_path}/-/ml/experiments/#{experiment.iid}", 'status' => 'running' diff --git a/spec/helpers/projects/project_members_helper_spec.rb b/spec/helpers/projects/project_members_helper_spec.rb index f3201ce0e14..2cc87e8aeb9 100644 --- a/spec/helpers/projects/project_members_helper_spec.rb +++ b/spec/helpers/projects/project_members_helper_spec.rb @@ -6,7 +6,7 @@ RSpec.describe Projects::ProjectMembersHelper do include MembersPresentation let_it_be(:current_user) { create(:user) } - let_it_be(:project) { create(:project) } + let_it_be(:project) { create(:project, group: create(:group)) } before do allow(helper).to receive(:current_user).and_return(current_user) @@ -42,7 +42,9 @@ RSpec.describe Projects::ProjectMembersHelper do expected = { source_id: project.id, can_manage_members: true, - can_manage_access_requests: true + can_manage_access_requests: true, + group_name: project.group.name, + group_path: project.group.path }.as_json expect(subject).to include(expected) @@ -138,8 +140,8 @@ RSpec.describe Projects::ProjectMembersHelper do where(:include_relations, :result) do [:inherited, :direct] | lazy { [group_link_7, group_link_4, group_link_9, group_link_5, group_link_3].map(&:id) } - [:inherited] | lazy { [group_link_1, group_link_4, group_link_5, group_link_3].map(&:id) } - [:direct] | lazy { [group_link_7, group_link_8, group_link_9].map(&:id) } + [:inherited] | lazy { [group_link_1, group_link_4, group_link_5, group_link_3].map(&:id) } + [:direct] | lazy { [group_link_7, group_link_8, group_link_9].map(&:id) } end with_them do |