diff options
Diffstat (limited to 'spec/helpers/projects')
-rw-r--r-- | spec/helpers/projects/alert_management_helper_spec.rb | 35 | ||||
-rw-r--r-- | spec/helpers/projects/project_members_helper_spec.rb | 90 |
2 files changed, 99 insertions, 26 deletions
diff --git a/spec/helpers/projects/alert_management_helper_spec.rb b/spec/helpers/projects/alert_management_helper_spec.rb index e836461b099..6f66a93b9ec 100644 --- a/spec/helpers/projects/alert_management_helper_spec.rb +++ b/spec/helpers/projects/alert_management_helper_spec.rb @@ -34,6 +34,7 @@ RSpec.describe Projects::AlertManagementHelper do 'empty-alert-svg-path' => match_asset_path('/assets/illustrations/alert-management-empty-state.svg'), 'user-can-enable-alert-management' => 'true', 'alert-management-enabled' => 'false', + 'has-managed-prometheus' => 'false', 'text-query': nil, 'assignee-username-query': nil ) @@ -43,25 +44,53 @@ RSpec.describe Projects::AlertManagementHelper do context 'with prometheus service' do let_it_be(:prometheus_service) { create(:prometheus_service, project: project) } - context 'when prometheus service is active' do - it 'enables alert management' do + context 'when manual prometheus service is active' do + it "enables alert management and doesn't show managed prometheus" do + prometheus_service.update!(manual_configuration: true) + expect(data).to include( 'alert-management-enabled' => 'true' ) + expect(data).to include( + 'has-managed-prometheus' => 'false' + ) + end + end + + context 'when a cluster prometheus is available' do + let(:cluster) { create(:cluster, projects: [project]) } + + it 'has managed prometheus' do + create(:clusters_applications_prometheus, :installed, cluster: cluster) + + expect(data).to include( + 'has-managed-prometheus' => 'true' + ) end end context 'when prometheus service is inactive' do - it 'disables alert management' do + it 'disables alert management and hides managed prometheus' do prometheus_service.update!(manual_configuration: false) expect(data).to include( 'alert-management-enabled' => 'false' ) + expect(data).to include( + 'has-managed-prometheus' => 'false' + ) end end end + context 'without prometheus service' do + it "doesn't have managed prometheus" do + expect(data).to include( + 'has-managed-prometheus' => 'false' + ) + end + end + context 'with http integration' do let_it_be(:integration) { create(:alert_management_http_integration, project: project) } diff --git a/spec/helpers/projects/project_members_helper_spec.rb b/spec/helpers/projects/project_members_helper_spec.rb index 0e08a18f912..90035f3e1c5 100644 --- a/spec/helpers/projects/project_members_helper_spec.rb +++ b/spec/helpers/projects/project_members_helper_spec.rb @@ -147,28 +147,64 @@ RSpec.describe Projects::ProjectMembersHelper do end describe 'project members' do - let_it_be(:project_members) { create_list(:project_member, 1, project: project) } + let_it_be(:project_members) { create_list(:project_member, 2, project: project) } - describe '#project_members_data_json' do - it 'matches json schema' do - expect(helper.project_members_data_json(project, present_members(project_members))).to match_schema('members') - end - end + let(:collection) { project_members } + let(:presented_members) { present_members(collection) } - describe '#project_members_list_data_attributes' do + describe '#project_members_list_data_json' do let(:allow_admin_project) { true } + let(:pagination) { {} } + + subject { Gitlab::Json.parse(helper.project_members_list_data_json(project, presented_members, pagination)) } before do allow(helper).to receive(:project_project_member_path).with(project, ':id').and_return('/foo-bar/-/project_members/:id') end - it 'returns expected hash' do - expect(helper.project_members_list_data_attributes(project, present_members(project_members))).to include({ - members: helper.project_members_data_json(project, present_members(project_members)), + it 'returns expected json' do + expected = { member_path: '/foo-bar/-/project_members/:id', source_id: project.id, - can_manage_members: 'true' - }) + can_manage_members: true + }.as_json + + expect(subject).to include(expected) + end + + it 'returns `members` property that matches json schema' do + expect(subject['members'].to_json).to match_schema('members') + end + + context 'when pagination is not available' do + it 'sets `pagination` attribute to expected json' do + expected = { + current_page: nil, + per_page: nil, + total_items: 2, + param_name: nil, + params: {} + }.as_json + + expect(subject['pagination']).to include(expected) + end + end + + context 'when pagination is available' do + let(:collection) { Kaminari.paginate_array(project_members).page(1).per(1) } + let(:pagination) { { param_name: :page, params: { search_groups: nil } } } + + it 'sets `pagination` attribute to expected json' do + expected = { + current_page: 1, + per_page: 1, + total_items: 2, + param_name: :page, + params: { search_groups: nil } + }.as_json + + expect(subject['pagination']).to match(expected) + end end end end @@ -178,25 +214,33 @@ RSpec.describe Projects::ProjectMembersHelper do let(:allow_admin_project) { true } - describe '#project_group_links_data_json' do - it 'matches json schema' do - expect(helper.project_group_links_data_json(project_group_links)).to match_schema('group_link/project_group_links') - end - end + describe '#project_group_links_list_data_json' do + subject { Gitlab::Json.parse(helper.project_group_links_list_data_json(project, project_group_links)) } - describe '#project_group_links_list_data_attributes' do before do allow(helper).to receive(:project_group_link_path).with(project, ':id').and_return('/foo-bar/-/group_links/:id') allow(helper).to receive(:can?).with(current_user, :admin_project_member, project).and_return(true) end - it 'returns expected hash' do - expect(helper.project_group_links_list_data_attributes(project, project_group_links)).to include({ - members: helper.project_group_links_data_json(project_group_links), + it 'returns expected json' do + expected = { + pagination: { + current_page: nil, + per_page: nil, + total_items: 1, + param_name: nil, + params: {} + }, member_path: '/foo-bar/-/group_links/:id', source_id: project.id, - can_manage_members: 'true' - }) + can_manage_members: true + }.as_json + + expect(subject).to include(expected) + end + + it 'returns `members` property that matches json schema' do + expect(subject['members'].to_json).to match_schema('group_link/project_group_links') end end end |