diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-19 00:10:06 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-19 00:10:06 +0300 |
commit | cb0a625459525122d2736a895a728edb3b8ea4ff (patch) | |
tree | a3a830de41cdc0eb71c380f8e751faa1410a724a /spec | |
parent | dd6e32bf47776514b8fe2abcfe7998503f16baab (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
82 files changed, 585 insertions, 762 deletions
diff --git a/spec/controllers/invites_controller_spec.rb b/spec/controllers/invites_controller_spec.rb index 6b94d186d5f..7c06ed9ae62 100644 --- a/spec/controllers/invites_controller_spec.rb +++ b/spec/controllers/invites_controller_spec.rb @@ -127,38 +127,11 @@ RSpec.describe InvitesController do expect(flash[:notice]).to include('create an account or sign in') end - context 'when it is part of our invite email experiment', :experiment, :aggregate_failures do - let(:experience) { :control } - - before do - stub_experiments(invite_signup_page_interaction: experience) - end - - it 'sets originating_member_id session key' do - request - - expect(session[:originating_member_id]).to eq(member.id) - end - - context 'with control experience' do - it 'is redirected to a new registration with invite email param and flash message' do - request - - expect(response).to redirect_to(new_user_registration_path(invite_email: member.invite_email)) - expect(flash[:notice]).to eq 'To accept this invitation, create an account or sign in.' - end - end - - context 'with candidate experience' do - let(:experience) { :candidate } - - it 'is redirected to a new invite registration with invite email param and no flash message' do - request + it 'is redirected to a new registration with invite email param and flash message', :aggregate_failures do + request - expect(response).to redirect_to(new_users_sign_up_invite_path(invite_email: member.invite_email)) - expect(flash[:notice]).to be_nil - end - end + expect(response).to redirect_to(new_user_registration_path(invite_email: member.invite_email)) + expect(flash[:notice]).to eq 'To accept this invitation, create an account or sign in.' end it 'sets session keys for auto email confirmation on sign up' do diff --git a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb index 4fcb63ac616..a0818601562 100644 --- a/spec/controllers/projects/merge_requests/diffs_controller_spec.rb +++ b/spec/controllers/projects/merge_requests/diffs_controller_spec.rb @@ -88,8 +88,6 @@ RSpec.describe Projects::MergeRequests::DiffsController do let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) } before do - stub_feature_flags(diffs_gradual_load: false) - project.add_maintainer(user) sign_in(user) end @@ -486,7 +484,7 @@ RSpec.describe Projects::MergeRequests::DiffsController do namespace_id: project.namespace.to_param, project_id: project, id: merge_request.iid, - page: 1, + page: 0, per_page: 20, format: 'json' } @@ -517,7 +515,7 @@ RSpec.describe Projects::MergeRequests::DiffsController do it_behaves_like 'serializes diffs with expected arguments' do let(:collection) { Gitlab::Diff::FileCollection::MergeRequestDiffBatch } - let(:expected_options) { collection_arguments(current_page: 1, total_pages: 1).merge(merge_ref_head_diff: false) } + let(:expected_options) { collection_arguments(current_page: nil, total_pages: 20).merge(merge_ref_head_diff: false) } end it_behaves_like 'successful request' @@ -557,7 +555,7 @@ RSpec.describe Projects::MergeRequests::DiffsController do it_behaves_like 'serializes diffs with expected arguments' do let(:collection) { Gitlab::Diff::FileCollection::MergeRequestDiffBatch } let(:expected_options) do - collection_arguments(current_page: 1, total_pages: 1) + collection_arguments(current_page: nil, total_pages: 20) end end @@ -576,18 +574,18 @@ RSpec.describe Projects::MergeRequests::DiffsController do it_behaves_like 'serializes diffs with expected arguments' do let(:collection) { Gitlab::Diff::FileCollection::MergeRequestDiffBatch } - let(:expected_options) { collection_arguments(current_page: 1, total_pages: 1) } + let(:expected_options) { collection_arguments(current_page: nil, total_pages: 20) } end it_behaves_like 'successful request' end context 'with smaller diff batch params' do - subject { go(page: 2, per_page: 5) } + subject { go(page: 5, per_page: 5) } it_behaves_like 'serializes diffs with expected arguments' do let(:collection) { Gitlab::Diff::FileCollection::MergeRequestDiffBatch } - let(:expected_options) { collection_arguments(current_page: 2, next_page: 3, total_pages: 4) } + let(:expected_options) { collection_arguments(current_page: nil, next_page: nil, total_pages: 20) } end it_behaves_like 'successful request' diff --git a/spec/controllers/projects/services_controller_spec.rb b/spec/controllers/projects/services_controller_spec.rb index aad65880795..9bb9e13231e 100644 --- a/spec/controllers/projects/services_controller_spec.rb +++ b/spec/controllers/projects/services_controller_spec.rb @@ -258,8 +258,8 @@ RSpec.describe Projects::ServicesController do end end - context 'Prometheus service' do - let!(:service) { create(:prometheus_service, project: project) } + context 'Prometheus integration' do + let!(:service) { create(:prometheus_integration, project: project) } let(:service_params) { { manual_configuration: '1', api_url: 'http://example.com' } } context 'feature flag :settings_operations_prometheus_service is enabled' do @@ -276,8 +276,8 @@ RSpec.describe Projects::ServicesController do expect(controller).to set_flash.now[:alert].to(expected_alert) end - it 'does not modify service' do - expect { put :update, params: project_params.merge(service: service_params) }.not_to change { project.prometheus_service.reload.attributes } + it 'does not modify integration' do + expect { put :update, params: project_params.merge(service: service_params) }.not_to change { project.prometheus_integration.reload.attributes } end end @@ -286,8 +286,8 @@ RSpec.describe Projects::ServicesController do stub_feature_flags(settings_operations_prometheus_service: false) end - it 'modifies service' do - expect { put :update, params: project_params.merge(service: service_params) }.to change { project.prometheus_service.reload.attributes } + it 'modifies integration' do + expect { put :update, params: project_params.merge(service: service_params) }.to change { project.prometheus_integration.reload.attributes } end end end diff --git a/spec/controllers/registrations_controller_spec.rb b/spec/controllers/registrations_controller_spec.rb index 81486c310d4..72aa9038c3e 100644 --- a/spec/controllers/registrations_controller_spec.rb +++ b/spec/controllers/registrations_controller_spec.rb @@ -187,38 +187,6 @@ RSpec.describe RegistrationsController do end end - context 'when it is part of our invite_signup_page_interaction experiment', :experiment do - let_it_be(:member) { create(:project_member, :invited, invite_email: user_params.dig(:user, :email)) } - - let(:originating_member_id) { member.id } - let(:session_params) do - { - invite_email: user_params.dig(:user, :email), - originating_member_id: originating_member_id - } - end - - context 'when member exists from the session key value' do - it 'tracks the experiment' do - expect(experiment(:invite_signup_page_interaction)).to track(:form_submission) - .with_context(actor: member) - .on_next_instance - - subject - end - end - - context 'when member does not exist from the session key value' do - let(:originating_member_id) { -1 } - - it 'tracks the experiment' do - expect(experiment(:invite_signup_page_interaction)).not_to track(:form_submission) - - subject - end - end - end - context 'when invite email matches email used on registration' do let(:session_params) { { invite_email: user_params.dig(:user, :email) } } diff --git a/spec/factories/integrations.rb b/spec/factories/integrations.rb index 47c9f885845..8e0f5b50db5 100644 --- a/spec/factories/integrations.rb +++ b/spec/factories/integrations.rb @@ -27,7 +27,7 @@ FactoryBot.define do end end - factory :prometheus_service, class: 'Integrations::Prometheus' do + factory :prometheus_integration, class: 'Integrations::Prometheus' do project active { true } properties do diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb index b2f6ae5573d..fa538551987 100644 --- a/spec/factories/projects.rb +++ b/spec/factories/projects.rb @@ -413,7 +413,7 @@ FactoryBot.define do factory :prometheus_project, parent: :project do after :create do |project| - project.create_prometheus_service( + project.create_prometheus_integration( active: true, properties: { api_url: 'https://prometheus.example.com/', diff --git a/spec/factories/usage_data.rb b/spec/factories/usage_data.rb index de1e4aa82fa..4593294fd14 100644 --- a/spec/factories/usage_data.rb +++ b/spec/factories/usage_data.rb @@ -18,7 +18,7 @@ FactoryBot.define do create(:jira_import_state, :finished, project: projects[1], label: jira_label, imported_issues_count: 3, total_issue_count: 3) create(:jira_import_state, :finished, project: projects[1], label: jira_label, imported_issues_count: 3) create(:jira_import_state, :scheduled, project: projects[1], label: jira_label) - create(:prometheus_service, project: projects[1]) + create(:prometheus_integration, project: projects[1]) create(:service, project: projects[1], type: 'JenkinsService', active: true) create(:service, project: projects[0], type: 'SlackSlashCommandsService', active: true) create(:service, project: projects[1], type: 'SlackService', active: true) diff --git a/spec/features/alert_management/alert_management_list_spec.rb b/spec/features/alert_management/alert_management_list_spec.rb index aeaadacb38d..1e710169c9c 100644 --- a/spec/features/alert_management/alert_management_list_spec.rb +++ b/spec/features/alert_management/alert_management_list_spec.rb @@ -50,7 +50,7 @@ RSpec.describe 'Alert Management index', :js do end context 'when the prometheus integration is enabled' do - let_it_be(:integration) { create(:prometheus_service, project: project) } + let_it_be(:integration) { create(:prometheus_integration, project: project) } it_behaves_like 'alert page with title, filtered search, and table' end diff --git a/spec/features/invites_spec.rb b/spec/features/invites_spec.rb index a72cf033d61..93602033d73 100644 --- a/spec/features/invites_spec.rb +++ b/spec/features/invites_spec.rb @@ -272,54 +272,15 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures do end end - context 'with invite_signup_page_interaction experiment on', :experiment do - context 'with control experience' do - before do - stub_experiments(invite_signup_page_interaction: :control) - end - - it 'lands on invite sign up page and tracks the accepted invite' do - expect(experiment(:invite_signup_page_interaction)).to track(:view) - .with_context(actor: group_invite) - .on_next_instance - - visit invite_path(group_invite.raw_invite_token) - - expect(current_path).to eq(new_user_registration_path) - - expect(experiment(:invite_signup_page_interaction)).to track(:form_submission) - .with_context(actor: group_invite) - .on_next_instance - - fill_in_sign_up_form(new_user, 'Register') - - expect(current_path).to eq(users_sign_up_welcome_path) - end - end - - context 'with candidate experience on .com' do - before do - allow(Gitlab).to receive(:dev_env_or_com?).and_return(true) - stub_experiments(invite_signup_page_interaction: :candidate) - end + context 'when accepting an invite without an account' do + it 'lands on sign up page and then registers' do + visit invite_path(group_invite.raw_invite_token) - it 'lands on invite sign up page and tracks the accepted invite' do - expect(experiment(:invite_signup_page_interaction)).to track(:view) - .with_context(actor: group_invite) - .on_next_instance + expect(current_path).to eq(new_user_registration_path) - visit invite_path(group_invite.raw_invite_token) - - expect(current_path).to eq(new_users_sign_up_invite_path) - - expect(experiment(:invite_signup_page_interaction)).to track(:form_submission) - .with_context(actor: group_invite) - .on_next_instance + fill_in_sign_up_form(new_user, 'Register') - fill_in_sign_up_form(new_user, 'Continue') - - expect(current_path).to eq(users_sign_up_welcome_path) - end + expect(current_path).to eq(users_sign_up_welcome_path) end end diff --git a/spec/features/merge_request/user_resolves_conflicts_spec.rb b/spec/features/merge_request/user_resolves_conflicts_spec.rb index d9e3bfd6a9c..03ab42aaccd 100644 --- a/spec/features/merge_request/user_resolves_conflicts_spec.rb +++ b/spec/features/merge_request/user_resolves_conflicts_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Merge request > User resolves conflicts', :js do - include Spec::Support::Helpers::Features::EditorLiteSpecHelpers + include Spec::Support::Helpers::Features::SourceEditorSpecHelpers let(:project) { create(:project, :repository) } let(:user) { project.creator } diff --git a/spec/features/merge_request/user_sees_versions_spec.rb b/spec/features/merge_request/user_sees_versions_spec.rb index d0d09e678c6..5abf4e2f5ad 100644 --- a/spec/features/merge_request/user_sees_versions_spec.rb +++ b/spec/features/merge_request/user_sees_versions_spec.rb @@ -17,8 +17,6 @@ RSpec.describe 'Merge request > User sees versions', :js do let!(:params) { {} } before do - stub_feature_flags(diffs_gradual_load: false) - project.add_maintainer(user) sign_in(user) visit diffs_project_merge_request_path(project, merge_request, params) diff --git a/spec/features/projects/ci/editor_spec.rb b/spec/features/projects/ci/editor_spec.rb index 7012cc6edaa..c0cc12eac66 100644 --- a/spec/features/projects/ci/editor_spec.rb +++ b/spec/features/projects/ci/editor_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Pipeline Editor', :js do - include Spec::Support::Helpers::Features::EditorLiteSpecHelpers + include Spec::Support::Helpers::Features::SourceEditorSpecHelpers let(:project) { create(:project, :repository) } let(:user) { create(:user) } diff --git a/spec/features/projects/ci/lint_spec.rb b/spec/features/projects/ci/lint_spec.rb index 353c8558185..0d9ea6331a7 100644 --- a/spec/features/projects/ci/lint_spec.rb +++ b/spec/features/projects/ci/lint_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'CI Lint', :js, quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/297782' do - include Spec::Support::Helpers::Features::EditorLiteSpecHelpers + include Spec::Support::Helpers::Features::SourceEditorSpecHelpers let(:project) { create(:project, :repository) } let(:user) { create(:user) } diff --git a/spec/features/projects/files/dockerfile_dropdown_spec.rb b/spec/features/projects/files/dockerfile_dropdown_spec.rb index 40d19a94b42..11663158b33 100644 --- a/spec/features/projects/files/dockerfile_dropdown_spec.rb +++ b/spec/features/projects/files/dockerfile_dropdown_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Projects > Files > User wants to add a Dockerfile file', :js do - include Spec::Support::Helpers::Features::EditorLiteSpecHelpers + include Spec::Support::Helpers::Features::SourceEditorSpecHelpers before do project = create(:project, :repository) diff --git a/spec/features/projects/files/gitignore_dropdown_spec.rb b/spec/features/projects/files/gitignore_dropdown_spec.rb index a9f2463ecf6..d47eaee2e79 100644 --- a/spec/features/projects/files/gitignore_dropdown_spec.rb +++ b/spec/features/projects/files/gitignore_dropdown_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Projects > Files > User wants to add a .gitignore file', :js do - include Spec::Support::Helpers::Features::EditorLiteSpecHelpers + include Spec::Support::Helpers::Features::SourceEditorSpecHelpers before do project = create(:project, :repository) diff --git a/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb b/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb index b0ccb5fca94..fc199f66490 100644 --- a/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb +++ b/spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Projects > Files > User wants to add a .gitlab-ci.yml file', :js do - include Spec::Support::Helpers::Features::EditorLiteSpecHelpers + include Spec::Support::Helpers::Features::SourceEditorSpecHelpers let(:params) { {} } let(:filename) { '.gitlab-ci.yml' } diff --git a/spec/features/projects/services/prometheus_external_alerts_spec.rb b/spec/features/projects/services/prometheus_external_alerts_spec.rb index 4c32905a8c5..c2ae72ddb5e 100644 --- a/spec/features/projects/services/prometheus_external_alerts_spec.rb +++ b/spec/features/projects/services/prometheus_external_alerts_spec.rb @@ -10,7 +10,7 @@ RSpec.describe 'Prometheus external alerts', :js do context 'with manual configuration' do before do - create(:prometheus_service, project: project, api_url: 'http://prometheus.example.com', manual_configuration: '1', active: true) + create(:prometheus_integration, project: project, api_url: 'http://prometheus.example.com', manual_configuration: '1', active: true) end it 'shows the Alerts section' do diff --git a/spec/frontend/__helpers__/dom_shims/inner_text.js b/spec/frontend/__helpers__/dom_shims/inner_text.js index 2b8201eed31..a48f0fee689 100644 --- a/spec/frontend/__helpers__/dom_shims/inner_text.js +++ b/spec/frontend/__helpers__/dom_shims/inner_text.js @@ -5,7 +5,7 @@ Object.defineProperty(global.Element.prototype, 'innerText', { return this.textContent; }, set(value) { - this.textContext = value; + this.textContent = value; }, configurable: true, // make it so that it doesn't blow chunks on re-running tests with things like --watch }); diff --git a/spec/frontend/blob/components/blob_edit_content_spec.js b/spec/frontend/blob/components/blob_edit_content_spec.js index 7de8d9236ed..9fc2356c018 100644 --- a/spec/frontend/blob/components/blob_edit_content_spec.js +++ b/spec/frontend/blob/components/blob_edit_content_spec.js @@ -3,7 +3,7 @@ import { nextTick } from 'vue'; import BlobEditContent from '~/blob/components/blob_edit_content.vue'; import * as utils from '~/blob/utils'; -jest.mock('~/editor/editor_lite'); +jest.mock('~/editor/source_editor'); describe('Blob Header Editing', () => { let wrapper; @@ -26,7 +26,7 @@ describe('Blob Header Editing', () => { } beforeEach(() => { - jest.spyOn(utils, 'initEditorLite').mockImplementation(() => ({ + jest.spyOn(utils, 'initSourceEditor').mockImplementation(() => ({ onDidChangeModelContent, updateModelLanguage, getValue, @@ -68,9 +68,9 @@ describe('Blob Header Editing', () => { expect(wrapper.find('#editor').exists()).toBe(true); }); - it('initialises Editor Lite', () => { + it('initialises Source Editor', () => { const el = wrapper.find({ ref: 'editor' }).element; - expect(utils.initEditorLite).toHaveBeenCalledWith({ + expect(utils.initSourceEditor).toHaveBeenCalledWith({ el, blobPath: fileName, blobGlobalId: fileGlobalId, diff --git a/spec/frontend/blob/utils_spec.js b/spec/frontend/blob/utils_spec.js index 3ff2e47e0b6..a543c0060cb 100644 --- a/spec/frontend/blob/utils_spec.js +++ b/spec/frontend/blob/utils_spec.js @@ -1,10 +1,10 @@ import * as utils from '~/blob/utils'; -import Editor from '~/editor/editor_lite'; +import Editor from '~/editor/source_editor'; -jest.mock('~/editor/editor_lite'); +jest.mock('~/editor/source_editor'); describe('Blob utilities', () => { - describe('initEditorLite', () => { + describe('initSourceEditor', () => { let editorEl; const blobPath = 'foo.txt'; const blobContent = 'Foo bar'; @@ -15,8 +15,8 @@ describe('Blob utilities', () => { }); describe('Monaco editor', () => { - it('initializes the Editor Lite', () => { - utils.initEditorLite({ el: editorEl }); + it('initializes the Source Editor', () => { + utils.initSourceEditor({ el: editorEl }); expect(Editor).toHaveBeenCalledWith({ scrollbar: { alwaysConsumeMouseWheel: false, @@ -34,7 +34,7 @@ describe('Blob utilities', () => { expect(Editor.prototype.createInstance).not.toHaveBeenCalled(); - utils.initEditorLite(params); + utils.initSourceEditor(params); expect(Editor.prototype.createInstance).toHaveBeenCalledWith(params); }, diff --git a/spec/frontend/blob_edit/blob_bundle_spec.js b/spec/frontend/blob_edit/blob_bundle_spec.js index eecc54be35b..8986dfbfa9c 100644 --- a/spec/frontend/blob_edit/blob_bundle_spec.js +++ b/spec/frontend/blob_edit/blob_bundle_spec.js @@ -3,21 +3,21 @@ import { mockTracking, unmockTracking } from 'helpers/tracking_helper'; import waitForPromises from 'helpers/wait_for_promises'; import blobBundle from '~/blob_edit/blob_bundle'; -import EditorLite from '~/blob_edit/edit_blob'; +import SourceEditor from '~/blob_edit/edit_blob'; jest.mock('~/blob_edit/edit_blob'); describe('BlobBundle', () => { - it('does not load EditorLite by default', () => { + it('does not load SourceEditor by default', () => { blobBundle(); - expect(EditorLite).not.toHaveBeenCalled(); + expect(SourceEditor).not.toHaveBeenCalled(); }); - it('loads EditorLite for the edit screen', async () => { + it('loads SourceEditor for the edit screen', async () => { setFixtures(`<div class="js-edit-blob-form"></div>`); blobBundle(); await waitForPromises(); - expect(EditorLite).toHaveBeenCalled(); + expect(SourceEditor).toHaveBeenCalled(); }); describe('No Suggest Popover', () => { diff --git a/spec/frontend/blob_edit/edit_blob_spec.js b/spec/frontend/blob_edit/edit_blob_spec.js index 3134feedcf3..2be72ded0a2 100644 --- a/spec/frontend/blob_edit/edit_blob_spec.js +++ b/spec/frontend/blob_edit/edit_blob_spec.js @@ -1,12 +1,12 @@ import waitForPromises from 'helpers/wait_for_promises'; import EditBlob from '~/blob_edit/edit_blob'; -import EditorLite from '~/editor/editor_lite'; -import { FileTemplateExtension } from '~/editor/extensions/editor_file_template_ext'; -import { EditorMarkdownExtension } from '~/editor/extensions/editor_markdown_ext'; +import { FileTemplateExtension } from '~/editor/extensions/source_editor_file_template_ext'; +import { EditorMarkdownExtension } from '~/editor/extensions/source_editor_markdown_ext'; +import SourceEditor from '~/editor/source_editor'; -jest.mock('~/editor/editor_lite'); -jest.mock('~/editor/extensions/editor_markdown_ext'); -jest.mock('~/editor/extensions/editor_file_template_ext'); +jest.mock('~/editor/source_editor'); +jest.mock('~/editor/extensions/source_editor_markdown_ext'); +jest.mock('~/editor/extensions/source_editor_file_template_ext'); describe('Blob Editing', () => { const useMock = jest.fn(); @@ -24,7 +24,7 @@ describe('Blob Editing', () => { <textarea id="file-content"></textarea> </form> `); - jest.spyOn(EditorLite.prototype, 'createInstance').mockReturnValue(mockInstance); + jest.spyOn(SourceEditor.prototype, 'createInstance').mockReturnValue(mockInstance); }); afterEach(() => { EditorMarkdownExtension.mockClear(); diff --git a/spec/frontend/ci_lint/components/ci_lint_spec.js b/spec/frontend/ci_lint/components/ci_lint_spec.js index 8a065436da0..36d860b1ccd 100644 --- a/spec/frontend/ci_lint/components/ci_lint_spec.js +++ b/spec/frontend/ci_lint/components/ci_lint_spec.js @@ -4,7 +4,7 @@ import waitForPromises from 'helpers/wait_for_promises'; import CiLint from '~/ci_lint/components/ci_lint.vue'; import CiLintResults from '~/pipeline_editor/components/lint/ci_lint_results.vue'; import lintCIMutation from '~/pipeline_editor/graphql/mutations/lint_ci.mutation.graphql'; -import EditorLite from '~/vue_shared/components/editor_lite.vue'; +import SourceEditor from '~/vue_shared/components/source_editor.vue'; import { mockLintDataValid } from '../mock_data'; describe('CI Lint', () => { @@ -35,7 +35,7 @@ describe('CI Lint', () => { }); }; - const findEditor = () => wrapper.find(EditorLite); + const findEditor = () => wrapper.find(SourceEditor); const findAlert = () => wrapper.find(GlAlert); const findCiLintResults = () => wrapper.find(CiLintResults); const findValidateBtn = () => wrapper.find('[data-testid="ci-lint-validate"]'); diff --git a/spec/frontend/diffs/store/actions_spec.js b/spec/frontend/diffs/store/actions_spec.js index 14f8e090be9..f25099cdecc 100644 --- a/spec/frontend/diffs/store/actions_spec.js +++ b/spec/frontend/diffs/store/actions_spec.js @@ -8,7 +8,6 @@ import { DIFF_VIEW_COOKIE_NAME, INLINE_DIFF_VIEW_TYPE, PARALLEL_DIFF_VIEW_TYPE, - DIFFS_PER_PAGE, } from '~/diffs/constants'; import { setBaseConfig, @@ -154,16 +153,16 @@ describe('DiffsStoreActions', () => { it('should fetch batch diff files', (done) => { const endpointBatch = '/fetch/diffs_batch'; - const res1 = { diff_files: [{ file_hash: 'test' }], pagination: { next_page: 2 } }; - const res2 = { diff_files: [{ file_hash: 'test2' }], pagination: {} }; + const res1 = { diff_files: [{ file_hash: 'test' }], pagination: { total_pages: 7 } }; + const res2 = { diff_files: [{ file_hash: 'test2' }], pagination: { total_pages: 7 } }; mock .onGet( mergeUrlParams( { w: '1', view: 'inline', - page: 1, - per_page: DIFFS_PER_PAGE, + page: 0, + per_page: 5, }, endpointBatch, ), @@ -174,8 +173,8 @@ describe('DiffsStoreActions', () => { { w: '1', view: 'inline', - page: 2, - per_page: DIFFS_PER_PAGE, + page: 5, + per_page: 7, }, endpointBatch, ), diff --git a/spec/frontend/editor/editor_ci_schema_ext_spec.js b/spec/frontend/editor/editor_ci_schema_ext_spec.js index 2f0ecfb151e..07ac080fe08 100644 --- a/spec/frontend/editor/editor_ci_schema_ext_spec.js +++ b/spec/frontend/editor/editor_ci_schema_ext_spec.js @@ -1,8 +1,8 @@ import { languages } from 'monaco-editor'; import { TEST_HOST } from 'helpers/test_constants'; import { EXTENSION_CI_SCHEMA_FILE_NAME_MATCH } from '~/editor/constants'; -import EditorLite from '~/editor/editor_lite'; -import { CiSchemaExtension } from '~/editor/extensions/editor_ci_schema_ext'; +import { CiSchemaExtension } from '~/editor/extensions/source_editor_ci_schema_ext'; +import SourceEditor from '~/editor/source_editor'; const mockRef = 'AABBCCDD'; @@ -17,7 +17,7 @@ describe('~/editor/editor_ci_config_ext', () => { const createMockEditor = ({ blobPath = defaultBlobPath } = {}) => { setFixtures('<div id="editor"></div>'); editorEl = document.getElementById('editor'); - editor = new EditorLite(); + editor = new SourceEditor(); instance = editor.createInstance({ el: editorEl, blobPath, diff --git a/spec/frontend/editor/editor_lite_extension_base_spec.js b/spec/frontend/editor/editor_lite_extension_base_spec.js index 59e1b8968eb..352db9d0d51 100644 --- a/spec/frontend/editor/editor_lite_extension_base_spec.js +++ b/spec/frontend/editor/editor_lite_extension_base_spec.js @@ -5,7 +5,7 @@ import { EDITOR_TYPE_CODE, EDITOR_TYPE_DIFF, } from '~/editor/constants'; -import { EditorLiteExtension } from '~/editor/extensions/editor_lite_extension_base'; +import { SourceEditorExtension } from '~/editor/extensions/source_editor_extension_base'; jest.mock('~/helpers/startup_css_helper', () => { return { @@ -22,7 +22,7 @@ jest.mock('~/helpers/startup_css_helper', () => { }; }); -describe('The basis for an Editor Lite extension', () => { +describe('The basis for an Source Editor extension', () => { const defaultLine = 3; let ext; let event; @@ -63,7 +63,7 @@ describe('The basis for an Editor Lite extension', () => { const instance = { layout: jest.fn(), }; - ext = new EditorLiteExtension({ instance }); + ext = new SourceEditorExtension({ instance }); expect(instance.layout).not.toHaveBeenCalled(); // We're waiting for the waitForCSSLoaded mock to kick in @@ -79,7 +79,7 @@ describe('The basis for an Editor Lite extension', () => { ${'does not fail if both instance and the options are omitted'} | ${undefined} | ${undefined} ${'throws if only options are passed'} | ${undefined} | ${defaultOptions} `('$description', ({ instance, options } = {}) => { - EditorLiteExtension.deferRerender = jest.fn(); + SourceEditorExtension.deferRerender = jest.fn(); const originalInstance = { ...instance }; if (instance) { @@ -88,54 +88,54 @@ describe('The basis for an Editor Lite extension', () => { expect(instance[prop]).toBeUndefined(); }); // Both instance and options are passed - ext = new EditorLiteExtension({ instance, ...options }); + ext = new SourceEditorExtension({ instance, ...options }); Object.entries(options).forEach(([prop, value]) => { expect(ext[prop]).toBeUndefined(); expect(instance[prop]).toBe(value); }); } else { - ext = new EditorLiteExtension({ instance }); + ext = new SourceEditorExtension({ instance }); expect(instance).toEqual(originalInstance); } } else if (options) { // Options are passed without instance expect(() => { - ext = new EditorLiteExtension({ ...options }); + ext = new SourceEditorExtension({ ...options }); }).toThrow(ERROR_INSTANCE_REQUIRED_FOR_EXTENSION); } else { // Neither options nor instance are passed expect(() => { - ext = new EditorLiteExtension(); + ext = new SourceEditorExtension(); }).not.toThrow(); } }); it('initializes the line highlighting', () => { - EditorLiteExtension.deferRerender = jest.fn(); - const spy = jest.spyOn(EditorLiteExtension, 'highlightLines'); - ext = new EditorLiteExtension({ instance: {} }); + SourceEditorExtension.deferRerender = jest.fn(); + const spy = jest.spyOn(SourceEditorExtension, 'highlightLines'); + ext = new SourceEditorExtension({ instance: {} }); expect(spy).toHaveBeenCalled(); }); it('sets up the line linking for code instance', () => { - EditorLiteExtension.deferRerender = jest.fn(); - const spy = jest.spyOn(EditorLiteExtension, 'setupLineLinking'); + SourceEditorExtension.deferRerender = jest.fn(); + const spy = jest.spyOn(SourceEditorExtension, 'setupLineLinking'); const instance = { getEditorType: jest.fn().mockReturnValue(EDITOR_TYPE_CODE), onMouseMove: jest.fn(), onMouseDown: jest.fn(), }; - ext = new EditorLiteExtension({ instance }); + ext = new SourceEditorExtension({ instance }); expect(spy).toHaveBeenCalledWith(instance); }); it('does not set up the line linking for diff instance', () => { - EditorLiteExtension.deferRerender = jest.fn(); - const spy = jest.spyOn(EditorLiteExtension, 'setupLineLinking'); + SourceEditorExtension.deferRerender = jest.fn(); + const spy = jest.spyOn(SourceEditorExtension, 'setupLineLinking'); const instance = { getEditorType: jest.fn().mockReturnValue(EDITOR_TYPE_DIFF), }; - ext = new EditorLiteExtension({ instance }); + ext = new SourceEditorExtension({ instance }); expect(spy).not.toHaveBeenCalled(); }); }); @@ -172,7 +172,7 @@ describe('The basis for an Editor Lite extension', () => { ${'does not highlight if hash is incomplete 2'} | ${'#L-'} | ${false} | ${null} `('$desc', ({ hash, shouldReveal, expectedRange } = {}) => { window.location.hash = hash; - EditorLiteExtension.highlightLines(instance); + SourceEditorExtension.highlightLines(instance); if (!shouldReveal) { expect(revealSpy).not.toHaveBeenCalled(); expect(decorationsSpy).not.toHaveBeenCalled(); @@ -194,7 +194,7 @@ describe('The basis for an Editor Lite extension', () => { decorationsSpy.mockReturnValue('foo'); window.location.hash = '#L10'; expect(instance.lineDecorations).toBeUndefined(); - EditorLiteExtension.highlightLines(instance); + SourceEditorExtension.highlightLines(instance); expect(instance.lineDecorations).toBe('foo'); }); }); @@ -208,7 +208,7 @@ describe('The basis for an Editor Lite extension', () => { }; beforeEach(() => { - EditorLiteExtension.onMouseMoveHandler(event); // generate the anchor + SourceEditorExtension.onMouseMoveHandler(event); // generate the anchor }); it.each` @@ -216,7 +216,7 @@ describe('The basis for an Editor Lite extension', () => { ${'onMouseMove'} | ${instance.onMouseMove} ${'onMouseDown'} | ${instance.onMouseDown} `('sets up the $desc listener', ({ spy } = {}) => { - EditorLiteExtension.setupLineLinking(instance); + SourceEditorExtension.setupLineLinking(instance); expect(spy).toHaveBeenCalled(); }); @@ -230,7 +230,7 @@ describe('The basis for an Editor Lite extension', () => { fn(event); }); - EditorLiteExtension.setupLineLinking(instance); + SourceEditorExtension.setupLineLinking(instance); if (shouldRemove) { expect(instance.deltaDecorations).toHaveBeenCalledWith(instance.lineDecorations, []); } else { @@ -241,7 +241,7 @@ describe('The basis for an Editor Lite extension', () => { describe('onMouseMoveHandler', () => { it('stops propagation for contextmenu event on the generated anchor', () => { - EditorLiteExtension.onMouseMoveHandler(event); + SourceEditorExtension.onMouseMoveHandler(event); const anchor = findLine(defaultLine).querySelector('a'); const contextMenuEvent = new Event('contextmenu'); @@ -253,27 +253,27 @@ describe('The basis for an Editor Lite extension', () => { it('creates an anchor if it does not exist yet', () => { expect(findLine(defaultLine).querySelector('a')).toBe(null); - EditorLiteExtension.onMouseMoveHandler(event); + SourceEditorExtension.onMouseMoveHandler(event); expect(findLine(defaultLine).querySelector('a')).not.toBe(null); }); it('does not create a new anchor if it exists', () => { - EditorLiteExtension.onMouseMoveHandler(event); + SourceEditorExtension.onMouseMoveHandler(event); expect(findLine(defaultLine).querySelector('a')).not.toBe(null); - EditorLiteExtension.createAnchor = jest.fn(); - EditorLiteExtension.onMouseMoveHandler(event); - expect(EditorLiteExtension.createAnchor).not.toHaveBeenCalled(); + SourceEditorExtension.createAnchor = jest.fn(); + SourceEditorExtension.onMouseMoveHandler(event); + expect(SourceEditorExtension.createAnchor).not.toHaveBeenCalled(); expect(findLine(defaultLine).querySelectorAll('a')).toHaveLength(1); }); it('does not create a link if the event is triggered on a wrong node', () => { setFixtures('<div class="wrong-class">3</div>'); - EditorLiteExtension.createAnchor = jest.fn(); + SourceEditorExtension.createAnchor = jest.fn(); const wrongEvent = generateEventMock({ el: document.querySelector('.wrong-class') }); - EditorLiteExtension.onMouseMoveHandler(wrongEvent); - expect(EditorLiteExtension.createAnchor).not.toHaveBeenCalled(); + SourceEditorExtension.onMouseMoveHandler(wrongEvent); + expect(SourceEditorExtension.createAnchor).not.toHaveBeenCalled(); }); }); }); diff --git a/spec/frontend/editor/editor_lite_spec.js b/spec/frontend/editor/editor_lite_spec.js index 815457e012f..cf3e2c025e4 100644 --- a/spec/frontend/editor/editor_lite_spec.js +++ b/spec/frontend/editor/editor_lite_spec.js @@ -2,12 +2,12 @@ import { editor as monacoEditor, languages as monacoLanguages } from 'monaco-editor'; import waitForPromises from 'helpers/wait_for_promises'; import { - EDITOR_LITE_INSTANCE_ERROR_NO_EL, + SOURCE_EDITOR_INSTANCE_ERROR_NO_EL, URI_PREFIX, EDITOR_READY_EVENT, } from '~/editor/constants'; -import EditorLite from '~/editor/editor_lite'; -import { EditorLiteExtension } from '~/editor/extensions/editor_lite_extension_base'; +import { SourceEditorExtension } from '~/editor/extensions/source_editor_extension_base'; +import SourceEditor from '~/editor/source_editor'; import { DEFAULT_THEME, themes } from '~/ide/lib/themes'; import { joinPaths } from '~/lib/utils/url_utility'; @@ -25,7 +25,7 @@ describe('Base editor', () => { setFixtures('<div id="editor" data-editor-loading></div>'); editorEl = document.getElementById('editor'); defaultArguments = { el: editorEl, blobPath, blobContent, blobGlobalId }; - editor = new EditorLite(); + editor = new SourceEditor(); }); afterEach(() => { @@ -49,7 +49,7 @@ describe('Base editor', () => { expect(editorEl.dataset.editorLoading).toBeUndefined(); }); - describe('instance of the Editor Lite', () => { + describe('instance of the Source Editor', () => { let modelSpy; let instanceSpy; const setModel = jest.fn(); @@ -58,7 +58,7 @@ describe('Base editor', () => { modelSpy = jest.spyOn(monacoEditor, 'createModel').mockImplementation(() => res); }; const mockDecorateInstance = (decorations = {}) => { - jest.spyOn(EditorLite, 'convertMonacoToELInstance').mockImplementation((inst) => { + jest.spyOn(SourceEditor, 'convertMonacoToELInstance').mockImplementation((inst) => { return Object.assign(inst, decorations); }); }; @@ -76,11 +76,11 @@ describe('Base editor', () => { mockDecorateInstance(); expect(() => { editor.createInstance(); - }).toThrow(EDITOR_LITE_INSTANCE_ERROR_NO_EL); + }).toThrow(SOURCE_EDITOR_INSTANCE_ERROR_NO_EL); expect(modelSpy).not.toHaveBeenCalled(); expect(instanceSpy).not.toHaveBeenCalled(); - expect(EditorLite.convertMonacoToELInstance).not.toHaveBeenCalled(); + expect(SourceEditor.convertMonacoToELInstance).not.toHaveBeenCalled(); }); it('creates model to be supplied to Monaco editor', () => { @@ -261,7 +261,7 @@ describe('Base editor', () => { blobPath, }; - editor = new EditorLite(); + editor = new SourceEditor(); instanceSpy = jest.spyOn(monacoEditor, 'create'); }); @@ -304,7 +304,7 @@ describe('Base editor', () => { }); it('shares global editor options among all instances', () => { - editor = new EditorLite({ + editor = new SourceEditor({ readOnly: true, }); @@ -316,7 +316,7 @@ describe('Base editor', () => { }); it('allows overriding editor options on the instance level', () => { - editor = new EditorLite({ + editor = new SourceEditor({ readOnly: true, }); inst1 = editor.createInstance({ @@ -410,7 +410,7 @@ describe('Base editor', () => { return WithStaticMethod.computeBoo(this.base); } } - class WithStaticMethodExtended extends EditorLiteExtension { + class WithStaticMethodExtended extends SourceEditorExtension { static computeBoo(a) { return a + 1; } @@ -546,7 +546,7 @@ describe('Base editor', () => { beforeEach(() => { editorExtensionSpy = jest - .spyOn(EditorLite, 'pushToImportsArray') + .spyOn(SourceEditor, 'pushToImportsArray') .mockImplementation((arr) => { arr.push( Promise.resolve({ @@ -593,7 +593,7 @@ describe('Base editor', () => { const useSpy = jest.fn().mockImplementation(() => { calls.push('use'); }); - jest.spyOn(EditorLite, 'convertMonacoToELInstance').mockImplementation((inst) => { + jest.spyOn(SourceEditor, 'convertMonacoToELInstance').mockImplementation((inst) => { const decoratedInstance = inst; decoratedInstance.use = useSpy; return decoratedInstance; @@ -664,7 +664,7 @@ describe('Base editor', () => { it('sets default syntax highlighting theme', () => { const expectedTheme = themes.find((t) => t.name === DEFAULT_THEME); - editor = new EditorLite(); + editor = new SourceEditor(); expect(themeDefineSpy).toHaveBeenCalledWith(DEFAULT_THEME, expectedTheme.data); expect(themeSetSpy).toHaveBeenCalledWith(DEFAULT_THEME); @@ -676,7 +676,7 @@ describe('Base editor', () => { expect(expectedTheme.name).not.toBe(DEFAULT_THEME); window.gon.user_color_scheme = expectedTheme.name; - editor = new EditorLite(); + editor = new SourceEditor(); expect(themeDefineSpy).toHaveBeenCalledWith(expectedTheme.name, expectedTheme.data); expect(themeSetSpy).toHaveBeenCalledWith(expectedTheme.name); @@ -687,7 +687,7 @@ describe('Base editor', () => { const nonExistentTheme = { name }; window.gon.user_color_scheme = nonExistentTheme.name; - editor = new EditorLite(); + editor = new SourceEditor(); expect(themeDefineSpy).not.toHaveBeenCalled(); expect(themeSetSpy).toHaveBeenCalledWith(DEFAULT_THEME); diff --git a/spec/frontend/editor/editor_markdown_ext_spec.js b/spec/frontend/editor/editor_markdown_ext_spec.js index 3f64dcfd7a0..943e21250b4 100644 --- a/spec/frontend/editor/editor_markdown_ext_spec.js +++ b/spec/frontend/editor/editor_markdown_ext_spec.js @@ -1,8 +1,8 @@ import { Range, Position } from 'monaco-editor'; -import EditorLite from '~/editor/editor_lite'; -import { EditorMarkdownExtension } from '~/editor/extensions/editor_markdown_ext'; +import { EditorMarkdownExtension } from '~/editor/extensions/source_editor_markdown_ext'; +import SourceEditor from '~/editor/source_editor'; -describe('Markdown Extension for Editor Lite', () => { +describe('Markdown Extension for Source Editor', () => { let editor; let instance; let editorEl; @@ -25,7 +25,7 @@ describe('Markdown Extension for Editor Lite', () => { beforeEach(() => { setFixtures('<div id="editor" data-editor-loading></div>'); editorEl = document.getElementById('editor'); - editor = new EditorLite(); + editor = new SourceEditor(); instance = editor.createInstance({ el: editorEl, blobPath: filePath, diff --git a/spec/frontend/fixtures/prometheus_service.rb b/spec/frontend/fixtures/prometheus_service.rb index 3a59ecf3868..c349f2a24bc 100644 --- a/spec/frontend/fixtures/prometheus_service.rb +++ b/spec/frontend/fixtures/prometheus_service.rb @@ -7,7 +7,7 @@ RSpec.describe Projects::ServicesController, '(JavaScript fixtures)', type: :con let(:namespace) { create(:namespace, name: 'frontend-fixtures' )} let(:project) { create(:project_empty_repo, namespace: namespace, path: 'services-project') } - let!(:service) { create(:prometheus_service, project: project) } + let!(:integration) { create(:prometheus_integration, project: project) } let(:user) { project.owner } render_views @@ -28,7 +28,7 @@ RSpec.describe Projects::ServicesController, '(JavaScript fixtures)', type: :con get :edit, params: { namespace_id: namespace, project_id: project, - id: service.to_param + id: integration.to_param } expect(response).to be_successful diff --git a/spec/frontend/ide/components/repo_editor_spec.js b/spec/frontend/ide/components/repo_editor_spec.js index 8e8fb31b15a..e4ddd706628 100644 --- a/spec/frontend/ide/components/repo_editor_spec.js +++ b/spec/frontend/ide/components/repo_editor_spec.js @@ -8,8 +8,8 @@ import waitForPromises from 'helpers/wait_for_promises'; import waitUsingRealTimer from 'helpers/wait_using_real_timer'; import { exampleConfigs, exampleFiles } from 'jest/ide/lib/editorconfig/mock_data'; import { EDITOR_CODE_INSTANCE_FN, EDITOR_DIFF_INSTANCE_FN } from '~/editor/constants'; -import EditorLite from '~/editor/editor_lite'; -import { EditorWebIdeExtension } from '~/editor/extensions/editor_lite_webide_ext'; +import { EditorWebIdeExtension } from '~/editor/extensions/source_editor_webide_ext'; +import SourceEditor from '~/editor/source_editor'; import RepoEditor from '~/ide/components/repo_editor.vue'; import { leftSidebarViews, @@ -123,8 +123,8 @@ describe('RepoEditor', () => { const findPreviewTab = () => wrapper.find('[data-testid="preview-tab"]'); beforeEach(() => { - createInstanceSpy = jest.spyOn(EditorLite.prototype, EDITOR_CODE_INSTANCE_FN); - createDiffInstanceSpy = jest.spyOn(EditorLite.prototype, EDITOR_DIFF_INSTANCE_FN); + createInstanceSpy = jest.spyOn(SourceEditor.prototype, EDITOR_CODE_INSTANCE_FN); + createDiffInstanceSpy = jest.spyOn(SourceEditor.prototype, EDITOR_DIFF_INSTANCE_FN); createModelSpy = jest.spyOn(monacoEditor, 'createModel'); jest.spyOn(service, 'getFileData').mockResolvedValue(); jest.spyOn(service, 'getRawFileData').mockResolvedValue(); @@ -252,7 +252,7 @@ describe('RepoEditor', () => { ); it('installs the WebIDE extension', async () => { - const extensionSpy = jest.spyOn(EditorLite, 'instanceApplyExtension'); + const extensionSpy = jest.spyOn(SourceEditor, 'instanceApplyExtension'); await createComponent(); expect(extensionSpy).toHaveBeenCalled(); Reflect.ownKeys(EditorWebIdeExtension.prototype) diff --git a/spec/frontend/lib/utils/text_markdown_spec.js b/spec/frontend/lib/utils/text_markdown_spec.js index cad500039c0..beedb9b2eba 100644 --- a/spec/frontend/lib/utils/text_markdown_spec.js +++ b/spec/frontend/lib/utils/text_markdown_spec.js @@ -300,7 +300,7 @@ describe('init markdown', () => { }); }); - describe('Editor Lite', () => { + describe('Source Editor', () => { let editor; beforeEach(() => { diff --git a/spec/frontend/packages/list/components/__snapshots__/packages_list_app_spec.js.snap b/spec/frontend/packages/list/components/__snapshots__/packages_list_app_spec.js.snap index 07aba62fef6..dbebdeeb452 100644 --- a/spec/frontend/packages/list/components/__snapshots__/packages_list_app_spec.js.snap +++ b/spec/frontend/packages/list/components/__snapshots__/packages_list_app_spec.js.snap @@ -21,6 +21,7 @@ exports[`packages_list_app renders 1`] = ` <img alt="" class="gl-max-w-full" + role="img" src="helpSvg" /> </div> diff --git a/spec/frontend/pipeline_editor/components/editor/ci_config_merged_preview_spec.js b/spec/frontend/pipeline_editor/components/editor/ci_config_merged_preview_spec.js index fb191fccb0d..7dd8a77d055 100644 --- a/spec/frontend/pipeline_editor/components/editor/ci_config_merged_preview_spec.js +++ b/spec/frontend/pipeline_editor/components/editor/ci_config_merged_preview_spec.js @@ -8,7 +8,7 @@ import { mockLintResponse, mockCiConfigPath } from '../../mock_data'; describe('Text editor component', () => { let wrapper; - const MockEditorLite = { + const MockSourceEditor = { template: '<div/>', props: ['value', 'fileName', 'editorOptions'], mounted() { @@ -26,13 +26,13 @@ describe('Text editor component', () => { ciConfigPath: mockCiConfigPath, }, stubs: { - EditorLite: MockEditorLite, + SourceEditor: MockSourceEditor, }, }); }; const findIcon = () => wrapper.findComponent(GlIcon); - const findEditor = () => wrapper.findComponent(MockEditorLite); + const findEditor = () => wrapper.findComponent(MockSourceEditor); afterEach(() => { wrapper.destroy(); diff --git a/spec/frontend/pipeline_editor/components/editor/text_editor_spec.js b/spec/frontend/pipeline_editor/components/editor/text_editor_spec.js index 6f9245e39aa..c6c7f593cc5 100644 --- a/spec/frontend/pipeline_editor/components/editor/text_editor_spec.js +++ b/spec/frontend/pipeline_editor/components/editor/text_editor_spec.js @@ -1,7 +1,7 @@ import { shallowMount } from '@vue/test-utils'; import { EDITOR_READY_EVENT } from '~/editor/constants'; -import { EditorLiteExtension } from '~/editor/extensions/editor_lite_extension_base'; +import { SourceEditorExtension } from '~/editor/extensions/source_editor_extension_base'; import TextEditor from '~/pipeline_editor/components/editor/text_editor.vue'; import { mockCiConfigPath, @@ -19,7 +19,7 @@ describe('Pipeline Editor | Text editor component', () => { let mockUse; let mockRegisterCiSchema; - const MockEditorLite = { + const MockSourceEditor = { template: '<div/>', props: ['value', 'fileName'], mounted() { @@ -55,15 +55,15 @@ describe('Pipeline Editor | Text editor component', () => { [EDITOR_READY_EVENT]: editorReadyListener, }, stubs: { - EditorLite: MockEditorLite, + SourceEditor: MockSourceEditor, }, }); }; - const findEditor = () => wrapper.findComponent(MockEditorLite); + const findEditor = () => wrapper.findComponent(MockSourceEditor); beforeEach(() => { - EditorLiteExtension.deferRerender = jest.fn(); + SourceEditorExtension.deferRerender = jest.fn(); }); afterEach(() => { diff --git a/spec/frontend/pipeline_editor/components/ui/editor_tab_spec.js b/spec/frontend/pipeline_editor/components/ui/editor_tab_spec.js index 8def83d578b..3becf82ed6e 100644 --- a/spec/frontend/pipeline_editor/components/ui/editor_tab_spec.js +++ b/spec/frontend/pipeline_editor/components/ui/editor_tab_spec.js @@ -6,7 +6,7 @@ import EditorTab from '~/pipeline_editor/components/ui/editor_tab.vue'; const mockContent1 = 'MOCK CONTENT 1'; const mockContent2 = 'MOCK CONTENT 2'; -const MockEditorLite = { +const MockSourceEditor = { template: '<div>EDITOR</div>', }; @@ -48,12 +48,12 @@ describe('~/pipeline_editor/components/ui/editor_tab.vue', () => { wrapper = mount(EditorTab, { propsData: props, slots: { - default: MockEditorLite, + default: MockSourceEditor, }, }); }; - const findSlotComponent = () => wrapper.findComponent(MockEditorLite); + const findSlotComponent = () => wrapper.findComponent(MockSourceEditor); const findAlert = () => wrapper.findComponent(GlAlert); beforeEach(() => { diff --git a/spec/frontend/pipeline_editor/pipeline_editor_app_spec.js b/spec/frontend/pipeline_editor/pipeline_editor_app_spec.js index c88fe159c0d..9fbc30af9b1 100644 --- a/spec/frontend/pipeline_editor/pipeline_editor_app_spec.js +++ b/spec/frontend/pipeline_editor/pipeline_editor_app_spec.js @@ -25,7 +25,7 @@ import { const localVue = createLocalVue(); localVue.use(VueApollo); -const MockEditorLite = { +const MockSourceEditor = { template: '<div/>', }; @@ -55,7 +55,7 @@ describe('Pipeline editor app component', () => { PipelineEditorHome, PipelineEditorTabs, PipelineEditorMessages, - EditorLite: MockEditorLite, + SourceEditor: MockSourceEditor, PipelineEditorEmptyState, }, mocks: { diff --git a/spec/frontend/serverless/components/__snapshots__/empty_state_spec.js.snap b/spec/frontend/serverless/components/__snapshots__/empty_state_spec.js.snap index 36f6746b754..53bef449c2f 100644 --- a/spec/frontend/serverless/components/__snapshots__/empty_state_spec.js.snap +++ b/spec/frontend/serverless/components/__snapshots__/empty_state_spec.js.snap @@ -3,7 +3,7 @@ exports[`EmptyStateComponent should render content 1`] = ` "<section class=\\"row empty-state text-center\\"> <div class=\\"col-12\\"> - <div class=\\"svg-250 svg-content\\"><img src=\\"/image.svg\\" alt=\\"\\" class=\\"gl-max-w-full\\"></div> + <div class=\\"svg-250 svg-content\\"><img src=\\"/image.svg\\" alt=\\"\\" role=\\"img\\" class=\\"gl-max-w-full\\"></div> </div> <div class=\\"col-12\\"> <div class=\\"text-content gl-mx-auto gl-my-0 gl-p-5\\"> diff --git a/spec/frontend/snippets/components/__snapshots__/snippet_blob_edit_spec.js.snap b/spec/frontend/snippets/components/__snapshots__/snippet_blob_edit_spec.js.snap index b0c253bca65..e12255fe825 100644 --- a/spec/frontend/snippets/components/__snapshots__/snippet_blob_edit_spec.js.snap +++ b/spec/frontend/snippets/components/__snapshots__/snippet_blob_edit_spec.js.snap @@ -13,7 +13,7 @@ exports[`Snippet Blob Edit component with loaded blob matches snapshot 1`] = ` value="foo/bar/test.md" /> - <editor-lite-stub + <source-editor-stub editoroptions="[object Object]" fileglobalid="blob_local_7" filename="foo/bar/test.md" diff --git a/spec/frontend/snippets/components/snippet_blob_edit_spec.js b/spec/frontend/snippets/components/snippet_blob_edit_spec.js index 4b3b21c5507..7ea27864519 100644 --- a/spec/frontend/snippets/components/snippet_blob_edit_spec.js +++ b/spec/frontend/snippets/components/snippet_blob_edit_spec.js @@ -8,7 +8,7 @@ import createFlash from '~/flash'; import axios from '~/lib/utils/axios_utils'; import { joinPaths } from '~/lib/utils/url_utility'; import SnippetBlobEdit from '~/snippets/components/snippet_blob_edit.vue'; -import EditorLite from '~/vue_shared/components/editor_lite.vue'; +import SourceEditor from '~/vue_shared/components/source_editor.vue'; jest.mock('~/flash'); @@ -48,7 +48,7 @@ describe('Snippet Blob Edit component', () => { const findLoadingIcon = () => wrapper.find(GlLoadingIcon); const findHeader = () => wrapper.find(BlobHeaderEdit); - const findContent = () => wrapper.find(EditorLite); + const findContent = () => wrapper.find(SourceEditor); const getLastUpdatedArgs = () => { const event = wrapper.emitted()['blob-updated']; diff --git a/spec/frontend/vue_shared/components/__snapshots__/editor_lite_spec.js.snap b/spec/frontend/vue_shared/components/__snapshots__/editor_lite_spec.js.snap index 26785855369..7ce155f6a5d 100644 --- a/spec/frontend/vue_shared/components/__snapshots__/editor_lite_spec.js.snap +++ b/spec/frontend/vue_shared/components/__snapshots__/editor_lite_spec.js.snap @@ -1,9 +1,9 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Editor Lite component rendering matches the snapshot 1`] = ` +exports[`Source Editor component rendering matches the snapshot 1`] = ` <div data-editor-loading="" - id="editor-lite-snippet_777" + id="source-editor-snippet_777" > <pre class="editor-loading-content" diff --git a/spec/frontend/vue_shared/components/blob_viewers/simple_viewer_spec.js b/spec/frontend/vue_shared/components/blob_viewers/simple_viewer_spec.js index 46d4edad891..c6c351a7f3f 100644 --- a/spec/frontend/vue_shared/components/blob_viewers/simple_viewer_spec.js +++ b/spec/frontend/vue_shared/components/blob_viewers/simple_viewer_spec.js @@ -2,7 +2,7 @@ import { shallowMount } from '@vue/test-utils'; import waitForPromises from 'helpers/wait_for_promises'; import { HIGHLIGHT_CLASS_NAME } from '~/vue_shared/components/blob_viewers/constants'; import SimpleViewer from '~/vue_shared/components/blob_viewers/simple_viewer.vue'; -import EditorLite from '~/vue_shared/components/editor_lite.vue'; +import SourceEditor from '~/vue_shared/components/source_editor.vue'; describe('Blob Simple Viewer component', () => { let wrapper; @@ -96,7 +96,7 @@ describe('Blob Simple Viewer component', () => { }); describe('Vue refactoring to use Source Editor', () => { - const findEditorLite = () => wrapper.find(EditorLite); + const findSourceEditor = () => wrapper.find(SourceEditor); it.each` doesRender | condition | isRawContent | isRefactorFlagEnabled @@ -105,19 +105,19 @@ describe('Blob Simple Viewer component', () => { ${'Does not'} | ${'both, the FF and rawContent are not specified'} | ${false} | ${false} ${'Does'} | ${'both, the FF and rawContent are specified'} | ${true} | ${true} `( - '$doesRender render Editor Lite component in readonly mode when $condition', + '$doesRender render Source Editor component in readonly mode when $condition', async ({ isRawContent, isRefactorFlagEnabled } = {}) => { createComponent('raw content', isRawContent, isRefactorFlagEnabled); await waitForPromises(); if (isRawContent && isRefactorFlagEnabled) { - expect(findEditorLite().exists()).toBe(true); + expect(findSourceEditor().exists()).toBe(true); - expect(findEditorLite().props('value')).toBe('raw content'); - expect(findEditorLite().props('fileName')).toBe('test.js'); - expect(findEditorLite().props('editorOptions')).toEqual({ readOnly: true }); + expect(findSourceEditor().props('value')).toBe('raw content'); + expect(findSourceEditor().props('fileName')).toBe('test.js'); + expect(findSourceEditor().props('editorOptions')).toEqual({ readOnly: true }); } else { - expect(findEditorLite().exists()).toBe(false); + expect(findSourceEditor().exists()).toBe(false); } }, ); diff --git a/spec/frontend/vue_shared/components/editor_lite_spec.js b/spec/frontend/vue_shared/components/editor_lite_spec.js index badd5aed0e3..dca4d60e23c 100644 --- a/spec/frontend/vue_shared/components/editor_lite_spec.js +++ b/spec/frontend/vue_shared/components/editor_lite_spec.js @@ -1,12 +1,12 @@ import { shallowMount } from '@vue/test-utils'; import { nextTick } from 'vue'; import { EDITOR_READY_EVENT } from '~/editor/constants'; -import Editor from '~/editor/editor_lite'; -import EditorLite from '~/vue_shared/components/editor_lite.vue'; +import Editor from '~/editor/source_editor'; +import SourceEditor from '~/vue_shared/components/source_editor.vue'; -jest.mock('~/editor/editor_lite'); +jest.mock('~/editor/source_editor'); -describe('Editor Lite component', () => { +describe('Source Editor component', () => { let wrapper; let mockInstance; @@ -30,7 +30,7 @@ describe('Editor Lite component', () => { }; }); function createComponent(props = {}) { - wrapper = shallowMount(EditorLite, { + wrapper = shallowMount(SourceEditor, { propsData: { value, fileName, @@ -73,10 +73,10 @@ describe('Editor Lite component', () => { createComponent({ value: undefined }); expect(spy).not.toHaveBeenCalled(); - expect(wrapper.find('[id^="editor-lite-"]').exists()).toBe(true); + expect(wrapper.find('[id^="source-editor-"]').exists()).toBe(true); }); - it('initialises Editor Lite instance', () => { + it('initialises Source Editor instance', () => { const el = wrapper.find({ ref: 'editor' }).element; expect(createInstanceMock).toHaveBeenCalledWith({ el, @@ -111,7 +111,7 @@ describe('Editor Lite component', () => { expect(wrapper.emitted().input).toEqual([[value]]); }); - it('emits EDITOR_READY_EVENT event when the Editor Lite is ready', async () => { + it('emits EDITOR_READY_EVENT event when the Source Editor is ready', async () => { const el = wrapper.find({ ref: 'editor' }).element; expect(wrapper.emitted()[EDITOR_READY_EVENT]).toBeUndefined(); diff --git a/spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb b/spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb index 888b56d6a23..164bd9b1e39 100644 --- a/spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb +++ b/spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb @@ -19,7 +19,7 @@ RSpec.describe Mutations::AlertManagement::PrometheusIntegration::Create do end context 'when Prometheus Integration already exists' do - let_it_be(:existing_integration) { create(:prometheus_service, project: project) } + let_it_be(:existing_integration) { create(:prometheus_integration, project: project) } it 'returns errors' do expect(resolve).to eq( diff --git a/spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb b/spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb index c9e1bf4162c..be07c142f4e 100644 --- a/spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb +++ b/spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' RSpec.describe Mutations::AlertManagement::PrometheusIntegration::ResetToken do let_it_be(:current_user) { create(:user) } let_it_be(:project) { create(:project) } - let_it_be(:integration) { create(:prometheus_service, project: project) } + let_it_be(:integration) { create(:prometheus_integration, project: project) } let(:args) { { id: GitlabSchema.id_from_object(integration) } } diff --git a/spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb b/spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb index 19e0d53b75f..81d057c6ae2 100644 --- a/spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb +++ b/spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb @@ -5,7 +5,7 @@ require 'spec_helper' RSpec.describe Mutations::AlertManagement::PrometheusIntegration::Update do let_it_be(:current_user) { create(:user) } let_it_be(:project) { create(:project) } - let_it_be(:integration) { create(:prometheus_service, project: project) } + let_it_be(:integration) { create(:prometheus_integration, project: project) } let(:args) { { id: GitlabSchema.id_from_object(integration), active: false, api_url: 'http://new-url.com' } } diff --git a/spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb b/spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb index a4d1101bc4f..0f40565c5d3 100644 --- a/spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb +++ b/spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb @@ -9,7 +9,7 @@ RSpec.describe Resolvers::AlertManagement::HttpIntegrationsResolver do let_it_be(:developer) { create(:user) } let_it_be(:maintainer) { create(:user) } let_it_be(:project) { create(:project) } - let_it_be(:prometheus_integration) { create(:prometheus_service, project: project) } + let_it_be(:prometheus_integration) { create(:prometheus_integration, project: project) } let_it_be(:active_http_integration) { create(:alert_management_http_integration, project: project) } let_it_be(:inactive_http_integration) { create(:alert_management_http_integration, :inactive, project: project) } let_it_be(:other_proj_integration) { create(:alert_management_http_integration) } diff --git a/spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb b/spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb index fb0fb6729d4..11114d41522 100644 --- a/spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb +++ b/spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb @@ -8,11 +8,11 @@ RSpec.describe Resolvers::AlertManagement::IntegrationsResolver do let_it_be(:current_user) { create(:user) } let_it_be(:project) { create(:project) } let_it_be(:project2) { create(:project) } - let_it_be(:prometheus_integration) { create(:prometheus_service, project: project) } + let_it_be(:prometheus_integration) { create(:prometheus_integration, project: project) } let_it_be(:active_http_integration) { create(:alert_management_http_integration, project: project) } let_it_be(:inactive_http_integration) { create(:alert_management_http_integration, :inactive, project: project) } let_it_be(:other_proj_integration) { create(:alert_management_http_integration, project: project2) } - let_it_be(:other_proj_prometheus_integration) { create(:prometheus_service, project: project2) } + let_it_be(:other_proj_prometheus_integration) { create(:prometheus_integration, project: project2) } let(:params) { {} } diff --git a/spec/graphql/types/alert_management/prometheus_integration_type_spec.rb b/spec/graphql/types/alert_management/prometheus_integration_type_spec.rb index d057afb331c..31cf94aef44 100644 --- a/spec/graphql/types/alert_management/prometheus_integration_type_spec.rb +++ b/spec/graphql/types/alert_management/prometheus_integration_type_spec.rb @@ -17,7 +17,7 @@ RSpec.describe GitlabSchema.types['AlertManagementPrometheusIntegration'] do end end - let_it_be_with_reload(:integration) { create(:prometheus_service) } + let_it_be_with_reload(:integration) { create(:prometheus_integration) } let_it_be(:user) { create(:user, maintainer_projects: [integration.project]) } it_behaves_like 'has field with value', 'name' do @@ -50,7 +50,7 @@ RSpec.describe GitlabSchema.types['AlertManagementPrometheusIntegration'] do describe 'a group integration' do let_it_be(:group) { create(:group) } - let_it_be(:integration) { create(:prometheus_service, project: nil, group: group) } + let_it_be(:integration) { create(:prometheus_integration, project: nil, group: group) } # Since it is impossible to authorize the parent here, given that the # project is nil, all fields should be redacted: diff --git a/spec/helpers/environments_helper_spec.rb b/spec/helpers/environments_helper_spec.rb index 96869fcc777..22867a5b652 100644 --- a/spec/helpers/environments_helper_spec.rb +++ b/spec/helpers/environments_helper_spec.rb @@ -122,7 +122,7 @@ RSpec.describe EnvironmentsHelper do end context 'has_managed_prometheus' do - context 'without prometheus service' do + context 'without prometheus integration' do it "doesn't have managed prometheus" do expect(metrics_data).to include( 'has_managed_prometheus' => 'false' @@ -130,12 +130,12 @@ RSpec.describe EnvironmentsHelper do end end - context 'with prometheus service' do - let_it_be(:prometheus_service) { create(:prometheus_service, project: project) } + context 'with prometheus integration' do + let_it_be(:prometheus_integration) { create(:prometheus_integration, project: project) } - context 'when manual prometheus service is active' do + context 'when manual prometheus integration is active' do it "doesn't have managed prometheus" do - prometheus_service.update!(manual_configuration: true) + prometheus_integration.update!(manual_configuration: true) expect(metrics_data).to include( 'has_managed_prometheus' => 'false' @@ -143,9 +143,9 @@ RSpec.describe EnvironmentsHelper do end end - context 'when prometheus service is inactive' do + context 'when prometheus integration is inactive' do it "doesn't have managed prometheus" do - prometheus_service.update!(manual_configuration: false) + prometheus_integration.update!(manual_configuration: false) expect(metrics_data).to include( 'has_managed_prometheus' => 'false' diff --git a/spec/helpers/operations_helper_spec.rb b/spec/helpers/operations_helper_spec.rb index 61c6bb1ccf7..d18170cffbd 100644 --- a/spec/helpers/operations_helper_spec.rb +++ b/spec/helpers/operations_helper_spec.rb @@ -20,19 +20,19 @@ RSpec.describe OperationsHelper do allow(helper).to receive(:can?).with(user, :admin_operations, project) { true } end - context 'initial service configuration' do - let_it_be(:prometheus_service) { ::Integrations::Prometheus.new(project: project) } + context 'initial integration configuration' do + let_it_be(:prometheus_integration) { ::Integrations::Prometheus.new(project: project) } before do allow(project).to receive(:find_or_initialize_service).and_call_original - allow(project).to receive(:find_or_initialize_service).with('prometheus').and_return(prometheus_service) + allow(project).to receive(:find_or_initialize_service).with('prometheus').and_return(prometheus_integration) end it 'returns the correct values' do expect(subject).to eq( 'alerts_setup_url' => help_page_path('operations/incident_management/integrations.md', anchor: 'configuration'), 'alerts_usage_url' => project_alert_management_index_path(project), - 'prometheus_form_path' => project_service_path(project, prometheus_service), + 'prometheus_form_path' => project_service_path(project, prometheus_integration), 'prometheus_reset_key_path' => reset_alerting_token_project_settings_operations_path(project), 'prometheus_authorization_key' => nil, 'prometheus_api_url' => nil, @@ -53,15 +53,15 @@ RSpec.describe OperationsHelper do end context 'with external Prometheus configured' do - let_it_be(:prometheus_service, reload: true) do - create(:prometheus_service, project: project) + let_it_be(:prometheus_integration, reload: true) do + create(:prometheus_integration, project: project) end context 'with external Prometheus enabled' do it 'returns the correct values' do expect(subject).to include( 'prometheus_activated' => 'true', - 'prometheus_api_url' => prometheus_service.api_url + 'prometheus_api_url' => prometheus_integration.api_url ) end end @@ -71,7 +71,7 @@ RSpec.describe OperationsHelper do it 'returns the correct values' do expect(subject).to include( 'prometheus_activated' => 'false', - 'prometheus_api_url' => prometheus_service.api_url + 'prometheus_api_url' => prometheus_integration.api_url ) end end @@ -79,11 +79,11 @@ RSpec.describe OperationsHelper do let(:cluster_managed) { false } before do - allow(prometheus_service) + allow(prometheus_integration) .to receive(:prometheus_available?) .and_return(cluster_managed) - prometheus_service.update!(manual_configuration: false) + prometheus_integration.update!(manual_configuration: false) end include_examples 'Prometheus is disabled' @@ -101,7 +101,7 @@ RSpec.describe OperationsHelper do it 'returns the correct values' do expect(subject).to include( 'prometheus_authorization_key' => project_alerting_setting.token, - 'prometheus_api_url' => prometheus_service.api_url + 'prometheus_api_url' => prometheus_integration.api_url ) end end diff --git a/spec/helpers/projects/alert_management_helper_spec.rb b/spec/helpers/projects/alert_management_helper_spec.rb index 9895d06f93a..2450f7838b3 100644 --- a/spec/helpers/projects/alert_management_helper_spec.rb +++ b/spec/helpers/projects/alert_management_helper_spec.rb @@ -41,12 +41,12 @@ RSpec.describe Projects::AlertManagementHelper do end end - context 'with prometheus service' do - let_it_be(:prometheus_service) { create(:prometheus_service, project: project) } + context 'with prometheus integration' do + let_it_be(:prometheus_integration) { create(:prometheus_integration, project: project) } - context 'when manual prometheus service is active' do + context 'when manual prometheus integration is active' do it "enables alert management and doesn't show managed prometheus" do - prometheus_service.update!(manual_configuration: true) + prometheus_integration.update!(manual_configuration: true) expect(data).to include( 'alert-management-enabled' => 'true' @@ -69,9 +69,9 @@ RSpec.describe Projects::AlertManagementHelper do end end - context 'when prometheus service is inactive' do + context 'when prometheus integration is inactive' do it 'disables alert management and hides managed prometheus' do - prometheus_service.update!(manual_configuration: false) + prometheus_integration.update!(manual_configuration: false) expect(data).to include( 'alert-management-enabled' => 'false' @@ -83,7 +83,7 @@ RSpec.describe Projects::AlertManagementHelper do end end - context 'without prometheus service' do + context 'without prometheus integration' do it "doesn't have managed prometheus" do expect(data).to include( 'has-managed-prometheus' => 'false' diff --git a/spec/helpers/registrations_helper_spec.rb b/spec/helpers/registrations_helper_spec.rb index fa647548b3c..b2f9a794cb3 100644 --- a/spec/helpers/registrations_helper_spec.rb +++ b/spec/helpers/registrations_helper_spec.rb @@ -3,30 +3,6 @@ require 'spec_helper' RSpec.describe RegistrationsHelper do - using RSpec::Parameterized::TableSyntax - - describe '#social_signin_enabled?' do - before do - allow(::Gitlab).to receive(:dev_env_or_com?).and_return(com) - allow(view).to receive(:omniauth_enabled?).and_return(omniauth_enabled) - allow(view).to receive(:button_based_providers_enabled?).and_return(button_based_providers_enabled) - allow(view).to receive(:devise_mapping).and_return(double(omniauthable?: omniauthable)) - end - - subject { helper.social_signin_enabled? } - - where com: [true, false], - omniauth_enabled: [true, false], - omniauthable: [true, false], - button_based_providers_enabled: [true, false] - - with_them do - let(:result) { com && omniauth_enabled && button_based_providers_enabled && omniauthable } - - it { is_expected.to eq(result) } - end - end - describe '#signup_username_data_attributes' do it 'has expected attributes' do expect(helper.signup_username_data_attributes.keys).to include(:min_length, :min_length_message, :max_length, :max_length_message, :qa_selector) diff --git a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb index fe08cdb1213..56d9514a16a 100644 --- a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb +++ b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb @@ -63,11 +63,11 @@ RSpec.describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService application_setting.update(allow_local_requests_from_web_hooks_and_services: true) end - shared_examples 'has prometheus service' do |server_address| + shared_examples 'has prometheus integration' do |server_address| it do expect(result[:status]).to eq(:success) - prometheus = project.prometheus_service + prometheus = project.prometheus_integration expect(prometheus).not_to eq(nil) expect(prometheus.api_url).to eq(server_address) expect(prometheus.active).to eq(true) @@ -75,7 +75,7 @@ RSpec.describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService end end - it_behaves_like 'has prometheus service', 'http://localhost:9090' + it_behaves_like 'has prometheus integration', 'http://localhost:9090' it 'is idempotent' do result1 = subject.execute @@ -134,7 +134,7 @@ RSpec.describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService expect(application_setting.reload.self_monitoring_project_id).to eq(project.id) end - it 'creates a Prometheus service' do + it 'creates a Prometheus integration' do expect(result[:status]).to eq(:success) integrations = result[:project].reload.integrations @@ -193,12 +193,12 @@ RSpec.describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService end end - context 'when local requests from hooks and services are not allowed' do + context 'when local requests from hooks and integrations are not allowed' do before do application_setting.update(allow_local_requests_from_web_hooks_and_services: false) end - it_behaves_like 'has prometheus service', 'http://localhost:9090' + it_behaves_like 'has prometheus integration', 'http://localhost:9090' end context 'with non default prometheus address' do @@ -211,18 +211,18 @@ RSpec.describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService } end - it_behaves_like 'has prometheus service', 'https://localhost:9090' + it_behaves_like 'has prometheus integration', 'https://localhost:9090' context 'with :9090 symbol' do let(:server_address) { :':9090' } - it_behaves_like 'has prometheus service', 'http://localhost:9090' + it_behaves_like 'has prometheus integration', 'http://localhost:9090' end context 'with 0.0.0.0:9090' do let(:server_address) { '0.0.0.0:9090' } - it_behaves_like 'has prometheus service', 'http://localhost:9090' + it_behaves_like 'has prometheus integration', 'http://localhost:9090' end end @@ -233,7 +233,7 @@ RSpec.describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService it 'does not fail' do expect(result).to include(status: :success) - expect(project.prometheus_service).to be_nil + expect(project.prometheus_integration).to be_nil end end @@ -244,7 +244,7 @@ RSpec.describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService it 'does not fail' do expect(result).to include(status: :success) - expect(project.prometheus_service).to be_nil + expect(project.prometheus_integration).to be_nil end end @@ -258,7 +258,7 @@ RSpec.describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService it 'does not configure prometheus' do expect(result).to include(status: :success) - expect(project.prometheus_service).to be_nil + expect(project.prometheus_integration).to be_nil end end @@ -267,7 +267,7 @@ RSpec.describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService it 'does not configure prometheus' do expect(result).to include(status: :success) - expect(project.prometheus_service).to be_nil + expect(project.prometheus_integration).to be_nil end end diff --git a/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb b/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb index 670c734ce08..b4c5c8ddec1 100644 --- a/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb +++ b/spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' RSpec.describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch do let(:merge_request) { create(:merge_request) } - let(:batch_page) { 1 } + let(:batch_page) { 0 } let(:batch_size) { 10 } let(:diffable) { merge_request.merge_request_diff } let(:diff_files_relation) { diffable.merge_request_diff_files } @@ -18,19 +18,15 @@ RSpec.describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch do let(:diff_files) { subject.diff_files } - before do - stub_feature_flags(diffs_gradual_load: false) - end - describe 'initialize' do it 'memoizes pagination_data' do - expect(subject.pagination_data).to eq(current_page: 1, next_page: 2, total_pages: 2) + expect(subject.pagination_data).to eq(current_page: nil, next_page: nil, total_pages: 20) end end describe '#diff_files' do let(:batch_size) { 3 } - let(:paginated_rel) { diff_files_relation.page(batch_page).per(batch_size) } + let(:paginated_rel) { diff_files_relation.offset(batch_page).limit(batch_size) } let(:expected_batch_files) do paginated_rel.map(&:new_path) @@ -51,7 +47,7 @@ RSpec.describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch do end context 'another page' do - let(:batch_page) { 2 } + let(:batch_page) { 1 } it 'returns correct diff files' do expect(diff_files.map(&:new_path)).to eq(expected_batch_files) @@ -63,7 +59,7 @@ RSpec.describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch do it 'returns correct diff files' do expected_batch_files = - diff_files_relation.page(described_class::DEFAULT_BATCH_PAGE).per(batch_size).map(&:new_path) + diff_files_relation.offset(described_class::DEFAULT_BATCH_PAGE).limit(batch_size).map(&:new_path) expect(diff_files.map(&:new_path)).to eq(expected_batch_files) end @@ -74,7 +70,7 @@ RSpec.describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch do it 'returns correct diff files' do expected_batch_files = - diff_files_relation.page(batch_page).per(described_class::DEFAULT_BATCH_SIZE).map(&:new_path) + diff_files_relation.offset(batch_page).limit(described_class::DEFAULT_BATCH_SIZE).map(&:new_path) expect(diff_files.map(&:new_path)).to eq(expected_batch_files) end @@ -90,29 +86,17 @@ RSpec.describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch do context 'last page' do it 'returns correct diff files' do - last_page = paginated_rel.total_pages + last_page = diff_files_relation.count - batch_size collection = described_class.new(diffable, last_page, batch_size, diff_options: nil) - expected_batch_files = diff_files_relation.page(last_page).per(batch_size).map(&:new_path) + expected_batch_files = diff_files_relation.offset(last_page).limit(batch_size).map(&:new_path) expect(collection.diff_files.map(&:new_path)).to eq(expected_batch_files) end end - - context 'with diffs gradual load feature flag enabled' do - let(:batch_page) { 0 } - - before do - stub_feature_flags(diffs_gradual_load: true) - end - - it 'returns correct diff files' do - expect(subject.diffs.map(&:new_path)).to eq(diff_files_relation.page(1).per(batch_size).map(&:new_path)) - end - end end it_behaves_like 'unfoldable diff' do @@ -130,7 +114,7 @@ RSpec.describe Gitlab::Diff::FileCollection::MergeRequestDiffBatch do end let(:diffable) { merge_request.merge_request_diff } - let(:batch_page) { 2 } + let(:batch_page) { 10 } let(:stub_path) { '.gitignore' } subject do diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index 92f694bd6d4..f84f06da9cf 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -373,7 +373,7 @@ project: - irker_integration - packagist_integration - pivotaltracker_integration -- prometheus_service +- prometheus_integration - flowdock_integration - assembla_integration - asana_integration diff --git a/spec/lib/gitlab/prometheus/adapter_spec.rb b/spec/lib/gitlab/prometheus/adapter_spec.rb index 1eaed65c805..c405fae3f7c 100644 --- a/spec/lib/gitlab/prometheus/adapter_spec.rb +++ b/spec/lib/gitlab/prometheus/adapter_spec.rb @@ -9,31 +9,31 @@ RSpec.describe Gitlab::Prometheus::Adapter do subject { described_class.new(project, cluster) } describe '#prometheus_adapter' do - context 'prometheus service can execute queries' do - let(:prometheus_service) { double(:prometheus_service, can_query?: true) } + context 'prometheus integration can execute queries' do + let(:prometheus_integration) { double(:prometheus_integration, can_query?: true) } before do - allow(project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_service + allow(project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_integration end - it 'return prometheus service as prometheus adapter' do - expect(subject.prometheus_adapter).to eq(prometheus_service) + it 'return prometheus integration as prometheus adapter' do + expect(subject.prometheus_adapter).to eq(prometheus_integration) end context 'with cluster with prometheus available' do let!(:prometheus) { create(:clusters_integrations_prometheus, cluster: cluster) } - it 'returns prometheus service' do - expect(subject.prometheus_adapter).to eq(prometheus_service) + it 'returns prometheus integration' do + expect(subject.prometheus_adapter).to eq(prometheus_integration) end end end - context "prometheus service can't execute queries" do - let(:prometheus_service) { double(:prometheus_service, can_query?: false) } + context "prometheus integration can't execute queries" do + let(:prometheus_integration) { double(:prometheus_integration, can_query?: false) } before do - allow(project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_service + allow(project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_integration end context 'with cluster with prometheus disabled' do diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb index 4bfa953df40..e131661602e 100644 --- a/spec/models/ability_spec.rb +++ b/spec/models/ability_spec.rb @@ -328,6 +328,69 @@ RSpec.describe Ability do end end + describe '.feature_flags_readable_by_user' do + context 'without a user' do + it 'returns no feature flags' do + feature_flag_1 = build(:operations_feature_flag) + feature_flag_2 = build(:operations_feature_flag, project: build(:project, :public)) + + feature_flags = described_class + .feature_flags_readable_by_user([feature_flag_1, feature_flag_2]) + + expect(feature_flags).to eq([]) + end + end + + context 'with a user' do + let(:user) { create(:user) } + let(:project) { create(:project) } + let(:feature_flag) { create(:operations_feature_flag, project: project) } + let(:cross_project) { create(:project) } + let(:cross_project_feature_flag) { create(:operations_feature_flag, project: cross_project) } + + let(:other_feature_flag) { create(:operations_feature_flag) } + let(:all_feature_flags) do + [feature_flag, cross_project_feature_flag, other_feature_flag] + end + + subject(:readable_feature_flags) do + described_class.feature_flags_readable_by_user(all_feature_flags, user) + end + + before do + project.add_developer(user) + cross_project.add_developer(user) + end + + it 'returns feature flags visible to the user' do + expect(readable_feature_flags).to contain_exactly(feature_flag, cross_project_feature_flag) + end + + context 'when a user cannot read cross project and a filter is passed' do + before do + allow(described_class).to receive(:allowed?).and_call_original + expect(described_class).to receive(:allowed?).with(user, :read_cross_project) { false } + end + + subject(:readable_feature_flags) do + read_cross_project_filter = -> (feature_flags) do + feature_flags.select { |flag| flag.project == project } + end + described_class.feature_flags_readable_by_user( + all_feature_flags, user, + filters: { read_cross_project: read_cross_project_filter } + ) + end + + it 'returns only feature flags of the specified project without checking access on others' do + expect(described_class).not_to receive(:allowed?).with(user, :read_feature_flag, cross_project_feature_flag) + + expect(readable_feature_flags).to contain_exactly(feature_flag) + end + end + end + end + describe '.project_disabled_features_rules' do let(:project) { create(:project, :wiki_disabled) } diff --git a/spec/models/clusters/integrations/prometheus_spec.rb b/spec/models/clusters/integrations/prometheus_spec.rb index 680786189ad..e529c751889 100644 --- a/spec/models/clusters/integrations/prometheus_spec.rb +++ b/spec/models/clusters/integrations/prometheus_spec.rb @@ -20,7 +20,7 @@ RSpec.describe Clusters::Integrations::Prometheus do let(:cluster) { create(:cluster, :with_installed_helm) } - it 'deactivates prometheus_service' do + it 'deactivates prometheus_integration' do expect(Clusters::Applications::DeactivateServiceWorker) .to receive(:perform_async).with(cluster.id, 'prometheus') @@ -35,7 +35,7 @@ RSpec.describe Clusters::Integrations::Prometheus do let(:enabled) { true } context 'when no change to enabled status' do - it 'does not touch project services' do + it 'does not touch project integrations' do integration # ensure integration exists before we set the expectations expect(Clusters::Applications::DeactivateServiceWorker) @@ -51,7 +51,7 @@ RSpec.describe Clusters::Integrations::Prometheus do context 'when enabling' do let(:enabled) { false } - it 'deactivates prometheus_service' do + it 'deactivates prometheus_integration' do expect(Clusters::Applications::ActivateServiceWorker) .to receive(:perform_async).with(cluster.id, 'prometheus') @@ -62,7 +62,7 @@ RSpec.describe Clusters::Integrations::Prometheus do context 'when disabling' do let(:enabled) { true } - it 'activates prometheus_service' do + it 'activates prometheus_integration' do expect(Clusters::Applications::DeactivateServiceWorker) .to receive(:perform_async).with(cluster.id, 'prometheus') diff --git a/spec/models/concerns/prometheus_adapter_spec.rb b/spec/models/concerns/prometheus_adapter_spec.rb index 235e505c6e9..01c987a1d92 100644 --- a/spec/models/concerns/prometheus_adapter_spec.rb +++ b/spec/models/concerns/prometheus_adapter_spec.rb @@ -7,7 +7,7 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do include ReactiveCachingHelpers let(:project) { create(:prometheus_project) } - let(:service) { project.prometheus_service } + let(:integration) { project.prometheus_integration } let(:described_class) do Class.new do @@ -29,10 +29,10 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do end context 'with valid data' do - subject { service.query(:validate, query) } + subject { integration.query(:validate, query) } before do - stub_reactive_cache(service, validation_respone, validation_query, query) + stub_reactive_cache(integration, validation_respone, validation_query, query) end it 'returns query data' do @@ -49,10 +49,10 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do end context 'with valid data' do - subject { service.query(:environment, environment) } + subject { integration.query(:environment, environment) } before do - stub_reactive_cache(service, prometheus_data, environment_query, environment.id) + stub_reactive_cache(integration, prometheus_data, environment_query, environment.id) end it 'returns reactive data' do @@ -66,11 +66,11 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do let(:prometheus_client) { double(:prometheus_client, label_values: nil) } context 'with valid data' do - subject { service.query(:matched_metrics) } + subject { integration.query(:matched_metrics) } before do - allow(service).to receive(:prometheus_client).and_return(prometheus_client) - synchronous_reactive_cache(service) + allow(integration).to receive(:prometheus_client).and_return(prometheus_client) + synchronous_reactive_cache(integration) end it 'returns reactive data' do @@ -89,10 +89,10 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do end context 'with valid data' do - subject { service.query(:deployment, deployment) } + subject { integration.query(:deployment, deployment) } before do - stub_reactive_cache(service, prometheus_data, deployment_query, deployment.id) + stub_reactive_cache(integration, prometheus_data, deployment_query, deployment.id) end it 'returns reactive data' do @@ -111,10 +111,10 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do end context 'with valid data' do - subject { service.query(:additional_metrics_environment, environment, *time_window) } + subject { integration.query(:additional_metrics_environment, environment, *time_window) } before do - stub_reactive_cache(service, prometheus_data, additional_metrics_environment_query, environment.id, *time_window) + stub_reactive_cache(integration, prometheus_data, additional_metrics_environment_query, environment.id, *time_window) end it 'returns reactive data' do @@ -128,21 +128,21 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do let(:environment) { create(:environment, slug: 'env-slug') } before do - service.manual_configuration = true - service.active = true + integration.manual_configuration = true + integration.active = true end subject do - service.calculate_reactive_cache(environment_query.name, environment.id) + integration.calculate_reactive_cache(environment_query.name, environment.id) end around do |example| freeze_time { example.run } end - context 'when service is inactive' do + context 'when integration is inactive' do before do - service.active = false + integration.active = false end it { is_expected.to be_nil } @@ -168,7 +168,7 @@ RSpec.describe PrometheusAdapter, :use_clean_rails_memory_store_caching do end describe '#build_query_args' do - subject { service.build_query_args(*args) } + subject { integration.build_query_args(*args) } context 'when active record models are included' do let(:args) { [double(:environment, id: 12)] } diff --git a/spec/models/deployment_metrics_spec.rb b/spec/models/deployment_metrics_spec.rb index a7a58cc9f85..8b5f120a9b7 100644 --- a/spec/models/deployment_metrics_spec.rb +++ b/spec/models/deployment_metrics_spec.rb @@ -15,35 +15,35 @@ RSpec.describe DeploymentMetrics do context 'when deployment is success' do let(:deployment) { create(:deployment, :success) } - context 'without a monitoring service' do + context 'without a monitoring integration' do it { is_expected.to be_falsy } end - context 'with a Prometheus Service' do - let(:prometheus_service) { instance_double(::Integrations::Prometheus, can_query?: true, configured?: true) } + context 'with a Prometheus integration' do + let(:prometheus_integration) { instance_double(::Integrations::Prometheus, can_query?: true, configured?: true) } before do - allow(deployment.project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_service + allow(deployment.project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_integration end it { is_expected.to be_truthy } end - context 'with a Prometheus Service that cannot query' do - let(:prometheus_service) { instance_double(::Integrations::Prometheus, configured?: true, can_query?: false) } + context 'with a Prometheus integration that cannot query' do + let(:prometheus_integration) { instance_double(::Integrations::Prometheus, configured?: true, can_query?: false) } before do - allow(deployment.project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_service + allow(deployment.project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_integration end it { is_expected.to be_falsy } end - context 'with a Prometheus Service that is not configured' do - let(:prometheus_service) { instance_double(::Integrations::Prometheus, configured?: false, can_query?: false) } + context 'with a Prometheus integration that is not configured' do + let(:prometheus_integration) { instance_double(::Integrations::Prometheus, configured?: false, can_query?: false) } before do - allow(deployment.project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_service + allow(deployment.project).to receive(:find_or_initialize_service).with('prometheus').and_return prometheus_integration end it { is_expected.to be_falsy } diff --git a/spec/models/integration_spec.rb b/spec/models/integration_spec.rb index e7661bf3eed..1f1ec64f404 100644 --- a/spec/models/integration_spec.rb +++ b/spec/models/integration_spec.rb @@ -341,36 +341,36 @@ RSpec.describe Integration do describe '.build_from_integration' do context 'when integration is invalid' do - let(:integration) do - build(:prometheus_service, :template, active: true, properties: {}) + let(:template_integration) do + build(:prometheus_integration, :template, active: true, properties: {}) .tap { |integration| integration.save!(validate: false) } end - it 'sets service to inactive' do - service = described_class.build_from_integration(integration, project_id: project.id) + it 'sets integration to inactive' do + integration = described_class.build_from_integration(template_integration, project_id: project.id) - expect(service).to be_valid - expect(service.active).to be false + expect(integration).to be_valid + expect(integration.active).to be false end end context 'when integration is an instance-level integration' do - let(:integration) { create(:jira_integration, :instance) } + let(:instance_integration) { create(:jira_integration, :instance) } it 'sets inherit_from_id from integration' do - service = described_class.build_from_integration(integration, project_id: project.id) + integration = described_class.build_from_integration(instance_integration, project_id: project.id) - expect(service.inherit_from_id).to eq(integration.id) + expect(integration.inherit_from_id).to eq(instance_integration.id) end end context 'when integration is a group-level integration' do - let(:integration) { create(:jira_integration, group: group, project: nil) } + let(:group_integration) { create(:jira_integration, group: group, project: nil) } it 'sets inherit_from_id from integration' do - service = described_class.build_from_integration(integration, project_id: project.id) + integration = described_class.build_from_integration(group_integration, project_id: project.id) - expect(service.inherit_from_id).to eq(integration.id) + expect(integration.inherit_from_id).to eq(group_integration.id) end end @@ -531,9 +531,9 @@ RSpec.describe Integration do describe '.create_from_active_default_integrations' do context 'with an active integration template' do - let_it_be(:template_integration) { create(:prometheus_service, :template, api_url: 'https://prometheus.template.com/') } + let_it_be(:template_integration) { create(:prometheus_integration, :template, api_url: 'https://prometheus.template.com/') } - it 'creates a service from the template' do + it 'creates an integration from the template' do described_class.create_from_active_default_integrations(project, :project_id, with_templates: true) expect(project.reload.integrations.size).to eq(1) @@ -542,9 +542,9 @@ RSpec.describe Integration do end context 'with an active instance-level integration' do - let!(:instance_integration) { create(:prometheus_service, :instance, api_url: 'https://prometheus.instance.com/') } + let!(:instance_integration) { create(:prometheus_integration, :instance, api_url: 'https://prometheus.instance.com/') } - it 'creates a service from the instance-level integration' do + it 'creates an integration from the instance-level integration' do described_class.create_from_active_default_integrations(project, :project_id, with_templates: true) expect(project.reload.integrations.size).to eq(1) @@ -553,7 +553,7 @@ RSpec.describe Integration do end context 'passing a group' do - it 'creates a service from the instance-level integration' do + it 'creates an integration from the instance-level integration' do described_class.create_from_active_default_integrations(group, :group_id) expect(group.reload.integrations.size).to eq(1) @@ -563,9 +563,9 @@ RSpec.describe Integration do end context 'with an active group-level integration' do - let!(:group_integration) { create(:prometheus_service, group: group, project: nil, api_url: 'https://prometheus.group.com/') } + let!(:group_integration) { create(:prometheus_integration, group: group, project: nil, api_url: 'https://prometheus.group.com/') } - it 'creates a service from the group-level integration' do + it 'creates an integration from the group-level integration' do described_class.create_from_active_default_integrations(project, :project_id, with_templates: true) expect(project.reload.integrations.size).to eq(1) @@ -576,7 +576,7 @@ RSpec.describe Integration do context 'passing a group' do let!(:subgroup) { create(:group, parent: group) } - it 'creates a service from the group-level integration' do + it 'creates an integration from the group-level integration' do described_class.create_from_active_default_integrations(subgroup, :group_id) expect(subgroup.reload.integrations.size).to eq(1) @@ -586,11 +586,11 @@ RSpec.describe Integration do end context 'with an active subgroup' do - let!(:subgroup_integration) { create(:prometheus_service, group: subgroup, project: nil, api_url: 'https://prometheus.subgroup.com/') } + let!(:subgroup_integration) { create(:prometheus_integration, group: subgroup, project: nil, api_url: 'https://prometheus.subgroup.com/') } let!(:subgroup) { create(:group, parent: group) } let(:project) { create(:project, group: subgroup) } - it 'creates a service from the subgroup-level integration' do + it 'creates an integration from the subgroup-level integration' do described_class.create_from_active_default_integrations(project, :project_id, with_templates: true) expect(project.reload.integrations.size).to eq(1) @@ -603,7 +603,7 @@ RSpec.describe Integration do context 'traversal queries' do shared_examples 'correct ancestor order' do - it 'creates a service from the subgroup-level integration' do + it 'creates an integration from the subgroup-level integration' do described_class.create_from_active_default_integrations(sub_subgroup, :group_id) sub_subgroup.reload @@ -613,10 +613,10 @@ RSpec.describe Integration do expect(sub_subgroup.integrations.first.inherit_from_id).to eq(subgroup_integration.id) end - context 'having a service inheriting settings' do - let!(:subgroup_integration) { create(:prometheus_service, group: subgroup, project: nil, inherit_from_id: group_integration.id, api_url: 'https://prometheus.subgroup.com/') } + context 'having an integration inheriting settings' do + let!(:subgroup_integration) { create(:prometheus_integration, group: subgroup, project: nil, inherit_from_id: group_integration.id, api_url: 'https://prometheus.subgroup.com/') } - it 'creates a service from the group-level integration' do + it 'creates an integration from the group-level integration' do described_class.create_from_active_default_integrations(sub_subgroup, :group_id) sub_subgroup.reload @@ -658,11 +658,11 @@ RSpec.describe Integration do let_it_be(:subgroup2) { create(:group, parent: group) } let_it_be(:project1) { create(:project, group: subgroup1) } let_it_be(:project2) { create(:project, group: subgroup2) } - let_it_be(:group_integration) { create(:prometheus_service, group: group, project: nil) } - let_it_be(:subgroup_integration1) { create(:prometheus_service, group: subgroup1, project: nil, inherit_from_id: group_integration.id) } - let_it_be(:subgroup_integration2) { create(:prometheus_service, group: subgroup2, project: nil) } - let_it_be(:project_integration1) { create(:prometheus_service, group: nil, project: project1, inherit_from_id: group_integration.id) } - let_it_be(:project_integration2) { create(:prometheus_service, group: nil, project: project2, inherit_from_id: subgroup_integration2.id) } + let_it_be(:group_integration) { create(:prometheus_integration, group: group, project: nil) } + let_it_be(:subgroup_integration1) { create(:prometheus_integration, group: subgroup1, project: nil, inherit_from_id: group_integration.id) } + let_it_be(:subgroup_integration2) { create(:prometheus_integration, group: subgroup2, project: nil) } + let_it_be(:project_integration1) { create(:prometheus_integration, group: nil, project: project1, inherit_from_id: group_integration.id) } + let_it_be(:project_integration2) { create(:prometheus_integration, group: nil, project: project2, inherit_from_id: subgroup_integration2.id) } it 'returns the groups and projects inheriting from integration ancestors', :aggregate_failures do expect(described_class.inherited_descendants_from_self_or_ancestors_from(group_integration)).to eq([subgroup_integration1, project_integration1]) diff --git a/spec/models/integrations/prometheus_spec.rb b/spec/models/integrations/prometheus_spec.rb index e3e17738cfb..69917df7ddb 100644 --- a/spec/models/integrations/prometheus_spec.rb +++ b/spec/models/integrations/prometheus_spec.rb @@ -10,7 +10,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, let_it_be_with_reload(:project) { create(:prometheus_project) } - let(:service) { project.prometheus_service } + let(:integration) { project.prometheus_integration } describe "Associations" do it { is_expected.to belong_to :project } @@ -22,7 +22,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, redirect_req_stub = stub_prometheus_request(prometheus_query_url('1'), status: 302, headers: { location: redirect_to }) redirected_req_stub = stub_prometheus_request(redirect_to, body: { 'status': 'success' }) - result = service.test + result = integration.test # result = { success: false, result: error } expect(result[:success]).to be_falsy @@ -36,22 +36,22 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, describe 'Validations' do context 'when manual_configuration is enabled' do before do - service.manual_configuration = true + integration.manual_configuration = true end it 'validates presence of api_url' do - expect(service).to validate_presence_of(:api_url) + expect(integration).to validate_presence_of(:api_url) end end context 'when manual configuration is disabled' do before do - service.manual_configuration = false + integration.manual_configuration = false end it 'does not validate presence of api_url' do - expect(service).not_to validate_presence_of(:api_url) - expect(service.valid?).to eq(true) + expect(integration).not_to validate_presence_of(:api_url) + expect(integration.valid?).to eq(true) end context 'local connections allowed' do @@ -60,23 +60,23 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, end it 'does not validate presence of api_url' do - expect(service).not_to validate_presence_of(:api_url) - expect(service.valid?).to eq(true) + expect(integration).not_to validate_presence_of(:api_url) + expect(integration.valid?).to eq(true) end end end context 'when the api_url domain points to localhost or local network' do - let(:domain) { Addressable::URI.parse(service.api_url).hostname } + let(:domain) { Addressable::URI.parse(integration.api_url).hostname } it 'cannot query' do - expect(service.can_query?).to be true + expect(integration.can_query?).to be true aggregate_failures do ['127.0.0.1', '192.168.2.3'].each do |url| allow(Addrinfo).to receive(:getaddrinfo).with(domain, any_args).and_return([Addrinfo.tcp(url, 80)]) - expect(service.can_query?).to be false + expect(integration.can_query?).to be false end end end @@ -88,14 +88,14 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, ['127.0.0.1', '192.168.2.3'].each do |url| allow(Addrinfo).to receive(:getaddrinfo).with(domain, any_args).and_return([Addrinfo.tcp(url, 80)]) - expect(service.can_query?).to be true + expect(integration.can_query?).to be true end end end context 'with self-monitoring project and internal Prometheus' do before do - service.api_url = 'http://localhost:9090' + integration.api_url = 'http://localhost:9090' stub_application_setting(self_monitoring_project_id: project.id) stub_config(prometheus: { enable: true, server_address: 'localhost:9090' }) @@ -106,19 +106,19 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, ['127.0.0.1', '192.168.2.3'].each do |url| allow(Addrinfo).to receive(:getaddrinfo).with(domain, any_args).and_return([Addrinfo.tcp(url, 80)]) - expect(service.can_query?).to be true + expect(integration.can_query?).to be true end end end it 'does not allow self-monitoring project to connect to other local URLs' do - service.api_url = 'http://localhost:8000' + integration.api_url = 'http://localhost:8000' aggregate_failures do ['127.0.0.1', '192.168.2.3'].each do |url| allow(Addrinfo).to receive(:getaddrinfo).with(domain, any_args).and_return([Addrinfo.tcp(url, 80)]) - expect(service.can_query?).to be false + expect(integration.can_query?).to be false end end end @@ -129,26 +129,26 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, describe 'callbacks' do context 'after_create' do let(:project) { create(:project) } - let(:service) { build(:prometheus_service, project: project) } + let(:integration) { build(:prometheus_integration, project: project) } - subject(:create_service) { service.save! } + subject(:create_integration) { integration.save! } it 'creates default alerts' do expect(Prometheus::CreateDefaultAlertsWorker) .to receive(:perform_async) .with(project.id) - create_service + create_integration end context 'no project exists' do - let(:service) { build(:prometheus_service, :instance) } + let(:integration) { build(:prometheus_integration, :instance) } it 'does not create default alerts' do expect(Prometheus::CreateDefaultAlertsWorker) .not_to receive(:perform_async) - create_service + create_integration end end end @@ -156,15 +156,15 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, describe '#test' do before do - service.manual_configuration = true + integration.manual_configuration = true end let!(:req_stub) { stub_prometheus_request(prometheus_query_url('1'), body: prometheus_value_body('vector')) } context 'success' do it 'reads the discovery endpoint' do - expect(service.test[:result]).to eq('Checked API endpoint') - expect(service.test[:success]).to be_truthy + expect(integration.test[:result]).to eq('Checked API endpoint') + expect(integration.test[:success]).to be_truthy expect(req_stub).to have_been_requested.twice end end @@ -173,7 +173,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, let!(:req_stub) { stub_prometheus_request(prometheus_query_url('1'), status: 404) } it 'fails to read the discovery endpoint' do - expect(service.test[:success]).to be_falsy + expect(integration.test[:success]).to be_falsy expect(req_stub).to have_been_requested end end @@ -183,20 +183,20 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, let(:api_url) { 'http://some_url' } before do - service.active = true - service.api_url = api_url - service.manual_configuration = manual_configuration + integration.active = true + integration.api_url = api_url + integration.manual_configuration = manual_configuration end context 'manual configuration is enabled' do let(:manual_configuration) { true } it 'calls valid?' do - allow(service).to receive(:valid?).and_call_original + allow(integration).to receive(:valid?).and_call_original - expect(service.prometheus_client).not_to be_nil + expect(integration.prometheus_client).not_to be_nil - expect(service).to have_received(:valid?) + expect(integration).to have_received(:valid?) end end @@ -204,7 +204,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, let(:manual_configuration) { false } it 'no client provided' do - expect(service.prometheus_client).to be_nil + expect(integration.prometheus_client).to be_nil end end @@ -219,8 +219,8 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, end it 'allows local requests' do - expect(service.prometheus_client).not_to be_nil - expect { service.prometheus_client.ping }.not_to raise_error + expect(integration.prometheus_client).not_to be_nil + expect { integration.prometheus_client.ping }.not_to raise_error end end @@ -235,7 +235,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, end it 'blocks local requests' do - expect(service.prometheus_client).to be_nil + expect(integration.prometheus_client).to be_nil end context 'with self monitoring project and internal Prometheus URL' do @@ -250,8 +250,8 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, end it 'allows local requests' do - expect(service.prometheus_client).not_to be_nil - expect { service.prometheus_client.ping }.not_to raise_error + expect(integration.prometheus_client).not_to be_nil + expect { integration.prometheus_client.ping }.not_to raise_error end end end @@ -278,8 +278,8 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, end def stub_iap_request - service.google_iap_service_account_json = Gitlab::Json.generate(google_iap_service_account) - service.google_iap_audience_client_id = 'IAP_CLIENT_ID.apps.googleusercontent.com' + integration.google_iap_service_account_json = Gitlab::Json.generate(google_iap_service_account) + integration.google_iap_audience_client_id = 'IAP_CLIENT_ID.apps.googleusercontent.com' stub_request(:post, 'https://oauth2.googleapis.com/token') .to_return( @@ -292,9 +292,9 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, it 'includes the authorization header' do stub_iap_request - expect(service.prometheus_client).not_to be_nil - expect(service.prometheus_client.send(:options)).to have_key(:headers) - expect(service.prometheus_client.send(:options)[:headers]).to eq(authorization: "Bearer FOO") + expect(integration.prometheus_client).not_to be_nil + expect(integration.prometheus_client.send(:options)).to have_key(:headers) + expect(integration.prometheus_client.send(:options)[:headers]).to eq(authorization: "Bearer FOO") end context 'when passed with token_credential_uri', issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/284819' do @@ -315,7 +315,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, stub_iap_request stub_request(:any, malicious_host).to_raise('Making additional HTTP requests is forbidden!') - expect(service.prometheus_client).not_to be_nil + expect(integration.prometheus_client).not_to be_nil end end end @@ -332,7 +332,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, let(:cluster) { create(:cluster, projects: [project]) } it 'returns true' do - expect(service.prometheus_available?).to be(true) + expect(integration.prometheus_available?).to be(true) end end @@ -343,16 +343,16 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, let(:cluster) { create(:cluster_for_group, groups: [group]) } it 'returns true' do - expect(service.prometheus_available?).to be(true) + expect(integration.prometheus_available?).to be(true) end it 'avoids N+1 queries' do - service + integration 5.times do |i| other_cluster = create(:cluster_for_group, groups: [group], environment_scope: i) create(:clusters_integrations_prometheus, cluster: other_cluster) end - expect { service.prometheus_available? }.not_to exceed_query_limit(1) + expect { integration.prometheus_available? }.not_to exceed_query_limit(1) end end @@ -360,7 +360,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, let(:cluster) { create(:cluster, :instance) } it 'returns true' do - expect(service.prometheus_available?).to be(true) + expect(integration.prometheus_available?).to be(true) end end end @@ -370,7 +370,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, let!(:prometheus) { create(:clusters_integrations_prometheus, :disabled, cluster: cluster) } it 'returns false' do - expect(service.prometheus_available?).to be(false) + expect(integration.prometheus_available?).to be(false) end end @@ -378,78 +378,78 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, let(:cluster) { create(:cluster, projects: [project]) } it 'returns false' do - expect(service.prometheus_available?).to be(false) + expect(integration.prometheus_available?).to be(false) end end context 'no clusters' do it 'returns false' do - expect(service.prometheus_available?).to be(false) + expect(integration.prometheus_available?).to be(false) end end end describe '#synchronize_service_state before_save callback' do context 'no clusters with prometheus are installed' do - context 'when service is inactive' do + context 'when integration is inactive' do before do - service.active = false + integration.active = false end - it 'activates service when manual_configuration is enabled' do - expect { service.update!(manual_configuration: true) }.to change { service.active }.from(false).to(true) + it 'activates integration when manual_configuration is enabled' do + expect { integration.update!(manual_configuration: true) }.to change { integration.active }.from(false).to(true) end - it 'keeps service inactive when manual_configuration is disabled' do - expect { service.update!(manual_configuration: false) }.not_to change { service.active }.from(false) + it 'keeps integration inactive when manual_configuration is disabled' do + expect { integration.update!(manual_configuration: false) }.not_to change { integration.active }.from(false) end end - context 'when service is active' do + context 'when integration is active' do before do - service.active = true + integration.active = true end - it 'keeps the service active when manual_configuration is enabled' do - expect { service.update!(manual_configuration: true) }.not_to change { service.active }.from(true) + it 'keeps the integration active when manual_configuration is enabled' do + expect { integration.update!(manual_configuration: true) }.not_to change { integration.active }.from(true) end - it 'inactivates the service when manual_configuration is disabled' do - expect { service.update!(manual_configuration: false) }.to change { service.active }.from(true).to(false) + it 'inactivates the integration when manual_configuration is disabled' do + expect { integration.update!(manual_configuration: false) }.to change { integration.active }.from(true).to(false) end end end context 'with prometheus installed in the cluster' do before do - allow(service).to receive(:prometheus_available?).and_return(true) + allow(integration).to receive(:prometheus_available?).and_return(true) end - context 'when service is inactive' do + context 'when integration is inactive' do before do - service.active = false + integration.active = false end - it 'activates service when manual_configuration is enabled' do - expect { service.update!(manual_configuration: true) }.to change { service.active }.from(false).to(true) + it 'activates integration when manual_configuration is enabled' do + expect { integration.update!(manual_configuration: true) }.to change { integration.active }.from(false).to(true) end - it 'activates service when manual_configuration is disabled' do - expect { service.update!(manual_configuration: false) }.to change { service.active }.from(false).to(true) + it 'activates integration when manual_configuration is disabled' do + expect { integration.update!(manual_configuration: false) }.to change { integration.active }.from(false).to(true) end end - context 'when service is active' do + context 'when integration is active' do before do - service.active = true + integration.active = true end - it 'keeps service active when manual_configuration is enabled' do - expect { service.update!(manual_configuration: true) }.not_to change { service.active }.from(true) + it 'keeps integration active when manual_configuration is enabled' do + expect { integration.update!(manual_configuration: true) }.not_to change { integration.active }.from(true) end - it 'keeps service active when manual_configuration is disabled' do - expect { service.update!(manual_configuration: false) }.not_to change { service.active }.from(true) + it 'keeps integration active when manual_configuration is disabled' do + expect { integration.update!(manual_configuration: false) }.not_to change { integration.active }.from(true) end end end @@ -457,20 +457,20 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, describe '#track_events after_commit callback' do before do - allow(service).to receive(:prometheus_available?).and_return(true) + allow(integration).to receive(:prometheus_available?).and_return(true) end context "enabling manual_configuration" do it "tracks enable event" do - service.update!(manual_configuration: false) - service.update!(manual_configuration: true) + integration.update!(manual_configuration: false) + integration.update!(manual_configuration: true) expect_snowplow_event(category: 'cluster:services:prometheus', action: 'enabled_manual_prometheus') end it "tracks disable event" do - service.update!(manual_configuration: true) - service.update!(manual_configuration: false) + integration.update!(manual_configuration: true) + integration.update!(manual_configuration: false) expect_snowplow_event(category: 'cluster:services:prometheus', action: 'disabled_manual_prometheus') end @@ -479,20 +479,20 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, describe '#editable?' do it 'is editable' do - expect(service.editable?).to be(true) + expect(integration.editable?).to be(true) end context 'when cluster exists with prometheus enabled' do let(:cluster) { create(:cluster, projects: [project]) } before do - service.update!(manual_configuration: false) + integration.update!(manual_configuration: false) create(:clusters_integrations_prometheus, cluster: cluster) end it 'remains editable' do - expect(service.editable?).to be(true) + expect(integration.editable?).to be(true) end end end @@ -536,7 +536,7 @@ RSpec.describe Integrations::Prometheus, :use_clean_rails_memory_store_caching, end it 'returns fields' do - expect(service.fields).to eq(expected_fields) + expect(integration.fields).to eq(expected_fields) end end end diff --git a/spec/models/merge_request_diff_spec.rb b/spec/models/merge_request_diff_spec.rb index 3741e01e99a..4eeeca263e8 100644 --- a/spec/models/merge_request_diff_spec.rb +++ b/spec/models/merge_request_diff_spec.rb @@ -9,10 +9,6 @@ RSpec.describe MergeRequestDiff do let(:diff_with_commits) { create(:merge_request).merge_request_diff } - before do - stub_feature_flags(diffs_gradual_load: false) - end - describe 'validations' do subject { diff_with_commits } @@ -460,19 +456,19 @@ RSpec.describe MergeRequestDiff do context 'when persisted files available' do it 'returns paginated diffs' do - diffs = diff_with_commits.diffs_in_batch(1, 10, diff_options: diff_options) + diffs = diff_with_commits.diffs_in_batch(0, 10, diff_options: diff_options) expect(diffs).to be_a(Gitlab::Diff::FileCollection::MergeRequestDiffBatch) expect(diffs.diff_files.size).to eq(10) - expect(diffs.pagination_data).to eq(current_page: 1, - next_page: 2, - total_pages: 2) + expect(diffs.pagination_data).to eq(current_page: nil, + next_page: nil, + total_pages: 20) end it 'sorts diff files directory first' do diff_with_commits.update!(sorted: false) # Mark as unsorted so it'll re-order - expect(diff_with_commits.diffs_in_batch(1, 10, diff_options: diff_options).diff_file_paths).to eq([ + expect(diff_with_commits.diffs_in_batch(0, 10, diff_options: diff_options).diff_file_paths).to eq([ 'bar/branch-test.txt', 'custom-highlighting/test.gitlab-custom', 'encoding/iso8859.txt', @@ -491,44 +487,22 @@ RSpec.describe MergeRequestDiff do { ignore_whitespace_change: true } end - it 'returns a Gitlab::Diff::FileCollection::Compare with paginated diffs' do + it 'returns pagination data from MergeRequestDiffBatch' do diffs = diff_with_commits.diffs_in_batch(1, 10, diff_options: diff_options) + file_count = diff_with_commits.merge_request_diff_files.count expect(diffs).to be_a(Gitlab::Diff::FileCollection::Compare) expect(diffs.diff_files.size).to eq 10 - expect(diffs.pagination_data).to eq(current_page: 1, next_page: 2, total_pages: 2) + expect(diffs.pagination_data).to eq(current_page: nil, next_page: nil, total_pages: file_count) end it 'returns an empty MergeRequestBatch with empty pagination data when the batch is empty' do - diffs = diff_with_commits.diffs_in_batch(3, 10, diff_options: diff_options) + diffs = diff_with_commits.diffs_in_batch(30, 10, diff_options: diff_options) expect(diffs).to be_a(Gitlab::Diff::FileCollection::MergeRequestDiffBatch) expect(diffs.diff_files.size).to eq 0 expect(diffs.pagination_data).to eq(current_page: nil, next_page: nil, total_pages: nil) end - - context 'with gradual load enabled' do - before do - stub_feature_flags(diffs_gradual_load: true) - end - - it 'returns pagination data from MergeRequestDiffBatch' do - diffs = diff_with_commits.diffs_in_batch(1, 10, diff_options: diff_options) - file_count = diff_with_commits.merge_request_diff_files.count - - expect(diffs).to be_a(Gitlab::Diff::FileCollection::Compare) - expect(diffs.diff_files.size).to eq 10 - expect(diffs.pagination_data).to eq(current_page: nil, next_page: nil, total_pages: file_count) - end - - it 'returns an empty MergeRequestBatch with empty pagination data when the batch is empty' do - diffs = diff_with_commits.diffs_in_batch(30, 10, diff_options: diff_options) - - expect(diffs).to be_a(Gitlab::Diff::FileCollection::MergeRequestDiffBatch) - expect(diffs.diff_files.size).to eq 0 - expect(diffs.pagination_data).to eq(current_page: nil, next_page: nil, total_pages: nil) - end - end end end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 287f0a1b540..00fee3a3104 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -1563,7 +1563,7 @@ RSpec.describe Project, factory_default: :keep do end it 'avoid n + 1' do - expect { described_class.with_service(:prometheus_service).map(&:prometheus_service) }.not_to exceed_query_limit(1) + expect { described_class.with_service(:prometheus_integration).map(&:prometheus_integration) }.not_to exceed_query_limit(1) end end @@ -3085,8 +3085,8 @@ RSpec.describe Project, factory_default: :keep do context 'LFS disabled in group' do before do + stub_lfs_setting(enabled: true) project.namespace.update_attribute(:lfs_enabled, false) - enable_lfs end it_behaves_like 'project overrides group' @@ -3094,14 +3094,18 @@ RSpec.describe Project, factory_default: :keep do context 'LFS enabled in group' do before do + stub_lfs_setting(enabled: true) project.namespace.update_attribute(:lfs_enabled, true) - enable_lfs end it_behaves_like 'project overrides group' end describe 'LFS disabled globally' do + before do + stub_lfs_setting(enabled: false) + end + shared_examples 'it always returns false' do it do expect(project.lfs_enabled?).to be_falsey @@ -3914,10 +3918,6 @@ RSpec.describe Project, factory_default: :keep do end end - def enable_lfs - allow(Gitlab.config.lfs).to receive(:enabled).and_return(true) - end - describe '#pages_url' do let(:group) { create(:group, name: 'Group') } let(:nested_group) { create(:group, parent: group) } @@ -5911,7 +5911,7 @@ RSpec.describe Project, factory_default: :keep do subject { create(:project) } before do - create(:prometheus_service, project: subject, api_url: 'https://prometheus.project.com/') + create(:prometheus_integration, project: subject, api_url: 'https://prometheus.project.com/') end it 'retrieves the integration' do @@ -5921,8 +5921,8 @@ RSpec.describe Project, factory_default: :keep do context 'with an instance-level and template integrations' do before do - create(:prometheus_service, :instance, api_url: 'https://prometheus.instance.com/') - create(:prometheus_service, :template, api_url: 'https://prometheus.template.com/') + create(:prometheus_integration, :instance, api_url: 'https://prometheus.instance.com/') + create(:prometheus_integration, :template, api_url: 'https://prometheus.template.com/') end it 'builds the service from the instance if exists' do @@ -5932,7 +5932,7 @@ RSpec.describe Project, factory_default: :keep do context 'with an instance-level and template integrations' do before do - create(:prometheus_service, :template, api_url: 'https://prometheus.template.com/') + create(:prometheus_integration, :template, api_url: 'https://prometheus.template.com/') end it 'builds the service from the template if instance does not exists' do @@ -6623,13 +6623,13 @@ RSpec.describe Project, factory_default: :keep do end end - describe '#prometheus_service_active?' do + describe '#prometheus_integration_active?' do let(:project) { create(:project) } - subject { project.prometheus_service_active? } + subject { project.prometheus_integration_active? } before do - create(:prometheus_service, project: project, manual_configuration: manual_configuration) + create(:prometheus_integration, project: project, manual_configuration: manual_configuration) end context 'when project has an activated prometheus service' do diff --git a/spec/policies/integration_policy_spec.rb b/spec/policies/integration_policy_spec.rb index d490045c1e1..ef628c1c4b1 100644 --- a/spec/policies/integration_policy_spec.rb +++ b/spec/policies/integration_policy_spec.rb @@ -9,8 +9,8 @@ RSpec.describe IntegrationPolicy, :models do subject(:policy) { Ability.policy_for(user, integration) } - context 'when the integration is a prometheus_service' do - let(:integration) { create(:prometheus_service) } + context 'when the integration is a prometheus_integration' do + let(:integration) { create(:prometheus_integration) } describe 'rules' do it { is_expected.to be_disallowed :admin_project } diff --git a/spec/requests/api/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb b/spec/requests/api/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb index d8d0ace5981..31053c50cac 100644 --- a/spec/requests/api/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb +++ b/spec/requests/api/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb @@ -7,7 +7,7 @@ RSpec.describe 'Resetting a token on an existing Prometheus Integration' do let_it_be(:user) { create(:user) } let_it_be(:project) { create(:project) } - let_it_be(:integration) { create(:prometheus_service, project: project) } + let_it_be(:integration) { create(:prometheus_integration, project: project) } let(:mutation) do variables = { diff --git a/spec/requests/api/graphql/mutations/alert_management/prometheus_integration/update_spec.rb b/spec/requests/api/graphql/mutations/alert_management/prometheus_integration/update_spec.rb index 6c4a647a353..ad26ec118d7 100644 --- a/spec/requests/api/graphql/mutations/alert_management/prometheus_integration/update_spec.rb +++ b/spec/requests/api/graphql/mutations/alert_management/prometheus_integration/update_spec.rb @@ -7,7 +7,7 @@ RSpec.describe 'Updating an existing Prometheus Integration' do let_it_be(:user) { create(:user) } let_it_be(:project) { create(:project) } - let_it_be(:integration) { create(:prometheus_service, project: project) } + let_it_be(:integration) { create(:prometheus_integration, project: project) } let(:mutation) do variables = { diff --git a/spec/requests/api/graphql/project/alert_management/integrations_spec.rb b/spec/requests/api/graphql/project/alert_management/integrations_spec.rb index 0e029aee9e8..1793d4961eb 100644 --- a/spec/requests/api/graphql/project/alert_management/integrations_spec.rb +++ b/spec/requests/api/graphql/project/alert_management/integrations_spec.rb @@ -7,7 +7,7 @@ RSpec.describe 'getting Alert Management Integrations' do let_it_be(:project) { create(:project, :repository) } let_it_be(:current_user) { create(:user) } - let_it_be(:prometheus_service) { create(:prometheus_service, project: project) } + let_it_be(:prometheus_integration) { create(:prometheus_integration, project: project) } let_it_be(:project_alerting_setting) { create(:project_alerting_setting, project: project) } let_it_be(:active_http_integration) { create(:alert_management_http_integration, project: project) } let_it_be(:inactive_http_integration) { create(:alert_management_http_integration, :inactive, project: project) } @@ -53,15 +53,15 @@ RSpec.describe 'getting Alert Management Integrations' do end context 'when no extra params given' do - let(:http_integration) { integrations.first } - let(:prometheus_integration) { integrations.second } + let(:http_integration_response) { integrations.first } + let(:prometheus_integration_response) { integrations.second } it_behaves_like 'a working graphql query' it { expect(integrations.size).to eq(2) } it 'returns the correct properties of the integrations' do - expect(http_integration).to include( + expect(http_integration_response).to include( 'id' => global_id_of(active_http_integration), 'type' => 'HTTP', 'name' => active_http_integration.name, @@ -71,14 +71,14 @@ RSpec.describe 'getting Alert Management Integrations' do 'apiUrl' => nil ) - expect(prometheus_integration).to include( - 'id' => global_id_of(prometheus_service), + expect(prometheus_integration_response).to include( + 'id' => global_id_of(prometheus_integration), 'type' => 'PROMETHEUS', 'name' => 'Prometheus', - 'active' => prometheus_service.manual_configuration?, + 'active' => prometheus_integration.manual_configuration?, 'token' => project_alerting_setting.token, 'url' => "http://localhost/#{project.full_path}/prometheus/alerts/notify.json", - 'apiUrl' => prometheus_service.api_url + 'apiUrl' => prometheus_integration.api_url ) end end @@ -104,7 +104,7 @@ RSpec.describe 'getting Alert Management Integrations' do end context 'when Prometheus Integration ID is given' do - let(:params) { { id: global_id_of(prometheus_service) } } + let(:params) { { id: global_id_of(prometheus_integration) } } it_behaves_like 'a working graphql query' @@ -112,13 +112,13 @@ RSpec.describe 'getting Alert Management Integrations' do it 'returns the correct properties of the Prometheus Integration' do expect(integrations.first).to include( - 'id' => global_id_of(prometheus_service), + 'id' => global_id_of(prometheus_integration), 'type' => 'PROMETHEUS', 'name' => 'Prometheus', - 'active' => prometheus_service.manual_configuration?, + 'active' => prometheus_integration.manual_configuration?, 'token' => project_alerting_setting.token, 'url' => "http://localhost/#{project.full_path}/prometheus/alerts/notify.json", - 'apiUrl' => prometheus_service.api_url + 'apiUrl' => prometheus_integration.api_url ) end end diff --git a/spec/requests/invite_registration_spec.rb b/spec/requests/invite_registration_spec.rb deleted file mode 100644 index 167cf4b1de7..00000000000 --- a/spec/requests/invite_registration_spec.rb +++ /dev/null @@ -1,68 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'Registering from an invite' do - let(:com) { true } - - before do - allow(Gitlab).to receive(:dev_env_or_com?).and_return(com) - end - - describe 'GET /users/sign_up/invites/new' do - subject(:request) { get '/users/sign_up/invites/new' } - - context 'when on .com' do - it 'renders the template with expected text', :aggregate_failures do - request - - expect(response).to render_template('layouts/simple_registration') - expect(response).to render_template(:new) - expect(response.body).to include('Join your team') - end - end - - context 'when not on .com' do - let(:com) { false } - - it 'returns not found' do - request - - expect(response).to have_gitlab_http_status(:not_found) - end - end - end - - describe 'POST /users/sign_up/invites' do - subject(:request) do - post '/users/sign_up/invites', - params: { - user: { - first_name: 'first', - last_name: 'last', - username: 'new_username', - email: 'new@user.com', - password: 'Any_password' - } - } - end - - context 'when on .com' do - it 'creates a user' do - expect { request }.to change(User, :count).by(1) - - expect(response).to have_gitlab_http_status(:found) - end - end - - context 'when not on .com' do - let(:com) { false } - - it 'returns not found' do - request - - expect(response).to have_gitlab_http_status(:not_found) - end - end - end -end diff --git a/spec/serializers/paginated_diff_entity_spec.rb b/spec/serializers/paginated_diff_entity_spec.rb index a8ac89a8481..732a77ef604 100644 --- a/spec/serializers/paginated_diff_entity_spec.rb +++ b/spec/serializers/paginated_diff_entity_spec.rb @@ -19,20 +19,16 @@ RSpec.describe PaginatedDiffEntity do subject { entity.as_json } - before do - stub_feature_flags(diffs_gradual_load: false) - end - it 'exposes diff_files' do expect(subject[:diff_files]).to be_present end it 'exposes pagination data' do expect(subject[:pagination]).to eq( - current_page: 2, - next_page: 3, - next_page_href: "/#{merge_request.project.full_path}/-/merge_requests/#{merge_request.iid}/diffs_batch.json?page=3", - total_pages: 7 + current_page: nil, + next_page: nil, + next_page_href: nil, + total_pages: 20 ) end diff --git a/spec/services/groups/create_service_spec.rb b/spec/services/groups/create_service_spec.rb index b59ee894fe8..bcba39b0eb4 100644 --- a/spec/services/groups/create_service_spec.rb +++ b/spec/services/groups/create_service_spec.rb @@ -161,7 +161,7 @@ RSpec.describe Groups::CreateService, '#execute' do let(:created_group) { service.execute } context 'with an active instance-level integration' do - let!(:instance_integration) { create(:prometheus_service, :instance, api_url: 'https://prometheus.instance.com/') } + let!(:instance_integration) { create(:prometheus_integration, :instance, api_url: 'https://prometheus.instance.com/') } it 'creates a service from the instance-level integration' do expect(created_group.integrations.count).to eq(1) @@ -171,7 +171,7 @@ RSpec.describe Groups::CreateService, '#execute' do context 'with an active group-level integration' do let(:service) { described_class.new(user, group_params.merge(parent_id: group.id)) } - let!(:group_integration) { create(:prometheus_service, group: group, project: nil, api_url: 'https://prometheus.group.com/') } + let!(:group_integration) { create(:prometheus_integration, group: group, project: nil, api_url: 'https://prometheus.group.com/') } let(:group) do create(:group).tap do |group| group.add_owner(user) @@ -186,7 +186,7 @@ RSpec.describe Groups::CreateService, '#execute' do context 'with an active subgroup' do let(:service) { described_class.new(user, group_params.merge(parent_id: subgroup.id)) } - let!(:subgroup_integration) { create(:prometheus_service, group: subgroup, project: nil, api_url: 'https://prometheus.subgroup.com/') } + let!(:subgroup_integration) { create(:prometheus_integration, group: subgroup, project: nil, api_url: 'https://prometheus.subgroup.com/') } let(:subgroup) do create(:group, parent: group).tap do |subgroup| subgroup.add_owner(user) diff --git a/spec/services/projects/create_service_spec.rb b/spec/services/projects/create_service_spec.rb index b8e48cef171..732d94f4203 100644 --- a/spec/services/projects/create_service_spec.rb +++ b/spec/services/projects/create_service_spec.rb @@ -585,29 +585,29 @@ RSpec.describe Projects::CreateService, '#execute' do end end - describe 'create service for the project' do + describe 'create integration for the project' do subject(:project) { create_project(user, opts) } - context 'with an active service template' do - let!(:template_integration) { create(:prometheus_service, :template, api_url: 'https://prometheus.template.com/') } + context 'with an active integration template' do + let!(:template_integration) { create(:prometheus_integration, :template, api_url: 'https://prometheus.template.com/') } - it 'creates a service from the template' do + it 'creates an integration from the template' do expect(project.integrations.count).to eq(1) expect(project.integrations.first.api_url).to eq(template_integration.api_url) expect(project.integrations.first.inherit_from_id).to be_nil end context 'with an active instance-level integration' do - let!(:instance_integration) { create(:prometheus_service, :instance, api_url: 'https://prometheus.instance.com/') } + let!(:instance_integration) { create(:prometheus_integration, :instance, api_url: 'https://prometheus.instance.com/') } - it 'creates a service from the instance-level integration' do + it 'creates an integration from the instance-level integration' do expect(project.integrations.count).to eq(1) expect(project.integrations.first.api_url).to eq(instance_integration.api_url) expect(project.integrations.first.inherit_from_id).to eq(instance_integration.id) end context 'with an active group-level integration' do - let!(:group_integration) { create(:prometheus_service, group: group, project: nil, api_url: 'https://prometheus.group.com/') } + let!(:group_integration) { create(:prometheus_integration, group: group, project: nil, api_url: 'https://prometheus.group.com/') } let!(:group) do create(:group).tap do |group| group.add_owner(user) @@ -621,14 +621,14 @@ RSpec.describe Projects::CreateService, '#execute' do } end - it 'creates a service from the group-level integration' do + it 'creates an integration from the group-level integration' do expect(project.integrations.count).to eq(1) expect(project.integrations.first.api_url).to eq(group_integration.api_url) expect(project.integrations.first.inherit_from_id).to eq(group_integration.id) end context 'with an active subgroup' do - let!(:subgroup_integration) { create(:prometheus_service, group: subgroup, project: nil, api_url: 'https://prometheus.subgroup.com/') } + let!(:subgroup_integration) { create(:prometheus_integration, group: subgroup, project: nil, api_url: 'https://prometheus.subgroup.com/') } let!(:subgroup) do create(:group, parent: group).tap do |subgroup| subgroup.add_owner(user) @@ -642,7 +642,7 @@ RSpec.describe Projects::CreateService, '#execute' do } end - it 'creates a service from the subgroup-level integration' do + it 'creates an integration from the subgroup-level integration' do expect(project.integrations.count).to eq(1) expect(project.integrations.first.api_url).to eq(subgroup_integration.api_url) expect(project.integrations.first.inherit_from_id).to eq(subgroup_integration.id) @@ -686,7 +686,7 @@ RSpec.describe Projects::CreateService, '#execute' do create_project(user, opts) end - context 'when project has access to shared service' do + context 'when project has access to shared integration' do before do stub_feature_flags(projects_post_creation_worker: false) end @@ -705,11 +705,11 @@ RSpec.describe Projects::CreateService, '#execute' do it 'creates Integrations::Prometheus record', :aggregate_failures do project = create_project(user, opts.merge!(namespace_id: group.id)) - service = project.prometheus_service + integration = project.prometheus_integration - expect(service.active).to be true - expect(service.manual_configuration?).to be false - expect(service.persisted?).to be true + expect(integration.active).to be true + expect(integration.manual_configuration?).to be false + expect(integration.persisted?).to be true end end @@ -722,21 +722,21 @@ RSpec.describe Projects::CreateService, '#execute' do it 'creates Integrations::Prometheus record', :aggregate_failures do project = create_project(user, opts) - service = project.prometheus_service + integration = project.prometheus_integration - expect(service.active).to be true - expect(service.manual_configuration?).to be false - expect(service.persisted?).to be true + expect(integration.active).to be true + expect(integration.manual_configuration?).to be false + expect(integration.persisted?).to be true end it 'cleans invalid record and logs warning', :aggregate_failures do - invalid_service_record = build(:prometheus_service, properties: { api_url: nil, manual_configuration: true }.to_json) - allow(::Integrations::Prometheus).to receive(:new).and_return(invalid_service_record) + invalid_integration_record = build(:prometheus_integration, properties: { api_url: nil, manual_configuration: true }.to_json) + allow(::Integrations::Prometheus).to receive(:new).and_return(invalid_integration_record) expect(Gitlab::ErrorTracking).to receive(:track_exception).with(an_instance_of(ActiveRecord::RecordInvalid), include(extra: { project_id: a_kind_of(Integer) })) project = create_project(user, opts) - expect(project.prometheus_service).to be_nil + expect(project.prometheus_integration).to be_nil end end @@ -744,7 +744,7 @@ RSpec.describe Projects::CreateService, '#execute' do it 'does not persist Integrations::Prometheus record' do project = create_project(user, opts) - expect(project.prometheus_service).to be_nil + expect(project.prometheus_integration).to be_nil end end end diff --git a/spec/services/projects/operations/update_service_spec.rb b/spec/services/projects/operations/update_service_spec.rb index 018bfa8ef61..4b8896a719f 100644 --- a/spec/services/projects/operations/update_service_spec.rb +++ b/spec/services/projects/operations/update_service_spec.rb @@ -378,8 +378,8 @@ RSpec.describe Projects::Operations::UpdateService do context 'prometheus integration' do context 'prometheus params were passed into service' do - let(:prometheus_service) do - build_stubbed(:prometheus_service, project: project, properties: { + let(:prometheus_integration) do + build_stubbed(:prometheus_integration, project: project, properties: { api_url: "http://example.prometheus.com", manual_configuration: "0" }) @@ -400,12 +400,12 @@ RSpec.describe Projects::Operations::UpdateService do expect(project) .to receive(:find_or_initialize_service) .with('prometheus') - .and_return(prometheus_service) + .and_return(prometheus_integration) expect(Projects::UpdateService).to receive(:new) do |project_arg, user_arg, update_params_hash| expect(project_arg).to eq project expect(user_arg).to eq user - expect(update_params_hash[:prometheus_service_attributes]).to include('properties' => { 'api_url' => 'http://new.prometheus.com', 'manual_configuration' => '1' }) - expect(update_params_hash[:prometheus_service_attributes]).not_to include(*%w(id project_id created_at updated_at)) + expect(update_params_hash[:prometheus_integration_attributes]).to include('properties' => { 'api_url' => 'http://new.prometheus.com', 'manual_configuration' => '1' }) + expect(update_params_hash[:prometheus_integration_attributes]).not_to include(*%w(id project_id created_at updated_at)) end.and_return(project_update_service) expect(project_update_service).to receive(:execute) diff --git a/spec/services/projects/prometheus/alerts/notify_service_spec.rb b/spec/services/projects/prometheus/alerts/notify_service_spec.rb index 5235c64d451..25cf588dedf 100644 --- a/spec/services/projects/prometheus/alerts/notify_service_spec.rb +++ b/spec/services/projects/prometheus/alerts/notify_service_spec.rb @@ -115,7 +115,7 @@ RSpec.describe Projects::Prometheus::Alerts::NotifyService do let(:alert_manager_token) { token_input } before do - create(:prometheus_service, project: project) + create(:prometheus_integration, project: project) if alerting_setting create(:project_alerting_setting, @@ -165,7 +165,7 @@ RSpec.describe Projects::Prometheus::Alerts::NotifyService do context 'incident settings' do before do - create(:prometheus_service, project: project) + create(:prometheus_integration, project: project) create(:project_alerting_setting, project: project, token: token) end @@ -204,7 +204,7 @@ RSpec.describe Projects::Prometheus::Alerts::NotifyService do let(:process_service) { instance_double(AlertManagement::ProcessPrometheusAlertService) } before do - create(:prometheus_service, project: project) + create(:prometheus_integration, project: project) create(:project_alerting_setting, project: project, token: token) end diff --git a/spec/services/projects/update_service_spec.rb b/spec/services/projects/update_service_spec.rb index 315329263b5..0cab1aa4abc 100644 --- a/spec/services/projects/update_service_spec.rb +++ b/spec/services/projects/update_service_spec.rb @@ -468,41 +468,41 @@ RSpec.describe Projects::UpdateService do end end - context 'when updating nested attributes for prometheus service' do - context 'prometheus service exists' do - let(:prometheus_service_attributes) do - attributes_for(:prometheus_service, + context 'when updating nested attributes for prometheus integration' do + context 'prometheus integration exists' do + let(:prometheus_integration_attributes) do + attributes_for(:prometheus_integration, project: project, properties: { api_url: "http://new.prometheus.com", manual_configuration: "0" } ) end - let!(:prometheus_service) do - create(:prometheus_service, + let!(:prometheus_integration) do + create(:prometheus_integration, project: project, properties: { api_url: "http://old.prometheus.com", manual_configuration: "0" } ) end it 'updates existing record' do - expect { update_project(project, user, prometheus_service_attributes: prometheus_service_attributes) } - .to change { prometheus_service.reload.api_url } + expect { update_project(project, user, prometheus_integration_attributes: prometheus_integration_attributes) } + .to change { prometheus_integration.reload.api_url } .from("http://old.prometheus.com") .to("http://new.prometheus.com") end end - context 'prometheus service does not exist' do + context 'prometheus integration does not exist' do context 'valid parameters' do - let(:prometheus_service_attributes) do - attributes_for(:prometheus_service, + let(:prometheus_integration_attributes) do + attributes_for(:prometheus_integration, project: project, properties: { api_url: "http://example.prometheus.com", manual_configuration: "0" } ) end it 'creates new record' do - expect { update_project(project, user, prometheus_service_attributes: prometheus_service_attributes) } + expect { update_project(project, user, prometheus_integration_attributes: prometheus_integration_attributes) } .to change { ::Integrations::Prometheus.where(project: project).count } .from(0) .to(1) @@ -510,15 +510,15 @@ RSpec.describe Projects::UpdateService do end context 'invalid parameters' do - let(:prometheus_service_attributes) do - attributes_for(:prometheus_service, + let(:prometheus_integration_attributes) do + attributes_for(:prometheus_integration, project: project, properties: { api_url: nil, manual_configuration: "1" } ) end it 'does not create new record' do - expect { update_project(project, user, prometheus_service_attributes: prometheus_service_attributes) } + expect { update_project(project, user, prometheus_integration_attributes: prometheus_integration_attributes) } .not_to change { ::Integrations::Prometheus.where(project: project).count } end end diff --git a/spec/support/helpers/features/editor_lite_spec_helpers.rb b/spec/support/helpers/features/editor_lite_spec_helpers.rb index 0a67e753379..57057b47fbb 100644 --- a/spec/support/helpers/features/editor_lite_spec_helpers.rb +++ b/spec/support/helpers/features/editor_lite_spec_helpers.rb @@ -1,12 +1,12 @@ # frozen_string_literal: true -# These helpers help you interact within the Editor Lite (single-file editor, snippets, etc.). +# These helpers help you interact within the Source Editor (single-file editor, snippets, etc.). # module Spec module Support module Helpers module Features - module EditorLiteSpecHelpers + module SourceEditorSpecHelpers include ActionView::Helpers::JavaScriptHelper def editor_set_value(value) diff --git a/spec/support/helpers/features/snippet_helpers.rb b/spec/support/helpers/features/snippet_helpers.rb index c26849a9680..78f2f383c91 100644 --- a/spec/support/helpers/features/snippet_helpers.rb +++ b/spec/support/helpers/features/snippet_helpers.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# These helpers help you interact within the Editor Lite (single-file editor, snippets, etc.). +# These helpers help you interact within the Source Editor (single-file editor, snippets, etc.). # module Spec module Support @@ -8,7 +8,7 @@ module Spec module Features module SnippetSpecHelpers include ActionView::Helpers::JavaScriptHelper - include Spec::Support::Helpers::Features::EditorLiteSpecHelpers + include Spec::Support::Helpers::Features::SourceEditorSpecHelpers def snippet_description_locator 'snippet-description' @@ -31,7 +31,7 @@ module Spec end def snippet_get_first_blob_value - page.find('.gl-editor-lite', match: :first) + page.find('.gl-source-editor', match: :first) end def snippet_description_value @@ -53,7 +53,7 @@ module Spec end def snippet_fill_in_content(value) - page.within('.gl-editor-lite') do + page.within('.gl-source-editor') do el = find('.inputarea') el.send_keys value end diff --git a/spec/support/helpers/features/top_nav_spec_helpers.rb b/spec/support/helpers/features/top_nav_spec_helpers.rb index ab664ce4283..87ed897ec74 100644 --- a/spec/support/helpers/features/top_nav_spec_helpers.rb +++ b/spec/support/helpers/features/top_nav_spec_helpers.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -# These helpers help you interact within the Editor Lite (single-file editor, snippets, etc.). +# These helpers help you interact within the Source Editor (single-file editor, snippets, etc.). # module Spec module Support diff --git a/spec/views/projects/settings/operations/show.html.haml_spec.rb b/spec/views/projects/settings/operations/show.html.haml_spec.rb index 43c064e1a2b..c0ec86a41a7 100644 --- a/spec/views/projects/settings/operations/show.html.haml_spec.rb +++ b/spec/views/projects/settings/operations/show.html.haml_spec.rb @@ -14,7 +14,7 @@ RSpec.describe 'projects/settings/operations/show' do create(:project_tracing_setting, project: project) end - let_it_be(:prometheus_service) { create(:prometheus_service, project: project) } + let_it_be(:prometheus_integration) { create(:prometheus_integration, project: project) } before_all do project.add_maintainer(user) @@ -27,8 +27,8 @@ RSpec.describe 'projects/settings/operations/show' do .and_return(error_tracking_setting) allow(view).to receive(:tracing_setting) .and_return(tracing_setting) - allow(view).to receive(:prometheus_service) - .and_return(prometheus_service) + allow(view).to receive(:prometheus_integration) + .and_return(prometheus_integration) allow(view).to receive(:current_user).and_return(user) end diff --git a/spec/workers/clusters/applications/activate_service_worker_spec.rb b/spec/workers/clusters/applications/activate_service_worker_spec.rb index 7b05b76bebc..019bfe7a750 100644 --- a/spec/workers/clusters/applications/activate_service_worker_spec.rb +++ b/spec/workers/clusters/applications/activate_service_worker_spec.rb @@ -4,8 +4,8 @@ require 'spec_helper' RSpec.describe Clusters::Applications::ActivateServiceWorker, '#perform' do context 'cluster exists' do - describe 'prometheus service' do - let(:service_name) { 'prometheus' } + describe 'prometheus integration' do + let(:integration_name) { 'prometheus' } before do create(:clusters_integrations_prometheus, cluster: cluster) @@ -16,9 +16,9 @@ RSpec.describe Clusters::Applications::ActivateServiceWorker, '#perform' do let(:project) { create(:project, group: group) } let(:cluster) { create(:cluster_for_group, groups: [group]) } - it 'ensures Prometheus service is activated' do - expect { described_class.new.perform(cluster.id, service_name) } - .to change { project.reload.prometheus_service&.active }.from(nil).to(true) + it 'ensures Prometheus integration is activated' do + expect { described_class.new.perform(cluster.id, integration_name) } + .to change { project.reload.prometheus_integration&.active }.from(nil).to(true) end end @@ -26,9 +26,9 @@ RSpec.describe Clusters::Applications::ActivateServiceWorker, '#perform' do let(:project) { create(:project) } let(:cluster) { create(:cluster, projects: [project]) } - it 'ensures Prometheus service is activated' do - expect { described_class.new.perform(cluster.id, service_name) } - .to change { project.reload.prometheus_service&.active }.from(nil).to(true) + it 'ensures Prometheus integration is activated' do + expect { described_class.new.perform(cluster.id, integration_name) } + .to change { project.reload.prometheus_integration&.active }.from(nil).to(true) end end @@ -36,9 +36,9 @@ RSpec.describe Clusters::Applications::ActivateServiceWorker, '#perform' do let(:project) { create(:project) } let(:cluster) { create(:cluster, :instance) } - it 'ensures Prometheus service is activated' do - expect { described_class.new.perform(cluster.id, service_name) } - .to change { project.reload.prometheus_service&.active }.from(nil).to(true) + it 'ensures Prometheus integration is activated' do + expect { described_class.new.perform(cluster.id, integration_name) } + .to change { project.reload.prometheus_integration&.active }.from(nil).to(true) end end end diff --git a/spec/workers/clusters/applications/deactivate_service_worker_spec.rb b/spec/workers/clusters/applications/deactivate_service_worker_spec.rb index 4068c5c9eaa..77788cfa893 100644 --- a/spec/workers/clusters/applications/deactivate_service_worker_spec.rb +++ b/spec/workers/clusters/applications/deactivate_service_worker_spec.rb @@ -4,15 +4,15 @@ require 'spec_helper' RSpec.describe Clusters::Applications::DeactivateServiceWorker, '#perform' do context 'cluster exists' do - describe 'prometheus service' do - let(:service_name) { 'prometheus' } + describe 'prometheus integration' do + let(:integration_name) { 'prometheus' } let!(:integration) { create(:clusters_integrations_prometheus, cluster: cluster) } - context 'prometheus service exists' do - let!(:prometheus_service) { create(:prometheus_service, project: project, manual_configuration: false, active: true) } + context 'prometheus integration exists' do + let!(:prometheus_integration) { create(:prometheus_integration, project: project, manual_configuration: false, active: true) } before do - integration.delete # prometheus service before save synchronises active stated with integration existence. + integration.delete # prometheus integration before save synchronises active stated with integration existence. end context 'cluster type: group' do @@ -20,9 +20,9 @@ RSpec.describe Clusters::Applications::DeactivateServiceWorker, '#perform' do let(:project) { create(:project, group: group) } let(:cluster) { create(:cluster_for_group, groups: [group]) } - it 'ensures Prometheus service is deactivated' do - expect { described_class.new.perform(cluster.id, service_name) } - .to change { prometheus_service.reload.active }.from(true).to(false) + it 'ensures Prometheus integration is deactivated' do + expect { described_class.new.perform(cluster.id, integration_name) } + .to change { prometheus_integration.reload.active }.from(true).to(false) end end @@ -30,9 +30,9 @@ RSpec.describe Clusters::Applications::DeactivateServiceWorker, '#perform' do let(:project) { create(:project) } let(:cluster) { create(:cluster, projects: [project]) } - it 'ensures Prometheus service is deactivated' do - expect { described_class.new.perform(cluster.id, service_name) } - .to change { prometheus_service.reload.active }.from(true).to(false) + it 'ensures Prometheus integration is deactivated' do + expect { described_class.new.perform(cluster.id, integration_name) } + .to change { prometheus_integration.reload.active }.from(true).to(false) end end @@ -40,20 +40,20 @@ RSpec.describe Clusters::Applications::DeactivateServiceWorker, '#perform' do let(:project) { create(:project) } let(:cluster) { create(:cluster, :instance) } - it 'ensures Prometheus service is deactivated' do - expect { described_class.new.perform(cluster.id, service_name) } - .to change { prometheus_service.reload.active }.from(true).to(false) + it 'ensures Prometheus integration is deactivated' do + expect { described_class.new.perform(cluster.id, integration_name) } + .to change { prometheus_integration.reload.active }.from(true).to(false) end end end - context 'prometheus service does not exist' do + context 'prometheus integration does not exist' do context 'cluster type: project' do let(:project) { create(:project) } let(:cluster) { create(:cluster, projects: [project]) } it 'does not raise errors' do - expect { described_class.new.perform(cluster.id, service_name) }.not_to raise_error + expect { described_class.new.perform(cluster.id, integration_name) }.not_to raise_error end end end diff --git a/spec/workers/projects/post_creation_worker_spec.rb b/spec/workers/projects/post_creation_worker_spec.rb index d1600daa3bd..06acf601666 100644 --- a/spec/workers/projects/post_creation_worker_spec.rb +++ b/spec/workers/projects/post_creation_worker_spec.rb @@ -13,16 +13,16 @@ RSpec.describe Projects::PostCreationWorker do it_behaves_like 'an idempotent worker' do let(:job_args) { [project.id] } - describe 'Prometheus service' do + describe 'Prometheus integration' do context 'project is nil' do let(:job_args) { [nil] } - it 'does not create prometheus service' do + it 'does not create prometheus integration' do expect { subject }.not_to change { Integration.count } end end - context 'when project has access to shared service' do + context 'when project has access to shared integration' do context 'Prometheus application is shared via group cluster' do let(:project) { create(:project, group: group) } let(:cluster) { create(:cluster, :group, groups: [group]) } @@ -39,10 +39,10 @@ RSpec.describe Projects::PostCreationWorker do it 'creates an Integrations::Prometheus record', :aggregate_failures do subject - service = project.prometheus_service - expect(service.active).to be true - expect(service.manual_configuration?).to be false - expect(service.persisted?).to be true + integration = project.prometheus_integration + expect(integration.active).to be true + expect(integration.manual_configuration?).to be false + expect(integration.persisted?).to be true end end @@ -56,20 +56,20 @@ RSpec.describe Projects::PostCreationWorker do it 'creates an Integrations::Prometheus record', :aggregate_failures do subject - service = project.prometheus_service - expect(service.active).to be true - expect(service.manual_configuration?).to be false - expect(service.persisted?).to be true + integration = project.prometheus_integration + expect(integration.active).to be true + expect(integration.manual_configuration?).to be false + expect(integration.persisted?).to be true end it 'cleans invalid record and logs warning', :aggregate_failures do - invalid_service_record = build(:prometheus_service, properties: { api_url: nil, manual_configuration: true }.to_json) - allow(::Integrations::Prometheus).to receive(:new).and_return(invalid_service_record) + invalid_integration_record = build(:prometheus_integration, properties: { api_url: nil, manual_configuration: true }.to_json) + allow(::Integrations::Prometheus).to receive(:new).and_return(invalid_integration_record) expect(Gitlab::ErrorTracking).to receive(:track_exception).with(an_instance_of(ActiveRecord::RecordInvalid), include(extra: { project_id: a_kind_of(Integer) })).twice subject - expect(project.prometheus_service).to be_nil + expect(project.prometheus_integration).to be_nil end end @@ -77,7 +77,7 @@ RSpec.describe Projects::PostCreationWorker do it 'does not persist an Integrations::Prometheus record' do subject - expect(project.prometheus_service).to be_nil + expect(project.prometheus_integration).to be_nil end end end |