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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-06-19 00:10:06 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-06-19 00:10:06 +0300
commitcb0a625459525122d2736a895a728edb3b8ea4ff (patch)
treea3a830de41cdc0eb71c380f8e751faa1410a724a
parentdd6e32bf47776514b8fe2abcfe7998503f16baab (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/assets/javascripts/blob/components/blob_edit_content.vue4
-rw-r--r--app/assets/javascripts/blob/utils.js4
-rw-r--r--app/assets/javascripts/blob_edit/edit_blob.js8
-rw-r--r--app/assets/javascripts/ci_lint/components/ci_lint.vue6
-rw-r--r--app/assets/javascripts/diffs/constants.js1
-rw-r--r--app/assets/javascripts/diffs/store/actions.js29
-rw-r--r--app/assets/javascripts/editor/constants.js4
-rw-r--r--app/assets/javascripts/editor/extensions/editor_file_template_ext.js8
-rw-r--r--app/assets/javascripts/editor/extensions/source_editor_ci_schema_ext.js (renamed from app/assets/javascripts/editor/extensions/editor_ci_schema_ext.js)4
-rw-r--r--app/assets/javascripts/editor/extensions/source_editor_extension_base.js (renamed from app/assets/javascripts/editor/extensions/editor_lite_extension_base.js)10
-rw-r--r--app/assets/javascripts/editor/extensions/source_editor_file_template_ext.js8
-rw-r--r--app/assets/javascripts/editor/extensions/source_editor_markdown_ext.js (renamed from app/assets/javascripts/editor/extensions/editor_markdown_ext.js)4
-rw-r--r--app/assets/javascripts/editor/extensions/source_editor_webide_ext.js (renamed from app/assets/javascripts/editor/extensions/editor_lite_webide_ext.js)4
-rw-r--r--app/assets/javascripts/editor/source_editor.js (renamed from app/assets/javascripts/editor/editor_lite.js)42
-rw-r--r--app/assets/javascripts/ide/components/repo_editor.vue6
-rw-r--r--app/assets/javascripts/merge_conflicts/components/diff_file_editor.vue6
-rw-r--r--app/assets/javascripts/pipeline_editor/components/editor/ci_config_merged_preview.vue6
-rw-r--r--app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue8
-rw-r--r--app/assets/javascripts/snippets/components/snippet_blob_edit.vue6
-rw-r--r--app/assets/javascripts/vue_shared/components/blob_viewers/simple_viewer.vue6
-rw-r--r--app/assets/javascripts/vue_shared/components/source_editor.vue (renamed from app/assets/javascripts/vue_shared/components/editor_lite.vue)8
-rw-r--r--app/assets/stylesheets/framework.scss2
-rw-r--r--app/assets/stylesheets/framework/source_editor.scss (renamed from app/assets/stylesheets/framework/editor-lite.scss)4
-rw-r--r--app/controllers/application_controller.rb4
-rw-r--r--app/controllers/invites_controller.rb19
-rw-r--r--app/controllers/projects/merge_requests_controller.rb1
-rw-r--r--app/controllers/projects/services_controller.rb8
-rw-r--r--app/controllers/registrations/invites_controller.rb9
-rw-r--r--app/controllers/registrations_controller.rb1
-rw-r--r--app/graphql/mutations/alert_management/prometheus_integration/create.rb4
-rw-r--r--app/graphql/resolvers/alert_management/alert_resolver.rb2
-rw-r--r--app/graphql/resolvers/alert_management/integrations_resolver.rb2
-rw-r--r--app/graphql/resolvers/concerns/issue_resolver_arguments.rb2
-rw-r--r--app/graphql/types/alert_management/alert_sort_enum.rb4
-rw-r--r--app/graphql/types/alert_management/prometheus_integration_type.rb10
-rw-r--r--app/graphql/types/boards/board_issue_input_base_type.rb2
-rw-r--r--app/graphql/types/issues/negated_issue_filter_input_type.rb2
-rw-r--r--app/helpers/environments_helper.rb2
-rw-r--r--app/helpers/gitlab_routing_helper.rb381
-rw-r--r--app/helpers/operations_helper.rb10
-rw-r--r--app/helpers/projects/alert_management_helper.rb4
-rw-r--r--app/helpers/registrations_helper.rb7
-rw-r--r--app/helpers/routing/artifacts_helper.rb49
-rw-r--r--app/helpers/routing/graphql_helper.rb13
-rw-r--r--app/helpers/routing/groups/members_helper.rb31
-rw-r--r--app/helpers/routing/members_helper.rb14
-rw-r--r--app/helpers/routing/pipeline_schedules_helper.rb29
-rw-r--r--app/helpers/routing/projects/members_helper.rb31
-rw-r--r--app/helpers/routing/projects_helper.rb85
-rw-r--r--app/helpers/routing/snippets_helper.rb144
-rw-r--r--app/helpers/routing/wiki_helper.rb13
-rw-r--r--app/models/ability.rb8
-rw-r--r--app/models/clusters/integrations/prometheus.rb10
-rw-r--r--app/models/integration.rb2
-rw-r--r--app/models/project.rb6
-rw-r--r--app/services/projects/create_service.rb8
-rw-r--r--app/services/projects/operations/update_service.rb2
-rw-r--r--app/views/projects/settings/operations/show.html.haml2
-rw-r--r--app/views/registrations/invites/new.html.haml17
-rw-r--r--app/workers/clusters/applications/deactivate_service_worker.rb14
-rw-r--r--app/workers/projects/post_creation_worker.rb4
-rw-r--r--config/feature_flags/development/diffs_gradual_load.yml8
-rw-r--r--config/feature_flags/experiment/invite_signup_page_interaction.yml8
-rw-r--r--config/routes.rb1
-rw-r--r--doc/api/graphql/reference/index.md38
-rw-r--r--doc/development/fe_guide/index.md2
-rw-r--r--doc/development/fe_guide/source_editor.md (renamed from doc/development/fe_guide/editor_lite.md)98
-rw-r--r--doc/operations/metrics/alerts.md2
-rw-r--r--doc/operations/metrics/img/prometheus_integration_alerts.png (renamed from doc/operations/metrics/img/prometheus_service_alerts.png)bin16084 -> 16084 bytes
-rw-r--r--lib/gitlab/database_importers/self_monitoring/project/create_service.rb4
-rw-r--r--lib/gitlab/diff/file_collection/merge_request_diff_batch.rb35
-rw-r--r--locale/gitlab.pot12
-rw-r--r--package.json2
-rw-r--r--spec/controllers/invites_controller_spec.rb35
-rw-r--r--spec/controllers/projects/merge_requests/diffs_controller_spec.rb14
-rw-r--r--spec/controllers/projects/services_controller_spec.rb12
-rw-r--r--spec/controllers/registrations_controller_spec.rb32
-rw-r--r--spec/factories/integrations.rb2
-rw-r--r--spec/factories/projects.rb2
-rw-r--r--spec/factories/usage_data.rb2
-rw-r--r--spec/features/alert_management/alert_management_list_spec.rb2
-rw-r--r--spec/features/invites_spec.rb51
-rw-r--r--spec/features/merge_request/user_resolves_conflicts_spec.rb2
-rw-r--r--spec/features/merge_request/user_sees_versions_spec.rb2
-rw-r--r--spec/features/projects/ci/editor_spec.rb2
-rw-r--r--spec/features/projects/ci/lint_spec.rb2
-rw-r--r--spec/features/projects/files/dockerfile_dropdown_spec.rb2
-rw-r--r--spec/features/projects/files/gitignore_dropdown_spec.rb2
-rw-r--r--spec/features/projects/files/gitlab_ci_yml_dropdown_spec.rb2
-rw-r--r--spec/features/projects/services/prometheus_external_alerts_spec.rb2
-rw-r--r--spec/frontend/__helpers__/dom_shims/inner_text.js2
-rw-r--r--spec/frontend/blob/components/blob_edit_content_spec.js8
-rw-r--r--spec/frontend/blob/utils_spec.js12
-rw-r--r--spec/frontend/blob_edit/blob_bundle_spec.js10
-rw-r--r--spec/frontend/blob_edit/edit_blob_spec.js14
-rw-r--r--spec/frontend/ci_lint/components/ci_lint_spec.js4
-rw-r--r--spec/frontend/diffs/store/actions_spec.js13
-rw-r--r--spec/frontend/editor/editor_ci_schema_ext_spec.js6
-rw-r--r--spec/frontend/editor/editor_lite_extension_base_spec.js62
-rw-r--r--spec/frontend/editor/editor_lite_spec.js34
-rw-r--r--spec/frontend/editor/editor_markdown_ext_spec.js8
-rw-r--r--spec/frontend/fixtures/prometheus_service.rb4
-rw-r--r--spec/frontend/ide/components/repo_editor_spec.js10
-rw-r--r--spec/frontend/lib/utils/text_markdown_spec.js2
-rw-r--r--spec/frontend/packages/list/components/__snapshots__/packages_list_app_spec.js.snap1
-rw-r--r--spec/frontend/pipeline_editor/components/editor/ci_config_merged_preview_spec.js6
-rw-r--r--spec/frontend/pipeline_editor/components/editor/text_editor_spec.js10
-rw-r--r--spec/frontend/pipeline_editor/components/ui/editor_tab_spec.js6
-rw-r--r--spec/frontend/pipeline_editor/pipeline_editor_app_spec.js4
-rw-r--r--spec/frontend/serverless/components/__snapshots__/empty_state_spec.js.snap2
-rw-r--r--spec/frontend/snippets/components/__snapshots__/snippet_blob_edit_spec.js.snap2
-rw-r--r--spec/frontend/snippets/components/snippet_blob_edit_spec.js4
-rw-r--r--spec/frontend/vue_shared/components/__snapshots__/editor_lite_spec.js.snap4
-rw-r--r--spec/frontend/vue_shared/components/blob_viewers/simple_viewer_spec.js16
-rw-r--r--spec/frontend/vue_shared/components/editor_lite_spec.js16
-rw-r--r--spec/graphql/mutations/alert_management/prometheus_integration/create_spec.rb2
-rw-r--r--spec/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb2
-rw-r--r--spec/graphql/mutations/alert_management/prometheus_integration/update_spec.rb2
-rw-r--r--spec/graphql/resolvers/alert_management/http_integrations_resolver_spec.rb2
-rw-r--r--spec/graphql/resolvers/alert_management/integrations_resolver_spec.rb4
-rw-r--r--spec/graphql/types/alert_management/prometheus_integration_type_spec.rb4
-rw-r--r--spec/helpers/environments_helper_spec.rb14
-rw-r--r--spec/helpers/operations_helper_spec.rb22
-rw-r--r--spec/helpers/projects/alert_management_helper_spec.rb14
-rw-r--r--spec/helpers/registrations_helper_spec.rb24
-rw-r--r--spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb26
-rw-r--r--spec/lib/gitlab/diff/file_collection/merge_request_diff_batch_spec.rb34
-rw-r--r--spec/lib/gitlab/import_export/all_models.yml2
-rw-r--r--spec/lib/gitlab/prometheus/adapter_spec.rb20
-rw-r--r--spec/models/ability_spec.rb63
-rw-r--r--spec/models/clusters/integrations/prometheus_spec.rb8
-rw-r--r--spec/models/concerns/prometheus_adapter_spec.rb36
-rw-r--r--spec/models/deployment_metrics_spec.rb20
-rw-r--r--spec/models/integration_spec.rb62
-rw-r--r--spec/models/integrations/prometheus_spec.rb172
-rw-r--r--spec/models/merge_request_diff_spec.rb44
-rw-r--r--spec/models/project_spec.rb28
-rw-r--r--spec/policies/integration_policy_spec.rb4
-rw-r--r--spec/requests/api/graphql/mutations/alert_management/prometheus_integration/reset_token_spec.rb2
-rw-r--r--spec/requests/api/graphql/mutations/alert_management/prometheus_integration/update_spec.rb2
-rw-r--r--spec/requests/api/graphql/project/alert_management/integrations_spec.rb24
-rw-r--r--spec/requests/invite_registration_spec.rb68
-rw-r--r--spec/serializers/paginated_diff_entity_spec.rb12
-rw-r--r--spec/services/groups/create_service_spec.rb6
-rw-r--r--spec/services/projects/create_service_spec.rb46
-rw-r--r--spec/services/projects/operations/update_service_spec.rb10
-rw-r--r--spec/services/projects/prometheus/alerts/notify_service_spec.rb6
-rw-r--r--spec/services/projects/update_service_spec.rb30
-rw-r--r--spec/support/helpers/features/editor_lite_spec_helpers.rb4
-rw-r--r--spec/support/helpers/features/snippet_helpers.rb8
-rw-r--r--spec/support/helpers/features/top_nav_spec_helpers.rb2
-rw-r--r--spec/views/projects/settings/operations/show.html.haml_spec.rb6
-rw-r--r--spec/workers/clusters/applications/activate_service_worker_spec.rb22
-rw-r--r--spec/workers/clusters/applications/deactivate_service_worker_spec.rb32
-rw-r--r--spec/workers/projects/post_creation_worker_spec.rb30
-rw-r--r--yarn.lock8
156 files changed, 1233 insertions, 1476 deletions
diff --git a/app/assets/javascripts/blob/components/blob_edit_content.vue b/app/assets/javascripts/blob/components/blob_edit_content.vue
index 73ccc3289b9..0e670bbd80a 100644
--- a/app/assets/javascripts/blob/components/blob_edit_content.vue
+++ b/app/assets/javascripts/blob/components/blob_edit_content.vue
@@ -1,6 +1,6 @@
<script>
import { debounce } from 'lodash';
-import { initEditorLite } from '~/blob/utils';
+import { initSourceEditor } from '~/blob/utils';
import { SNIPPET_MEASURE_BLOBS_CONTENT } from '~/performance/constants';
import eventHub from './eventhub';
@@ -36,7 +36,7 @@ export default {
},
},
mounted() {
- this.editor = initEditorLite({
+ this.editor = initSourceEditor({
el: this.$refs.editor,
blobPath: this.fileName,
blobContent: this.value,
diff --git a/app/assets/javascripts/blob/utils.js b/app/assets/javascripts/blob/utils.js
index 8043c0bbc07..bbc061dd36e 100644
--- a/app/assets/javascripts/blob/utils.js
+++ b/app/assets/javascripts/blob/utils.js
@@ -1,6 +1,6 @@
-import Editor from '~/editor/editor_lite';
+import Editor from '~/editor/source_editor';
-export function initEditorLite({ el, ...args }) {
+export function initSourceEditor({ el, ...args }) {
const editor = new Editor({
scrollbar: {
alwaysConsumeMouseWheel: false,
diff --git a/app/assets/javascripts/blob_edit/edit_blob.js b/app/assets/javascripts/blob_edit/edit_blob.js
index 7c8d0d5ded0..7bfda46d71c 100644
--- a/app/assets/javascripts/blob_edit/edit_blob.js
+++ b/app/assets/javascripts/blob_edit/edit_blob.js
@@ -1,6 +1,6 @@
import $ from 'jquery';
-import EditorLite from '~/editor/editor_lite';
-import { FileTemplateExtension } from '~/editor/extensions/editor_file_template_ext';
+import { FileTemplateExtension } from '~/editor/extensions/source_editor_file_template_ext';
+import SourceEditor from '~/editor/source_editor';
import createFlash from '~/flash';
import axios from '~/lib/utils/axios_utils';
import { addEditorMarkdownListeners } from '~/lib/utils/text_markdown';
@@ -16,7 +16,7 @@ export default class EditBlob {
this.configureMonacoEditor();
if (this.options.isMarkdown) {
- import('~/editor/extensions/editor_markdown_ext')
+ import('~/editor/extensions/source_editor_markdown_ext')
.then(({ EditorMarkdownExtension: MarkdownExtension } = {}) => {
this.editor.use(new MarkdownExtension());
addEditorMarkdownListeners(this.editor);
@@ -40,7 +40,7 @@ export default class EditBlob {
const fileContentEl = document.getElementById('file-content');
const form = document.querySelector('.js-edit-blob-form');
- const rootEditor = new EditorLite();
+ const rootEditor = new SourceEditor();
this.editor = rootEditor.createInstance({
el: editorEl,
diff --git a/app/assets/javascripts/ci_lint/components/ci_lint.vue b/app/assets/javascripts/ci_lint/components/ci_lint.vue
index ced07dea7be..bc8a1f05ef5 100644
--- a/app/assets/javascripts/ci_lint/components/ci_lint.vue
+++ b/app/assets/javascripts/ci_lint/components/ci_lint.vue
@@ -2,7 +2,7 @@
import { GlButton, GlFormCheckbox, GlIcon, GlLink, GlAlert } from '@gitlab/ui';
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';
export default {
components: {
@@ -12,7 +12,7 @@ export default {
GlLink,
GlAlert,
CiLintResults,
- EditorLite,
+ SourceEditor,
},
props: {
endpoint: {
@@ -93,7 +93,7 @@ export default {
<div class="js-file-title file-title clearfix">
{{ __('Contents of .gitlab-ci.yml') }}
</div>
- <editor-lite v-model="content" file-name="*.yml" />
+ <source-editor v-model="content" file-name="*.yml" />
</div>
</div>
diff --git a/app/assets/javascripts/diffs/constants.js b/app/assets/javascripts/diffs/constants.js
index d1e02fbc598..f1cf556fde0 100644
--- a/app/assets/javascripts/diffs/constants.js
+++ b/app/assets/javascripts/diffs/constants.js
@@ -59,7 +59,6 @@ export const MIN_RENDERING_MS = 2;
export const START_RENDERING_INDEX = 200;
export const INLINE_DIFF_LINES_KEY = 'highlighted_diff_lines';
export const PARALLEL_DIFF_LINES_KEY = 'parallel_diff_lines';
-export const DIFFS_PER_PAGE = 20;
export const DIFF_COMPARE_BASE_VERSION_INDEX = -1;
export const DIFF_COMPARE_HEAD_VERSION_INDEX = -2;
diff --git a/app/assets/javascripts/diffs/store/actions.js b/app/assets/javascripts/diffs/store/actions.js
index 2e94f147086..651d2f76d33 100644
--- a/app/assets/javascripts/diffs/store/actions.js
+++ b/app/assets/javascripts/diffs/store/actions.js
@@ -25,7 +25,6 @@ import {
MIN_RENDERING_MS,
START_RENDERING_INDEX,
INLINE_DIFF_LINES_KEY,
- DIFFS_PER_PAGE,
DIFF_FILE_MANUAL_COLLAPSE,
DIFF_FILE_AUTOMATIC_COLLAPSE,
EVT_PERF_MARK_FILE_TREE_START,
@@ -92,15 +91,9 @@ export const setBaseConfig = ({ commit }, options) => {
};
export const fetchDiffFilesBatch = ({ commit, state, dispatch }) => {
- const diffsGradualLoad = window.gon?.features?.diffsGradualLoad;
- let perPage = DIFFS_PER_PAGE;
+ let perPage = state.viewDiffsFileByFile ? 1 : 5;
let increaseAmount = 1.4;
-
- if (diffsGradualLoad) {
- perPage = state.viewDiffsFileByFile ? 1 : 5;
- }
-
- const startPage = diffsGradualLoad ? 0 : 1;
+ const startPage = 0;
const id = window?.location?.hash;
const isNoteLink = id.indexOf('#note') === 0;
const urlParams = {
@@ -130,11 +123,7 @@ export const fetchDiffFilesBatch = ({ commit, state, dispatch }) => {
dispatch('setCurrentDiffFileIdFromNote', id.split('_').pop());
}
- if (
- (diffsGradualLoad &&
- (totalLoaded === pagination.total_pages || pagination.total_pages === null)) ||
- (!diffsGradualLoad && !pagination.next_page)
- ) {
+ if (totalLoaded === pagination.total_pages || pagination.total_pages === null) {
commit(types.SET_RETRIEVING_BATCHES, false);
// We need to check that the currentDiffFileId points to a file that exists
@@ -164,15 +153,11 @@ export const fetchDiffFilesBatch = ({ commit, state, dispatch }) => {
return null;
}
- if (diffsGradualLoad) {
- const nextPage = page + perPage;
- perPage = Math.min(Math.ceil(perPage * increaseAmount), 30);
- increaseAmount = Math.min(increaseAmount + 0.2, 2);
-
- return nextPage;
- }
+ const nextPage = page + perPage;
+ perPage = Math.min(Math.ceil(perPage * increaseAmount), 30);
+ increaseAmount = Math.min(increaseAmount + 0.2, 2);
- return pagination.next_page;
+ return nextPage;
})
.then((nextPage) => {
dispatch('startRenderDiffsQueue');
diff --git a/app/assets/javascripts/editor/constants.js b/app/assets/javascripts/editor/constants.js
index c991316dda2..bf3ca4d0c77 100644
--- a/app/assets/javascripts/editor/constants.js
+++ b/app/assets/javascripts/editor/constants.js
@@ -1,6 +1,6 @@
import { __ } from '~/locale';
-export const EDITOR_LITE_INSTANCE_ERROR_NO_EL = __(
+export const SOURCE_EDITOR_INSTANCE_ERROR_NO_EL = __(
'"el" parameter is required for createInstance()',
);
@@ -8,7 +8,7 @@ export const URI_PREFIX = 'gitlab';
export const CONTENT_UPDATE_DEBOUNCE = 250;
export const ERROR_INSTANCE_REQUIRED_FOR_EXTENSION = __(
- 'Editor Lite instance is required to set up an extension.',
+ 'Source Editor instance is required to set up an extension.',
);
export const EDITOR_READY_EVENT = 'editor-ready';
diff --git a/app/assets/javascripts/editor/extensions/editor_file_template_ext.js b/app/assets/javascripts/editor/extensions/editor_file_template_ext.js
deleted file mode 100644
index f5474318447..00000000000
--- a/app/assets/javascripts/editor/extensions/editor_file_template_ext.js
+++ /dev/null
@@ -1,8 +0,0 @@
-import { Position } from 'monaco-editor';
-import { EditorLiteExtension } from './editor_lite_extension_base';
-
-export class FileTemplateExtension extends EditorLiteExtension {
- navigateFileStart() {
- this.setPosition(new Position(1, 1));
- }
-}
diff --git a/app/assets/javascripts/editor/extensions/editor_ci_schema_ext.js b/app/assets/javascripts/editor/extensions/source_editor_ci_schema_ext.js
index c5ee61ec86e..410aaed86a7 100644
--- a/app/assets/javascripts/editor/extensions/editor_ci_schema_ext.js
+++ b/app/assets/javascripts/editor/extensions/source_editor_ci_schema_ext.js
@@ -1,9 +1,9 @@
import Api from '~/api';
import { registerSchema } from '~/ide/utils';
import { EXTENSION_CI_SCHEMA_FILE_NAME_MATCH } from '../constants';
-import { EditorLiteExtension } from './editor_lite_extension_base';
+import { SourceEditorExtension } from './source_editor_extension_base';
-export class CiSchemaExtension extends EditorLiteExtension {
+export class CiSchemaExtension extends SourceEditorExtension {
/**
* Registers a syntax schema to the editor based on project
* identifier and commit.
diff --git a/app/assets/javascripts/editor/extensions/editor_lite_extension_base.js b/app/assets/javascripts/editor/extensions/source_editor_extension_base.js
index 05a020bd958..5fa01f03f7e 100644
--- a/app/assets/javascripts/editor/extensions/editor_lite_extension_base.js
+++ b/app/assets/javascripts/editor/extensions/source_editor_extension_base.js
@@ -16,15 +16,15 @@ const createAnchor = (href) => {
return fragment;
};
-export class EditorLiteExtension {
+export class SourceEditorExtension {
constructor({ instance, ...options } = {}) {
if (instance) {
Object.assign(instance, options);
- EditorLiteExtension.highlightLines(instance);
+ SourceEditorExtension.highlightLines(instance);
if (instance.getEditorType && instance.getEditorType() === EDITOR_TYPE_CODE) {
- EditorLiteExtension.setupLineLinking(instance);
+ SourceEditorExtension.setupLineLinking(instance);
}
- EditorLiteExtension.deferRerender(instance);
+ SourceEditorExtension.deferRerender(instance);
} else if (Object.entries(options).length) {
throw new Error(ERROR_INSTANCE_REQUIRED_FOR_EXTENSION);
}
@@ -79,7 +79,7 @@ export class EditorLiteExtension {
}
static setupLineLinking(instance) {
- instance.onMouseMove(EditorLiteExtension.onMouseMoveHandler);
+ instance.onMouseMove(SourceEditorExtension.onMouseMoveHandler);
instance.onMouseDown((e) => {
const isCorrectAnchor = e.target.element.classList.contains('link-anchor');
if (!isCorrectAnchor) {
diff --git a/app/assets/javascripts/editor/extensions/source_editor_file_template_ext.js b/app/assets/javascripts/editor/extensions/source_editor_file_template_ext.js
new file mode 100644
index 00000000000..397e090ed30
--- /dev/null
+++ b/app/assets/javascripts/editor/extensions/source_editor_file_template_ext.js
@@ -0,0 +1,8 @@
+import { Position } from 'monaco-editor';
+import { SourceEditorExtension } from './source_editor_extension_base';
+
+export class FileTemplateExtension extends SourceEditorExtension {
+ navigateFileStart() {
+ this.setPosition(new Position(1, 1));
+ }
+}
diff --git a/app/assets/javascripts/editor/extensions/editor_markdown_ext.js b/app/assets/javascripts/editor/extensions/source_editor_markdown_ext.js
index 2ce003753f7..997503a12f5 100644
--- a/app/assets/javascripts/editor/extensions/editor_markdown_ext.js
+++ b/app/assets/javascripts/editor/extensions/source_editor_markdown_ext.js
@@ -1,6 +1,6 @@
-import { EditorLiteExtension } from './editor_lite_extension_base';
+import { SourceEditorExtension } from './source_editor_extension_base';
-export class EditorMarkdownExtension extends EditorLiteExtension {
+export class EditorMarkdownExtension extends SourceEditorExtension {
getSelectedText(selection = this.getSelection()) {
const { startLineNumber, endLineNumber, startColumn, endColumn } = selection;
const valArray = this.getValue().split('\n');
diff --git a/app/assets/javascripts/editor/extensions/editor_lite_webide_ext.js b/app/assets/javascripts/editor/extensions/source_editor_webide_ext.js
index 83b0386d470..98e05489c1c 100644
--- a/app/assets/javascripts/editor/extensions/editor_lite_webide_ext.js
+++ b/app/assets/javascripts/editor/extensions/source_editor_webide_ext.js
@@ -1,7 +1,7 @@
import { debounce } from 'lodash';
import { KeyCode, KeyMod, Range } from 'monaco-editor';
import { EDITOR_TYPE_DIFF } from '~/editor/constants';
-import { EditorLiteExtension } from '~/editor/extensions/editor_lite_extension_base';
+import { SourceEditorExtension } from '~/editor/extensions/source_editor_extension_base';
import Disposable from '~/ide/lib/common/disposable';
import { editorOptions } from '~/ide/lib/editor_options';
import keymap from '~/ide/lib/keymap.json';
@@ -12,7 +12,7 @@ const isDiffEditorType = (instance) => {
export const UPDATE_DIMENSIONS_DELAY = 200;
-export class EditorWebIdeExtension extends EditorLiteExtension {
+export class EditorWebIdeExtension extends SourceEditorExtension {
constructor({ instance, modelManager, ...options } = {}) {
super({
instance,
diff --git a/app/assets/javascripts/editor/editor_lite.js b/app/assets/javascripts/editor/source_editor.js
index 249888ede9b..ee97714824e 100644
--- a/app/assets/javascripts/editor/editor_lite.js
+++ b/app/assets/javascripts/editor/source_editor.js
@@ -6,23 +6,23 @@ import { registerLanguages } from '~/ide/utils';
import { joinPaths } from '~/lib/utils/url_utility';
import { uuids } from '~/lib/utils/uuids';
import {
- EDITOR_LITE_INSTANCE_ERROR_NO_EL,
+ SOURCE_EDITOR_INSTANCE_ERROR_NO_EL,
URI_PREFIX,
EDITOR_READY_EVENT,
EDITOR_TYPE_DIFF,
} from './constants';
import { clearDomElement } from './utils';
-export default class EditorLite {
+export default class SourceEditor {
constructor(options = {}) {
this.instances = [];
this.options = {
- extraEditorClassName: 'gl-editor-lite',
+ extraEditorClassName: 'gl-source-editor',
...defaultEditorOptions,
...options,
};
- EditorLite.setupMonacoTheme();
+ SourceEditor.setupMonacoTheme();
registerLanguages(...languages);
}
@@ -56,7 +56,7 @@ export default class EditorLite {
extensionsArray.forEach((ext) => {
const prefix = ext.includes('/') ? '' : 'editor/';
const trimmedExt = ext.replace(/^\//, '').trim();
- EditorLite.pushToImportsArray(promises, `~/${prefix}${trimmedExt}`);
+ SourceEditor.pushToImportsArray(promises, `~/${prefix}${trimmedExt}`);
});
return Promise.all(promises);
@@ -77,7 +77,7 @@ export default class EditorLite {
static prepareInstance(el) {
if (!el) {
- throw new Error(EDITOR_LITE_INSTANCE_ERROR_NO_EL);
+ throw new Error(SOURCE_EDITOR_INSTANCE_ERROR_NO_EL);
}
clearDomElement(el);
@@ -88,7 +88,7 @@ export default class EditorLite {
}
static manageDefaultExtensions(instance, el, extensions) {
- EditorLite.loadExtensions(extensions, instance)
+ SourceEditor.loadExtensions(extensions, instance)
.then((modules) => {
if (modules) {
modules.forEach((module) => {
@@ -126,7 +126,7 @@ export default class EditorLite {
const diffModel = {
original: monacoEditor.createModel(
blobOriginalContent,
- EditorLite.getModelLanguage(model.uri.path),
+ SourceEditor.getModelLanguage(model.uri.path),
),
modified: model,
};
@@ -135,18 +135,18 @@ export default class EditorLite {
}
static convertMonacoToELInstance = (inst) => {
- const editorLiteInstanceAPI = {
+ const sourceEditorInstanceAPI = {
updateModelLanguage: (path) => {
- return EditorLite.instanceUpdateLanguage(inst, path);
+ return SourceEditor.instanceUpdateLanguage(inst, path);
},
use: (exts = []) => {
- return EditorLite.instanceApplyExtension(inst, exts);
+ return SourceEditor.instanceApplyExtension(inst, exts);
},
};
const handler = {
get(target, prop, receiver) {
- if (Reflect.has(editorLiteInstanceAPI, prop)) {
- return editorLiteInstanceAPI[prop];
+ if (Reflect.has(sourceEditorInstanceAPI, prop)) {
+ return sourceEditorInstanceAPI[prop];
}
return Reflect.get(target, prop, receiver);
},
@@ -155,7 +155,7 @@ export default class EditorLite {
};
static instanceUpdateLanguage(inst, path) {
- const lang = EditorLite.getModelLanguage(path);
+ const lang = SourceEditor.getModelLanguage(path);
const model = inst.getModel();
return monacoEditor.setModelLanguage(model, lang);
}
@@ -163,7 +163,7 @@ export default class EditorLite {
static instanceApplyExtension(inst, exts = []) {
const extensions = [].concat(exts);
extensions.forEach((extension) => {
- EditorLite.mixIntoInstance(extension, inst);
+ SourceEditor.mixIntoInstance(extension, inst);
});
return inst;
}
@@ -210,10 +210,10 @@ export default class EditorLite {
isDiff = false,
...instanceOptions
} = {}) {
- EditorLite.prepareInstance(el);
+ SourceEditor.prepareInstance(el);
const createEditorFn = isDiff ? 'createDiffEditor' : 'create';
- const instance = EditorLite.convertMonacoToELInstance(
+ const instance = SourceEditor.convertMonacoToELInstance(
monacoEditor[createEditorFn].call(this, el, {
...this.options,
...instanceOptions,
@@ -222,7 +222,7 @@ export default class EditorLite {
let model;
if (instanceOptions.model !== null) {
- model = EditorLite.createEditorModel({
+ model = SourceEditor.createEditorModel({
blobGlobalId,
blobOriginalContent,
blobPath,
@@ -233,11 +233,11 @@ export default class EditorLite {
}
instance.onDidDispose(() => {
- EditorLite.instanceRemoveFromRegistry(this, instance);
- EditorLite.instanceDisposeModels(this, instance, model);
+ SourceEditor.instanceRemoveFromRegistry(this, instance);
+ SourceEditor.instanceDisposeModels(this, instance, model);
});
- EditorLite.manageDefaultExtensions(instance, el, extensions);
+ SourceEditor.manageDefaultExtensions(instance, el, extensions);
this.instances.push(instance);
return instance;
diff --git a/app/assets/javascripts/ide/components/repo_editor.vue b/app/assets/javascripts/ide/components/repo_editor.vue
index ee5f2812237..5b8454d0ef8 100644
--- a/app/assets/javascripts/ide/components/repo_editor.vue
+++ b/app/assets/javascripts/ide/components/repo_editor.vue
@@ -6,8 +6,8 @@ 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 createFlash from '~/flash';
import ModelManager from '~/ide/lib/common/model_manager';
import { defaultDiffEditorOptions, defaultEditorOptions } from '~/ide/lib/editor_options';
@@ -216,7 +216,7 @@ export default {
},
mounted() {
if (!this.globalEditor) {
- this.globalEditor = new EditorLite();
+ this.globalEditor = new SourceEditor();
}
this.initEditor();
diff --git a/app/assets/javascripts/merge_conflicts/components/diff_file_editor.vue b/app/assets/javascripts/merge_conflicts/components/diff_file_editor.vue
index f09aebea431..7168efa28ad 100644
--- a/app/assets/javascripts/merge_conflicts/components/diff_file_editor.vue
+++ b/app/assets/javascripts/merge_conflicts/components/diff_file_editor.vue
@@ -50,13 +50,13 @@ export default {
methods: {
...mapActions(['setFileResolveMode', 'setPromptConfirmationState', 'updateFile']),
loadEditor() {
- const EditorPromise = import(/* webpackChunkName: 'EditorLite' */ '~/editor/editor_lite');
+ const EditorPromise = import(/* webpackChunkName: 'SourceEditor' */ '~/editor/source_editor');
const DataPromise = axios.get(this.file.content_path);
Promise.all([EditorPromise, DataPromise])
.then(
([
- { default: EditorLite },
+ { default: SourceEditor },
{
data: { content, new_path: path },
},
@@ -66,7 +66,7 @@ export default {
this.originalContent = content;
this.fileLoaded = true;
- this.editor = new EditorLite().createInstance({
+ this.editor = new SourceEditor().createInstance({
el: contentEl,
blobPath: path,
blobContent: content,
diff --git a/app/assets/javascripts/pipeline_editor/components/editor/ci_config_merged_preview.vue b/app/assets/javascripts/pipeline_editor/components/editor/ci_config_merged_preview.vue
index 455990f2791..853e839a7ab 100644
--- a/app/assets/javascripts/pipeline_editor/components/editor/ci_config_merged_preview.vue
+++ b/app/assets/javascripts/pipeline_editor/components/editor/ci_config_merged_preview.vue
@@ -2,14 +2,14 @@
import { GlIcon } from '@gitlab/ui';
import { uniqueId } from 'lodash';
import { s__ } from '~/locale';
-import EditorLite from '~/vue_shared/components/editor_lite.vue';
+import SourceEditor from '~/vue_shared/components/source_editor.vue';
export default {
i18n: {
viewOnlyMessage: s__('Pipelines|Merged YAML is view only'),
},
components: {
- EditorLite,
+ SourceEditor,
GlIcon,
},
inject: ['ciConfigPath'],
@@ -41,7 +41,7 @@ export default {
{{ $options.i18n.viewOnlyMessage }}
</div>
<div class="gl-mt-3 gl-border-solid gl-border-gray-100 gl-border-1">
- <editor-lite
+ <source-editor
ref="editor"
:value="mergedYaml"
:file-name="ciConfigPath"
diff --git a/app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue b/app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue
index d373f74a5c4..932f8b41b38 100644
--- a/app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue
+++ b/app/assets/javascripts/pipeline_editor/components/editor/text_editor.vue
@@ -1,13 +1,13 @@
<script>
import { EDITOR_READY_EVENT } from '~/editor/constants';
-import { CiSchemaExtension } from '~/editor/extensions/editor_ci_schema_ext';
-import EditorLite from '~/vue_shared/components/editor_lite.vue';
+import { CiSchemaExtension } from '~/editor/extensions/source_editor_ci_schema_ext';
+import SourceEditor from '~/vue_shared/components/source_editor.vue';
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import getCommitSha from '../../graphql/queries/client/commit_sha.graphql';
export default {
components: {
- EditorLite,
+ SourceEditor,
},
mixins: [glFeatureFlagMixin()],
inject: ['ciConfigPath', 'projectPath', 'projectNamespace', 'defaultBranch'],
@@ -44,7 +44,7 @@ export default {
</script>
<template>
<div class="gl-border-solid gl-border-gray-100 gl-border-1">
- <editor-lite
+ <source-editor
ref="editor"
:file-name="ciConfigPath"
v-bind="$attrs"
diff --git a/app/assets/javascripts/snippets/components/snippet_blob_edit.vue b/app/assets/javascripts/snippets/components/snippet_blob_edit.vue
index 612b4c7d2e3..fe169775f96 100644
--- a/app/assets/javascripts/snippets/components/snippet_blob_edit.vue
+++ b/app/assets/javascripts/snippets/components/snippet_blob_edit.vue
@@ -6,13 +6,13 @@ import axios from '~/lib/utils/axios_utils';
import { getBaseURL, joinPaths } from '~/lib/utils/url_utility';
import { sprintf } from '~/locale';
import { SNIPPET_BLOB_CONTENT_FETCH_ERROR } from '~/snippets/constants';
-import EditorLite from '~/vue_shared/components/editor_lite.vue';
+import SourceEditor from '~/vue_shared/components/source_editor.vue';
export default {
components: {
BlobHeaderEdit,
GlLoadingIcon,
- EditorLite,
+ SourceEditor,
},
inheritAttrs: false,
props: {
@@ -85,7 +85,7 @@ export default {
size="lg"
class="loading-animation prepend-top-20 gl-mb-6"
/>
- <editor-lite
+ <source-editor
v-else
:value="blob.content"
:file-global-id="blob.id"
diff --git a/app/assets/javascripts/vue_shared/components/blob_viewers/simple_viewer.vue b/app/assets/javascripts/vue_shared/components/blob_viewers/simple_viewer.vue
index f6ab3cac536..0589b47edbd 100644
--- a/app/assets/javascripts/vue_shared/components/blob_viewers/simple_viewer.vue
+++ b/app/assets/javascripts/vue_shared/components/blob_viewers/simple_viewer.vue
@@ -9,8 +9,8 @@ export default {
name: 'SimpleViewer',
components: {
GlIcon,
- EditorLite: () =>
- import(/* webpackChunkName: 'EditorLite' */ '~/vue_shared/components/editor_lite.vue'),
+ SourceEditor: () =>
+ import(/* webpackChunkName: 'SourceEditor' */ '~/vue_shared/components/source_editor.vue'),
},
mixins: [ViewerMixin, glFeatureFlagsMixin()],
inject: ['blobHash'],
@@ -53,7 +53,7 @@ export default {
</script>
<template>
<div>
- <editor-lite
+ <source-editor
v-if="isRawContent && refactorBlobViewerEnabled"
:value="content"
:file-name="fileName"
diff --git a/app/assets/javascripts/vue_shared/components/editor_lite.vue b/app/assets/javascripts/vue_shared/components/source_editor.vue
index c3bddabea21..fdf0c9baee3 100644
--- a/app/assets/javascripts/vue_shared/components/editor_lite.vue
+++ b/app/assets/javascripts/vue_shared/components/source_editor.vue
@@ -1,9 +1,9 @@
<script>
import { debounce } from 'lodash';
import { CONTENT_UPDATE_DEBOUNCE, EDITOR_READY_EVENT } from '~/editor/constants';
-import Editor from '~/editor/editor_lite';
+import Editor from '~/editor/source_editor';
-function initEditorLite({ el, ...args }) {
+function initSourceEditor({ el, ...args }) {
const editor = new Editor({
scrollbar: {
alwaysConsumeMouseWheel: false,
@@ -64,7 +64,7 @@ export default {
},
},
mounted() {
- this.editor = initEditorLite({
+ this.editor = initSourceEditor({
el: this.$refs.editor,
blobPath: this.fileName,
blobContent: this.value,
@@ -93,7 +93,7 @@ export default {
</script>
<template>
<div
- :id="`editor-lite-${fileGlobalId}`"
+ :id="`source-editor-${fileGlobalId}`"
ref="editor"
data-editor-loading
@[$options.readyEvent]="$emit($options.readyEvent)"
diff --git a/app/assets/stylesheets/framework.scss b/app/assets/stylesheets/framework.scss
index 2fbdaaaf467..6b7189760b8 100644
--- a/app/assets/stylesheets/framework.scss
+++ b/app/assets/stylesheets/framework.scss
@@ -69,5 +69,5 @@
@import 'framework/system_messages';
@import 'framework/spinner';
@import 'framework/card';
-@import 'framework/editor-lite';
+@import 'framework/source_editor';
@import 'framework/diffs';
diff --git a/app/assets/stylesheets/framework/editor-lite.scss b/app/assets/stylesheets/framework/source_editor.scss
index 05b53e0c3d8..a967d9a71f1 100644
--- a/app/assets/stylesheets/framework/editor-lite.scss
+++ b/app/assets/stylesheets/framework/source_editor.scss
@@ -21,11 +21,11 @@
}
}
-[id^='editor-lite-'] {
+[id^='source-editor-'] {
height: 500px;
}
-.monaco-editor.gl-editor-lite {
+.monaco-editor.gl-source-editor {
.margin-view-overlays {
.line-numbers {
@include gl-display-flex;
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 07ecde1181f..34bad74a9fc 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -106,10 +106,6 @@ class ApplicationController < ActionController::Base
redirect_back(fallback_location: default, **options)
end
- def check_if_gl_com_or_dev
- render_404 unless ::Gitlab.dev_env_or_com?
- end
-
def not_found
render_404
end
diff --git a/app/controllers/invites_controller.rb b/app/controllers/invites_controller.rb
index 0a9a9e03e94..e6aae144da6 100644
--- a/app/controllers/invites_controller.rb
+++ b/app/controllers/invites_controller.rb
@@ -86,18 +86,7 @@ class InvitesController < ApplicationController
if user_sign_up?
set_session_invite_params
- experiment(:invite_signup_page_interaction, actor: member) do |experiment_instance|
- set_originating_member_id if experiment_instance.enabled?
-
- experiment_instance.use do
- redirect_to new_user_registration_path(invite_email: member.invite_email), notice: _("To accept this invitation, create an account or sign in.")
- end
- experiment_instance.try do
- redirect_to new_users_sign_up_invite_path(invite_email: member.invite_email)
- end
-
- experiment_instance.track(:view)
- end
+ redirect_to new_user_registration_path(invite_email: member.invite_email), notice: _("To accept this invitation, create an account or sign in.")
else
redirect_to new_user_session_path(sign_in_redirect_params), notice: sign_in_notice
end
@@ -106,11 +95,7 @@ class InvitesController < ApplicationController
def set_session_invite_params
session[:invite_email] = member.invite_email
- set_originating_member_id if Members::InviteEmailExperiment.initial_invite_email?(params[:invite_type])
- end
-
- def set_originating_member_id
- session[:originating_member_id] = member.id
+ session[:originating_member_id] = member.id if Members::InviteEmailExperiment.initial_invite_email?(params[:invite_type])
end
def sign_in_redirect_params
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 85a0d3711b6..dd377452b20 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -35,7 +35,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo
push_frontend_feature_flag(:drag_comment_selection, @project, default_enabled: true)
push_frontend_feature_flag(:default_merge_ref_for_diffs, @project, default_enabled: :yaml)
push_frontend_feature_flag(:core_security_mr_widget_counts, @project)
- push_frontend_feature_flag(:diffs_gradual_load, @project, default_enabled: true)
push_frontend_feature_flag(:local_file_reviews, default_enabled: :yaml)
push_frontend_feature_flag(:paginated_notes, @project, default_enabled: :yaml)
push_frontend_feature_flag(:confidential_notes, @project, default_enabled: :yaml)
diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb
index 7288cbd2a40..34f1cfb866e 100644
--- a/app/controllers/projects/services_controller.rb
+++ b/app/controllers/projects/services_controller.rb
@@ -9,8 +9,8 @@ class Projects::ServicesController < Projects::ApplicationController
before_action :ensure_service_enabled
before_action :integration
before_action :web_hook_logs, only: [:edit, :update]
- before_action :set_deprecation_notice_for_prometheus_service, only: [:edit, :update]
- before_action :redirect_deprecated_prometheus_service, only: [:update]
+ before_action :set_deprecation_notice_for_prometheus_integration, only: [:edit, :update]
+ before_action :redirect_deprecated_prometheus_integration, only: [:update]
respond_to :html
@@ -104,11 +104,11 @@ class Projects::ServicesController < Projects::ApplicationController
.merge(errors: integration.errors.as_json)
end
- def redirect_deprecated_prometheus_service
+ def redirect_deprecated_prometheus_integration
redirect_to edit_project_service_path(project, integration) if integration.is_a?(::Integrations::Prometheus) && Feature.enabled?(:settings_operations_prometheus_service, project)
end
- def set_deprecation_notice_for_prometheus_service
+ def set_deprecation_notice_for_prometheus_integration
return if !integration.is_a?(::Integrations::Prometheus) || !Feature.enabled?(:settings_operations_prometheus_service, project)
operations_link_start = "<a href=\"#{project_settings_operations_path(project)}\">"
diff --git a/app/controllers/registrations/invites_controller.rb b/app/controllers/registrations/invites_controller.rb
deleted file mode 100644
index 548714e80e9..00000000000
--- a/app/controllers/registrations/invites_controller.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-# frozen_string_literal: true
-
-module Registrations
- class InvitesController < RegistrationsController
- layout 'simple_registration'
-
- before_action :check_if_gl_com_or_dev
- end
-end
diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb
index cacd3c2da64..7b1060eba8f 100644
--- a/app/controllers/registrations_controller.rb
+++ b/app/controllers/registrations_controller.rb
@@ -199,7 +199,6 @@ class RegistrationsController < Devise::RegistrationsController
return unless member
- experiment(:invite_signup_page_interaction, actor: member).track(:form_submission)
experiment('members/invite_email', actor: member).track(:accepted)
end
diff --git a/app/graphql/mutations/alert_management/prometheus_integration/create.rb b/app/graphql/mutations/alert_management/prometheus_integration/create.rb
index c6dc85dc07c..4d0a5a5cb13 100644
--- a/app/graphql/mutations/alert_management/prometheus_integration/create.rb
+++ b/app/graphql/mutations/alert_management/prometheus_integration/create.rb
@@ -23,7 +23,7 @@ module Mutations
def resolve(args)
project = authorized_find!(args[:project_path])
- return integration_exists if project.prometheus_service
+ return integration_exists if project.prometheus_integration
result = ::Projects::Operations::UpdateService.new(
project,
@@ -32,7 +32,7 @@ module Mutations
**token_attributes
).execute
- response(project.prometheus_service, result)
+ response(project.prometheus_integration, result)
end
private
diff --git a/app/graphql/resolvers/alert_management/alert_resolver.rb b/app/graphql/resolvers/alert_management/alert_resolver.rb
index 008641ed88a..62744e719da 100644
--- a/app/graphql/resolvers/alert_management/alert_resolver.rb
+++ b/app/graphql/resolvers/alert_management/alert_resolver.rb
@@ -12,7 +12,7 @@ module Resolvers
argument :statuses, [Types::AlertManagement::StatusEnum],
as: :status,
required: false,
- description: 'Alerts with the specified statues. For example, [TRIGGERED].'
+ description: 'Alerts with the specified statues. For example, `[TRIGGERED]`.'
argument :sort, Types::AlertManagement::AlertSortEnum,
description: 'Sort alerts by this criteria.',
diff --git a/app/graphql/resolvers/alert_management/integrations_resolver.rb b/app/graphql/resolvers/alert_management/integrations_resolver.rb
index 38d0f9880ca..a97650e95d9 100644
--- a/app/graphql/resolvers/alert_management/integrations_resolver.rb
+++ b/app/graphql/resolvers/alert_management/integrations_resolver.rb
@@ -34,7 +34,7 @@ module Resolvers
def prometheus_integrations
return [] unless prometheus_integrations_allowed?
- Array(project.prometheus_service)
+ Array(project.prometheus_integration)
end
def http_integrations
diff --git a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb
index aa08d62c6a5..c24f4dedc0e 100644
--- a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb
+++ b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb
@@ -11,7 +11,7 @@ module IssueResolverArguments
description: 'IID of the issue. For example, "1".'
argument :iids, [GraphQL::STRING_TYPE],
required: false,
- description: 'List of IIDs of issues. For example, ["1", "2"].'
+ description: 'List of IIDs of issues. For example, `["1", "2"]`.'
argument :label_name, [GraphQL::STRING_TYPE, null: true],
required: false,
description: 'Labels applied to this issue.'
diff --git a/app/graphql/types/alert_management/alert_sort_enum.rb b/app/graphql/types/alert_management/alert_sort_enum.rb
index 11a5cb95722..b4d09734e30 100644
--- a/app/graphql/types/alert_management/alert_sort_enum.rb
+++ b/app/graphql/types/alert_management/alert_sort_enum.rb
@@ -18,8 +18,8 @@ module Types
value 'EVENT_COUNT_DESC', 'Events count by descending order.', value: :event_count_desc
value 'SEVERITY_ASC', 'Severity from less critical to more critical.', value: :severity_asc
value 'SEVERITY_DESC', 'Severity from more critical to less critical.', value: :severity_desc
- value 'STATUS_ASC', 'Status by order: Ignored > Resolved > Acknowledged > Triggered.', value: :status_asc
- value 'STATUS_DESC', 'Status by order: Triggered > Acknowledged > Resolved > Ignored.', value: :status_desc
+ value 'STATUS_ASC', 'Status by order: `Ignored > Resolved > Acknowledged > Triggered`.', value: :status_asc
+ value 'STATUS_DESC', 'Status by order: `Triggered > Acknowledged > Resolved > Ignored`.', value: :status_desc
end
end
end
diff --git a/app/graphql/types/alert_management/prometheus_integration_type.rb b/app/graphql/types/alert_management/prometheus_integration_type.rb
index 79f265f2f1e..27e4832d8f6 100644
--- a/app/graphql/types/alert_management/prometheus_integration_type.rb
+++ b/app/graphql/types/alert_management/prometheus_integration_type.rb
@@ -12,10 +12,10 @@ module Types
authorize :admin_project
- alias_method :prometheus_service, :object
+ alias_method :prometheus_integration, :object
def name
- prometheus_service.title
+ prometheus_integration.title
end
def type
@@ -23,15 +23,15 @@ module Types
end
def token
- prometheus_service.project&.alerting_setting&.token
+ prometheus_integration.project&.alerting_setting&.token
end
def url
- prometheus_service.project && notify_project_prometheus_alerts_url(prometheus_service.project, format: :json)
+ prometheus_integration.project && notify_project_prometheus_alerts_url(prometheus_integration.project, format: :json)
end
def active
- prometheus_service.manual_configuration?
+ prometheus_integration.manual_configuration?
end
end
end
diff --git a/app/graphql/types/boards/board_issue_input_base_type.rb b/app/graphql/types/boards/board_issue_input_base_type.rb
index 633221e61d1..30f4efcd403 100644
--- a/app/graphql/types/boards/board_issue_input_base_type.rb
+++ b/app/graphql/types/boards/board_issue_input_base_type.rb
@@ -6,7 +6,7 @@ module Types
class BoardIssueInputBaseType < BoardIssuableInputBaseType
argument :iids, [GraphQL::STRING_TYPE],
required: false,
- description: 'List of IIDs of issues. For example ["1", "2"].'
+ description: 'List of IIDs of issues. For example `["1", "2"]`.'
argument :milestone_title, GraphQL::STRING_TYPE,
required: false,
diff --git a/app/graphql/types/issues/negated_issue_filter_input_type.rb b/app/graphql/types/issues/negated_issue_filter_input_type.rb
index 8a2e75ed9ba..88faf7e7074 100644
--- a/app/graphql/types/issues/negated_issue_filter_input_type.rb
+++ b/app/graphql/types/issues/negated_issue_filter_input_type.rb
@@ -7,7 +7,7 @@ module Types
argument :iids, [GraphQL::STRING_TYPE],
required: false,
- description: 'List of IIDs of issues to exclude. For example, [1, 2].'
+ description: 'List of IIDs of issues to exclude. For example, `[1, 2]`.'
argument :label_name, [GraphQL::STRING_TYPE],
required: false,
description: 'Labels not applied to this issue.'
diff --git a/app/helpers/environments_helper.rb b/app/helpers/environments_helper.rb
index 5927c82abe9..62060200698 100644
--- a/app/helpers/environments_helper.rb
+++ b/app/helpers/environments_helper.rb
@@ -79,7 +79,7 @@ module EnvironmentsHelper
end
def has_managed_prometheus?(project)
- project.prometheus_service&.prometheus_available? == true
+ project.prometheus_integration&.prometheus_available? == true
end
def metrics_dashboard_base_path(environment, project)
diff --git a/app/helpers/gitlab_routing_helper.rb b/app/helpers/gitlab_routing_helper.rb
index 0a684d92eb1..0f835e6881e 100644
--- a/app/helpers/gitlab_routing_helper.rb
+++ b/app/helpers/gitlab_routing_helper.rb
@@ -7,381 +7,18 @@ module GitlabRoutingHelper
include ::ProjectsHelper
include ::ApplicationSettingsHelper
include API::Helpers::RelatedResourcesHelpers
+ include ::Routing::ProjectsHelper
+ include ::Routing::Projects::MembersHelper
+ include ::Routing::Groups::MembersHelper
+ include ::Routing::MembersHelper
+ include ::Routing::ArtifactsHelper
+ include ::Routing::PipelineSchedulesHelper
+ include ::Routing::SnippetsHelper
+ include ::Routing::WikiHelper
+ include ::Routing::GraphqlHelper
included do
Gitlab::Routing.includes_helpers(self)
end
-
- # Project
- def project_tree_path(project, ref = nil, *args)
- namespace_project_tree_path(project.namespace, project, ref || @ref || project.repository.root_ref, *args) # rubocop:disable Cop/ProjectPathHelper
- end
-
- def project_commits_path(project, ref = nil, *args)
- namespace_project_commits_path(project.namespace, project, ref || @ref || project.repository.root_ref, *args) # rubocop:disable Cop/ProjectPathHelper
- end
-
- def project_ref_path(project, ref_name, *args)
- project_commits_path(project, ref_name, *args)
- end
-
- def environment_path(environment, *args)
- project_environment_path(environment.project, environment, *args)
- end
-
- def environment_metrics_path(environment, *args)
- metrics_project_environment_path(environment.project, environment, *args)
- end
-
- def environment_delete_path(environment, *args)
- expose_path(api_v4_projects_environments_path(id: environment.project.id, environment_id: environment.id))
- end
-
- def issue_path(entity, *args)
- project_issue_path(entity.project, entity, *args)
- end
-
- def merge_request_path(entity, *args)
- project_merge_request_path(entity.project, entity, *args)
- end
-
- def pipeline_path(pipeline, *args)
- project_pipeline_path(pipeline.project, pipeline.id, *args)
- end
-
- def issue_url(entity, *args)
- project_issue_url(entity.project, entity, *args)
- end
-
- def merge_request_url(entity, *args)
- project_merge_request_url(entity.project, entity, *args)
- end
-
- def pipeline_url(pipeline, *args)
- project_pipeline_url(pipeline.project, pipeline.id, *args)
- end
-
- def pipeline_job_url(pipeline, build, *args)
- project_job_url(pipeline.project, build.id, *args)
- end
-
- def commits_url(entity, *args)
- project_commits_url(entity.project, entity.source_ref, *args)
- end
-
- def commit_url(entity, *args)
- project_commit_url(entity.project, entity.sha, *args)
- end
-
- def release_url(entity, *args)
- project_release_url(entity.project, entity, *args)
- end
-
- def preview_markdown_path(parent, *args)
- return group_preview_markdown_path(parent, *args) if parent.is_a?(Group)
-
- if @snippet.is_a?(PersonalSnippet)
- preview_markdown_snippets_path
- else
- preview_markdown_project_path(parent, *args)
- end
- end
-
- def edit_milestone_path(entity, *args)
- if entity.resource_parent.is_a?(Group)
- edit_group_milestone_path(entity.resource_parent, entity, *args)
- else
- edit_project_milestone_path(entity.resource_parent, entity, *args)
- end
- end
-
- def toggle_subscription_path(entity, *args)
- if entity.is_a?(Issue)
- toggle_subscription_project_issue_path(entity.project, entity)
- else
- toggle_subscription_project_merge_request_path(entity.project, entity)
- end
- end
-
- def toggle_award_emoji_personal_snippet_path(*args)
- toggle_award_emoji_snippet_path(*args)
- end
-
- def toggle_award_emoji_project_project_snippet_path(*args)
- toggle_award_emoji_project_snippet_path(*args)
- end
-
- def toggle_award_emoji_project_project_snippet_url(*args)
- toggle_award_emoji_project_snippet_url(*args)
- end
-
- ## Members
- def project_members_url(project, *args)
- project_project_members_url(project, *args)
- end
-
- def project_member_path(project_member, *args)
- project_project_member_path(project_member.source, project_member)
- end
-
- def request_access_project_members_path(project, *args)
- request_access_project_project_members_path(project)
- end
-
- def leave_project_members_path(project, *args)
- leave_project_project_members_path(project)
- end
-
- def approve_access_request_project_member_path(project_member, *args)
- approve_access_request_project_project_member_path(project_member.source, project_member)
- end
-
- def resend_invite_project_member_path(project_member, *args)
- resend_invite_project_project_member_path(project_member.source, project_member)
- end
-
- # Groups
-
- ## Members
- def group_members_url(group, *args)
- group_group_members_url(group, *args)
- end
-
- def group_member_path(group_member, *args)
- group_group_member_path(group_member.source, group_member)
- end
-
- def request_access_group_members_path(group, *args)
- request_access_group_group_members_path(group)
- end
-
- def leave_group_members_path(group, *args)
- leave_group_group_members_path(group)
- end
-
- def approve_access_request_group_member_path(group_member, *args)
- approve_access_request_group_group_member_path(group_member.source, group_member)
- end
-
- def resend_invite_group_member_path(group_member, *args)
- resend_invite_group_group_member_path(group_member.source, group_member)
- end
-
- # Members
- def source_members_url(member)
- case member.source_type
- when 'Namespace'
- group_group_members_url(member.source)
- when 'Project'
- project_project_members_url(member.source)
- end
- end
-
- # Artifacts
-
- # Rails path generators are slow because they need to do large regex comparisons
- # against the arguments. We can speed this up 10x by generating the strings directly.
-
- # /*namespace_id/:project_id/-/jobs/:job_id/artifacts/download(.:format)
- def fast_download_project_job_artifacts_path(project, job, params = {})
- expose_fast_artifacts_path(project, job, :download, params)
- end
-
- # /*namespace_id/:project_id/-/jobs/:job_id/artifacts/keep(.:format)
- def fast_keep_project_job_artifacts_path(project, job)
- expose_fast_artifacts_path(project, job, :keep)
- end
-
- # /*namespace_id/:project_id/-/jobs/:job_id/artifacts/browse(/*path)
- def fast_browse_project_job_artifacts_path(project, job)
- expose_fast_artifacts_path(project, job, :browse)
- end
-
- def expose_fast_artifacts_path(project, job, action, params = {})
- path = "#{project.full_path}/-/jobs/#{job.id}/artifacts/#{action}"
-
- unless params.empty?
- path += "?#{params.to_query}"
- end
-
- Gitlab::Utils.append_path(Gitlab.config.gitlab.relative_url_root, path)
- end
-
- def artifacts_action_path(path, project, build)
- action, path_params = path.split('/', 2)
- args = [project, build, path_params]
-
- case action
- when 'download'
- download_project_job_artifacts_path(*args)
- when 'browse'
- browse_project_job_artifacts_path(*args)
- when 'file'
- file_project_job_artifacts_path(*args)
- when 'raw'
- raw_project_job_artifacts_path(*args)
- end
- end
-
- # Pipeline Schedules
- def pipeline_schedules_path(project, *args)
- project_pipeline_schedules_path(project, *args)
- end
-
- def pipeline_schedule_path(schedule, *args)
- project = schedule.project
- project_pipeline_schedule_path(project, schedule, *args)
- end
-
- def edit_pipeline_schedule_path(schedule)
- project = schedule.project
- edit_project_pipeline_schedule_path(project, schedule)
- end
-
- def play_pipeline_schedule_path(schedule, *args)
- project = schedule.project
- play_project_pipeline_schedule_path(project, schedule, *args)
- end
-
- def take_ownership_pipeline_schedule_path(schedule, *args)
- project = schedule.project
- take_ownership_project_pipeline_schedule_path(project, schedule, *args)
- end
-
- def gitlab_snippet_path(snippet, *args)
- if snippet.is_a?(ProjectSnippet)
- project_snippet_path(snippet.project, snippet, *args)
- else
- new_args = snippet_query_params(snippet, *args)
- snippet_path(snippet, *new_args)
- end
- end
-
- def gitlab_snippet_url(snippet, *args)
- if snippet.is_a?(ProjectSnippet)
- project_snippet_url(snippet.project, snippet, *args)
- else
- new_args = snippet_query_params(snippet, *args)
- snippet_url(snippet, *new_args)
- end
- end
-
- def gitlab_dashboard_snippets_path(snippet, *args)
- if snippet.is_a?(ProjectSnippet)
- project_snippets_path(snippet.project, *args)
- else
- dashboard_snippets_path
- end
- end
-
- def gitlab_raw_snippet_path(snippet, *args)
- if snippet.is_a?(ProjectSnippet)
- raw_project_snippet_path(snippet.project, snippet, *args)
- else
- new_args = snippet_query_params(snippet, *args)
- raw_snippet_path(snippet, *new_args)
- end
- end
-
- def gitlab_raw_snippet_url(snippet, *args)
- if snippet.is_a?(ProjectSnippet)
- raw_project_snippet_url(snippet.project, snippet, *args)
- else
- new_args = snippet_query_params(snippet, *args)
- raw_snippet_url(snippet, *new_args)
- end
- end
-
- def gitlab_raw_snippet_blob_url(snippet, path, ref = nil, **options)
- params = {
- snippet_id: snippet,
- ref: ref || snippet.repository.root_ref,
- path: path
- }
-
- if snippet.is_a?(ProjectSnippet)
- project_snippet_blob_raw_url(snippet.project, **params, **options)
- else
- snippet_blob_raw_url(**params, **options)
- end
- end
-
- def gitlab_raw_snippet_blob_path(snippet, path, ref = nil, **options)
- gitlab_raw_snippet_blob_url(snippet, path, ref, only_path: true, **options)
- end
-
- def gitlab_snippet_notes_path(snippet, *args)
- new_args = snippet_query_params(snippet, *args)
- snippet_notes_path(snippet, *new_args)
- end
-
- def gitlab_snippet_notes_url(snippet, *args)
- new_args = snippet_query_params(snippet, *args)
- snippet_notes_url(snippet, *new_args)
- end
-
- def gitlab_snippet_note_path(snippet, note, *args)
- new_args = snippet_query_params(snippet, *args)
- snippet_note_path(snippet, note, *new_args)
- end
-
- def gitlab_snippet_note_url(snippet, note, *args)
- new_args = snippet_query_params(snippet, *args)
- snippet_note_url(snippet, note, *new_args)
- end
-
- def gitlab_toggle_award_emoji_snippet_note_path(snippet, note, *args)
- new_args = snippet_query_params(snippet, *args)
- toggle_award_emoji_snippet_note_path(snippet, note, *new_args)
- end
-
- def gitlab_toggle_award_emoji_snippet_note_url(snippet, note, *args)
- new_args = snippet_query_params(snippet, *args)
- toggle_award_emoji_snippet_note_url(snippet, note, *new_args)
- end
-
- def gitlab_toggle_award_emoji_snippet_path(snippet, *args)
- new_args = snippet_query_params(snippet, *args)
- toggle_award_emoji_snippet_path(snippet, *new_args)
- end
-
- def gitlab_toggle_award_emoji_snippet_url(snippet, *args)
- new_args = snippet_query_params(snippet, *args)
- toggle_award_emoji_snippet_url(snippet, *new_args)
- end
-
- # Wikis
-
- def wiki_path(wiki, **options)
- Gitlab::UrlBuilder.wiki_url(wiki, only_path: true, **options)
- end
-
- def wiki_page_path(wiki, page, **options)
- Gitlab::UrlBuilder.wiki_page_url(wiki, page, only_path: true, **options)
- end
-
- # GraphQL ETag routes
- def graphql_etag_pipeline_path(pipeline)
- [api_graphql_path, "pipelines/id/#{pipeline.id}"].join(':')
- end
-
- def graphql_etag_pipeline_sha_path(sha)
- [api_graphql_path, "pipelines/sha/#{sha}"].join(':')
- end
-
- private
-
- def snippet_query_params(snippet, *args)
- opts = case args.last
- when Hash
- args.pop
- when ActionController::Parameters
- args.pop.to_h
- else
- {}
- end
-
- args << opts
- end
end
GitlabRoutingHelper.include_mod_with('GitlabRoutingHelper')
diff --git a/app/helpers/operations_helper.rb b/app/helpers/operations_helper.rb
index 553bd0d2ebf..c9300ef0018 100644
--- a/app/helpers/operations_helper.rb
+++ b/app/helpers/operations_helper.rb
@@ -3,8 +3,8 @@
module OperationsHelper
include Gitlab::Utils::StrongMemoize
- def prometheus_service
- strong_memoize(:prometheus_service) do
+ def prometheus_integration
+ strong_memoize(:prometheus_integration) do
@project.find_or_initialize_service(::Integrations::Prometheus.to_param)
end
end
@@ -14,11 +14,11 @@ module OperationsHelper
templates = setting.available_issue_templates.map { |t| { key: t.key, name: t.name } }
{
- 'prometheus_activated' => prometheus_service.manual_configuration?.to_s,
- 'prometheus_form_path' => scoped_integration_path(prometheus_service),
+ 'prometheus_activated' => prometheus_integration.manual_configuration?.to_s,
+ 'prometheus_form_path' => scoped_integration_path(prometheus_integration),
'prometheus_reset_key_path' => reset_alerting_token_project_settings_operations_path(@project),
'prometheus_authorization_key' => @project.alerting_setting&.token,
- 'prometheus_api_url' => prometheus_service.api_url,
+ 'prometheus_api_url' => prometheus_integration.api_url,
'prometheus_url' => notify_project_prometheus_alerts_url(@project, format: :json),
'alerts_setup_url' => help_page_path('operations/incident_management/integrations.md', anchor: 'configuration'),
'alerts_usage_url' => project_alert_management_index_path(@project),
diff --git a/app/helpers/projects/alert_management_helper.rb b/app/helpers/projects/alert_management_helper.rb
index b46e3eb3bc3..b50e287a509 100644
--- a/app/helpers/projects/alert_management_helper.rb
+++ b/app/helpers/projects/alert_management_helper.rb
@@ -29,13 +29,13 @@ module Projects::AlertManagementHelper
private
def has_managed_prometheus?(project)
- project.prometheus_service&.prometheus_available? == true
+ project.prometheus_integration&.prometheus_available? == true
end
def alert_management_enabled?(project)
!!(
project.alert_management_alerts.any? ||
- project.prometheus_service_active? ||
+ project.prometheus_integration_active? ||
AlertManagement::HttpIntegrationsFinder.new(project, active: true).execute.any?
)
end
diff --git a/app/helpers/registrations_helper.rb b/app/helpers/registrations_helper.rb
index 24131e32c6c..91adc36749b 100644
--- a/app/helpers/registrations_helper.rb
+++ b/app/helpers/registrations_helper.rb
@@ -1,13 +1,6 @@
# frozen_string_literal: true
module RegistrationsHelper
- def social_signin_enabled?
- ::Gitlab.dev_env_or_com? &&
- omniauth_enabled? &&
- devise_mapping.omniauthable? &&
- button_based_providers_enabled?
- end
-
def signup_username_data_attributes
{
min_length: User::MIN_USERNAME_LENGTH,
diff --git a/app/helpers/routing/artifacts_helper.rb b/app/helpers/routing/artifacts_helper.rb
new file mode 100644
index 00000000000..32df9098e48
--- /dev/null
+++ b/app/helpers/routing/artifacts_helper.rb
@@ -0,0 +1,49 @@
+# frozen_string_literal: true
+
+module Routing
+ module ArtifactsHelper
+ # Rails path generators are slow because they need to do large regex comparisons
+ # against the arguments. We can speed this up 10x by generating the strings directly.
+
+ # /*namespace_id/:project_id/-/jobs/:job_id/artifacts/download(.:format)
+ def fast_download_project_job_artifacts_path(project, job, params = {})
+ expose_fast_artifacts_path(project, job, :download, params)
+ end
+
+ # /*namespace_id/:project_id/-/jobs/:job_id/artifacts/keep(.:format)
+ def fast_keep_project_job_artifacts_path(project, job)
+ expose_fast_artifacts_path(project, job, :keep)
+ end
+
+ # /*namespace_id/:project_id/-/jobs/:job_id/artifacts/browse(/*path)
+ def fast_browse_project_job_artifacts_path(project, job)
+ expose_fast_artifacts_path(project, job, :browse)
+ end
+
+ def expose_fast_artifacts_path(project, job, action, params = {})
+ path = "#{project.full_path}/-/jobs/#{job.id}/artifacts/#{action}"
+
+ unless params.empty?
+ path += "?#{params.to_query}"
+ end
+
+ Gitlab::Utils.append_path(Gitlab.config.gitlab.relative_url_root, path)
+ end
+
+ def artifacts_action_path(path, project, build)
+ action, path_params = path.split('/', 2)
+ args = [project, build, path_params]
+
+ case action
+ when 'download'
+ download_project_job_artifacts_path(*args)
+ when 'browse'
+ browse_project_job_artifacts_path(*args)
+ when 'file'
+ file_project_job_artifacts_path(*args)
+ when 'raw'
+ raw_project_job_artifacts_path(*args)
+ end
+ end
+ end
+end
diff --git a/app/helpers/routing/graphql_helper.rb b/app/helpers/routing/graphql_helper.rb
new file mode 100644
index 00000000000..beefbb9b387
--- /dev/null
+++ b/app/helpers/routing/graphql_helper.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module Routing
+ module GraphqlHelper
+ def graphql_etag_pipeline_path(pipeline)
+ [api_graphql_path, "pipelines/id/#{pipeline.id}"].join(':')
+ end
+
+ def graphql_etag_pipeline_sha_path(sha)
+ [api_graphql_path, "pipelines/sha/#{sha}"].join(':')
+ end
+ end
+end
diff --git a/app/helpers/routing/groups/members_helper.rb b/app/helpers/routing/groups/members_helper.rb
new file mode 100644
index 00000000000..eabeacff1d7
--- /dev/null
+++ b/app/helpers/routing/groups/members_helper.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module Routing
+ module Groups
+ module MembersHelper
+ def group_members_url(group, *args)
+ group_group_members_url(group, *args)
+ end
+
+ def group_member_path(group_member, *args)
+ group_group_member_path(group_member.source, group_member)
+ end
+
+ def request_access_group_members_path(group, *args)
+ request_access_group_group_members_path(group)
+ end
+
+ def leave_group_members_path(group, *args)
+ leave_group_group_members_path(group)
+ end
+
+ def approve_access_request_group_member_path(group_member, *args)
+ approve_access_request_group_group_member_path(group_member.source, group_member)
+ end
+
+ def resend_invite_group_member_path(group_member, *args)
+ resend_invite_group_group_member_path(group_member.source, group_member)
+ end
+ end
+ end
+end
diff --git a/app/helpers/routing/members_helper.rb b/app/helpers/routing/members_helper.rb
new file mode 100644
index 00000000000..18f6d06ab3b
--- /dev/null
+++ b/app/helpers/routing/members_helper.rb
@@ -0,0 +1,14 @@
+# frozen_string_literal: true
+
+module Routing
+ module MembersHelper
+ def source_members_url(member)
+ case member.source_type
+ when 'Namespace'
+ group_group_members_url(member.source)
+ when 'Project'
+ project_project_members_url(member.source)
+ end
+ end
+ end
+end
diff --git a/app/helpers/routing/pipeline_schedules_helper.rb b/app/helpers/routing/pipeline_schedules_helper.rb
new file mode 100644
index 00000000000..6501018a365
--- /dev/null
+++ b/app/helpers/routing/pipeline_schedules_helper.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+module Routing
+ module PipelineSchedulesHelper
+ def pipeline_schedules_path(project, *args)
+ project_pipeline_schedules_path(project, *args)
+ end
+
+ def pipeline_schedule_path(schedule, *args)
+ project = schedule.project
+ project_pipeline_schedule_path(project, schedule, *args)
+ end
+
+ def edit_pipeline_schedule_path(schedule)
+ project = schedule.project
+ edit_project_pipeline_schedule_path(project, schedule)
+ end
+
+ def play_pipeline_schedule_path(schedule, *args)
+ project = schedule.project
+ play_project_pipeline_schedule_path(project, schedule, *args)
+ end
+
+ def take_ownership_pipeline_schedule_path(schedule, *args)
+ project = schedule.project
+ take_ownership_project_pipeline_schedule_path(project, schedule, *args)
+ end
+ end
+end
diff --git a/app/helpers/routing/projects/members_helper.rb b/app/helpers/routing/projects/members_helper.rb
new file mode 100644
index 00000000000..72f88a1408b
--- /dev/null
+++ b/app/helpers/routing/projects/members_helper.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module Routing
+ module Projects
+ module MembersHelper
+ def project_members_url(project, *args)
+ project_project_members_url(project, *args)
+ end
+
+ def project_member_path(project_member, *args)
+ project_project_member_path(project_member.source, project_member)
+ end
+
+ def request_access_project_members_path(project, *args)
+ request_access_project_project_members_path(project)
+ end
+
+ def leave_project_members_path(project, *args)
+ leave_project_project_members_path(project)
+ end
+
+ def approve_access_request_project_member_path(project_member, *args)
+ approve_access_request_project_project_member_path(project_member.source, project_member)
+ end
+
+ def resend_invite_project_member_path(project_member, *args)
+ resend_invite_project_project_member_path(project_member.source, project_member)
+ end
+ end
+ end
+end
diff --git a/app/helpers/routing/projects_helper.rb b/app/helpers/routing/projects_helper.rb
new file mode 100644
index 00000000000..fb000b29739
--- /dev/null
+++ b/app/helpers/routing/projects_helper.rb
@@ -0,0 +1,85 @@
+# frozen_string_literal: true
+
+module Routing
+ module ProjectsHelper
+ def project_tree_path(project, ref = nil, *args)
+ namespace_project_tree_path(project.namespace, project, ref || @ref || project.repository.root_ref, *args) # rubocop:disable Cop/ProjectPathHelper
+ end
+
+ def project_commits_path(project, ref = nil, *args)
+ namespace_project_commits_path(project.namespace, project, ref || @ref || project.repository.root_ref, *args) # rubocop:disable Cop/ProjectPathHelper
+ end
+
+ def project_ref_path(project, ref_name, *args)
+ project_commits_path(project, ref_name, *args)
+ end
+
+ def environment_path(environment, *args)
+ project_environment_path(environment.project, environment, *args)
+ end
+
+ def environment_metrics_path(environment, *args)
+ metrics_project_environment_path(environment.project, environment, *args)
+ end
+
+ def environment_delete_path(environment, *args)
+ expose_path(api_v4_projects_environments_path(id: environment.project.id, environment_id: environment.id))
+ end
+
+ def issue_path(entity, *args)
+ project_issue_path(entity.project, entity, *args)
+ end
+
+ def merge_request_path(entity, *args)
+ project_merge_request_path(entity.project, entity, *args)
+ end
+
+ def pipeline_path(pipeline, *args)
+ project_pipeline_path(pipeline.project, pipeline.id, *args)
+ end
+
+ def issue_url(entity, *args)
+ project_issue_url(entity.project, entity, *args)
+ end
+
+ def merge_request_url(entity, *args)
+ project_merge_request_url(entity.project, entity, *args)
+ end
+
+ def pipeline_url(pipeline, *args)
+ project_pipeline_url(pipeline.project, pipeline.id, *args)
+ end
+
+ def pipeline_job_url(pipeline, build, *args)
+ project_job_url(pipeline.project, build.id, *args)
+ end
+
+ def commits_url(entity, *args)
+ project_commits_url(entity.project, entity.source_ref, *args)
+ end
+
+ def commit_url(entity, *args)
+ project_commit_url(entity.project, entity.sha, *args)
+ end
+
+ def release_url(entity, *args)
+ project_release_url(entity.project, entity, *args)
+ end
+
+ def edit_milestone_path(entity, *args)
+ if entity.resource_parent.is_a?(Group)
+ edit_group_milestone_path(entity.resource_parent, entity, *args)
+ else
+ edit_project_milestone_path(entity.resource_parent, entity, *args)
+ end
+ end
+
+ def toggle_subscription_path(entity, *args)
+ if entity.is_a?(Issue)
+ toggle_subscription_project_issue_path(entity.project, entity)
+ else
+ toggle_subscription_project_merge_request_path(entity.project, entity)
+ end
+ end
+ end
+end
diff --git a/app/helpers/routing/snippets_helper.rb b/app/helpers/routing/snippets_helper.rb
new file mode 100644
index 00000000000..2e81c5adc42
--- /dev/null
+++ b/app/helpers/routing/snippets_helper.rb
@@ -0,0 +1,144 @@
+# frozen_string_literal: true
+
+module Routing
+ module SnippetsHelper
+ def gitlab_snippet_path(snippet, *args)
+ if snippet.is_a?(ProjectSnippet)
+ project_snippet_path(snippet.project, snippet, *args)
+ else
+ new_args = snippet_query_params(snippet, *args)
+ snippet_path(snippet, *new_args)
+ end
+ end
+
+ def gitlab_snippet_url(snippet, *args)
+ if snippet.is_a?(ProjectSnippet)
+ project_snippet_url(snippet.project, snippet, *args)
+ else
+ new_args = snippet_query_params(snippet, *args)
+ snippet_url(snippet, *new_args)
+ end
+ end
+
+ def gitlab_dashboard_snippets_path(snippet, *args)
+ if snippet.is_a?(ProjectSnippet)
+ project_snippets_path(snippet.project, *args)
+ else
+ dashboard_snippets_path
+ end
+ end
+
+ def gitlab_raw_snippet_path(snippet, *args)
+ if snippet.is_a?(ProjectSnippet)
+ raw_project_snippet_path(snippet.project, snippet, *args)
+ else
+ new_args = snippet_query_params(snippet, *args)
+ raw_snippet_path(snippet, *new_args)
+ end
+ end
+
+ def gitlab_raw_snippet_url(snippet, *args)
+ if snippet.is_a?(ProjectSnippet)
+ raw_project_snippet_url(snippet.project, snippet, *args)
+ else
+ new_args = snippet_query_params(snippet, *args)
+ raw_snippet_url(snippet, *new_args)
+ end
+ end
+
+ def gitlab_raw_snippet_blob_url(snippet, path, ref = nil, **options)
+ params = {
+ snippet_id: snippet,
+ ref: ref || snippet.repository.root_ref,
+ path: path
+ }
+
+ if snippet.is_a?(ProjectSnippet)
+ project_snippet_blob_raw_url(snippet.project, **params, **options)
+ else
+ snippet_blob_raw_url(**params, **options)
+ end
+ end
+
+ def gitlab_raw_snippet_blob_path(snippet, path, ref = nil, **options)
+ gitlab_raw_snippet_blob_url(snippet, path, ref, only_path: true, **options)
+ end
+
+ def gitlab_snippet_notes_path(snippet, *args)
+ new_args = snippet_query_params(snippet, *args)
+ snippet_notes_path(snippet, *new_args)
+ end
+
+ def gitlab_snippet_notes_url(snippet, *args)
+ new_args = snippet_query_params(snippet, *args)
+ snippet_notes_url(snippet, *new_args)
+ end
+
+ def gitlab_snippet_note_path(snippet, note, *args)
+ new_args = snippet_query_params(snippet, *args)
+ snippet_note_path(snippet, note, *new_args)
+ end
+
+ def gitlab_snippet_note_url(snippet, note, *args)
+ new_args = snippet_query_params(snippet, *args)
+ snippet_note_url(snippet, note, *new_args)
+ end
+
+ def gitlab_toggle_award_emoji_snippet_note_path(snippet, note, *args)
+ new_args = snippet_query_params(snippet, *args)
+ toggle_award_emoji_snippet_note_path(snippet, note, *new_args)
+ end
+
+ def gitlab_toggle_award_emoji_snippet_note_url(snippet, note, *args)
+ new_args = snippet_query_params(snippet, *args)
+ toggle_award_emoji_snippet_note_url(snippet, note, *new_args)
+ end
+
+ def gitlab_toggle_award_emoji_snippet_path(snippet, *args)
+ new_args = snippet_query_params(snippet, *args)
+ toggle_award_emoji_snippet_path(snippet, *new_args)
+ end
+
+ def gitlab_toggle_award_emoji_snippet_url(snippet, *args)
+ new_args = snippet_query_params(snippet, *args)
+ toggle_award_emoji_snippet_url(snippet, *new_args)
+ end
+
+ def preview_markdown_path(parent, *args)
+ return group_preview_markdown_path(parent, *args) if parent.is_a?(Group)
+
+ if @snippet.is_a?(PersonalSnippet)
+ preview_markdown_snippets_path
+ else
+ preview_markdown_project_path(parent, *args)
+ end
+ end
+
+ def toggle_award_emoji_personal_snippet_path(*args)
+ toggle_award_emoji_snippet_path(*args)
+ end
+
+ def toggle_award_emoji_project_project_snippet_path(*args)
+ toggle_award_emoji_project_snippet_path(*args)
+ end
+
+ def toggle_award_emoji_project_project_snippet_url(*args)
+ toggle_award_emoji_project_snippet_url(*args)
+ end
+
+ private
+
+ def snippet_query_params(snippet, *args)
+ opts = case args.last
+ when Hash
+ args.pop
+ when ActionController::Parameters
+ args.pop.to_h
+ else
+ {}
+ end
+
+ args << opts
+ end
+ end
+end
diff --git a/app/helpers/routing/wiki_helper.rb b/app/helpers/routing/wiki_helper.rb
new file mode 100644
index 00000000000..95f9e87de36
--- /dev/null
+++ b/app/helpers/routing/wiki_helper.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+module Routing
+ module WikiHelper
+ def wiki_path(wiki, **options)
+ Gitlab::UrlBuilder.wiki_url(wiki, only_path: true, **options)
+ end
+
+ def wiki_page_path(wiki, page, **options)
+ Gitlab::UrlBuilder.wiki_page_url(wiki, page, only_path: true, **options)
+ end
+ end
+end
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 6a63a8d46ba..a185448d5ea 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -54,6 +54,14 @@ class Ability
end
end
+ def feature_flags_readable_by_user(feature_flags, user = nil, filters: {})
+ feature_flags = apply_filters_if_needed(feature_flags, user, filters)
+
+ DeclarativePolicy.user_scope do
+ feature_flags.select { |flag| allowed?(user, :read_feature_flag, flag) }
+ end
+ end
+
def allowed?(user, ability, subject = :global, opts = {})
if subject.is_a?(Hash)
opts = subject
diff --git a/app/models/clusters/integrations/prometheus.rb b/app/models/clusters/integrations/prometheus.rb
index be7ec72f785..3f2c47d48e6 100644
--- a/app/models/clusters/integrations/prometheus.rb
+++ b/app/models/clusters/integrations/prometheus.rb
@@ -23,7 +23,7 @@ module Clusters
after_destroy do
run_after_commit do
- deactivate_project_services
+ deactivate_project_integrations
end
end
@@ -32,9 +32,9 @@ module Clusters
run_after_commit do
if enabled
- activate_project_services
+ activate_project_integrations
else
- deactivate_project_services
+ deactivate_project_integrations
end
end
end
@@ -45,12 +45,12 @@ module Clusters
private
- def activate_project_services
+ def activate_project_integrations
::Clusters::Applications::ActivateServiceWorker
.perform_async(cluster_id, ::Integrations::Prometheus.to_param)
end
- def deactivate_project_services
+ def deactivate_project_integrations
::Clusters::Applications::DeactivateServiceWorker
.perform_async(cluster_id, ::Integrations::Prometheus.to_param)
end
diff --git a/app/models/integration.rb b/app/models/integration.rb
index 363131dc03a..4b0aa3ad247 100644
--- a/app/models/integration.rb
+++ b/app/models/integration.rb
@@ -49,7 +49,7 @@ class Integration < ApplicationRecord
hangouts_chat
irker
jenkins jira
- packagist pipelines_email pivotaltracker pushover
+ packagist pipelines_email pivotaltracker prometheus pushover
mattermost mattermost_slash_commands microsoft_teams mock_ci mock_monitoring
redmine
slack slack_slash_commands
diff --git a/app/models/project.rb b/app/models/project.rb
index ea88eda0959..5a1210a9aa2 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -182,7 +182,7 @@ class Project < ApplicationRecord
has_one :packagist_integration, class_name: 'Integrations::Packagist'
has_one :pipelines_email_integration, class_name: 'Integrations::PipelinesEmail'
has_one :pivotaltracker_integration, class_name: 'Integrations::Pivotaltracker'
- has_one :prometheus_service, class_name: 'Integrations::Prometheus', inverse_of: :project
+ has_one :prometheus_integration, class_name: 'Integrations::Prometheus', inverse_of: :project
has_one :pushover_integration, class_name: 'Integrations::Pushover'
has_one :redmine_integration, class_name: 'Integrations::Redmine'
has_one :slack_integration, class_name: 'Integrations::Slack'
@@ -400,7 +400,7 @@ class Project < ApplicationRecord
accepts_nested_attributes_for :error_tracking_setting, update_only: true
accepts_nested_attributes_for :metrics_setting, update_only: true, allow_destroy: true
accepts_nested_attributes_for :grafana_integration, update_only: true, allow_destroy: true
- accepts_nested_attributes_for :prometheus_service, update_only: true
+ accepts_nested_attributes_for :prometheus_integration, update_only: true
accepts_nested_attributes_for :alerting_setting, update_only: true
delegate :feature_available?, :builds_enabled?, :wiki_enabled?,
@@ -439,7 +439,7 @@ class Project < ApplicationRecord
delegate :allow_merge_on_skipped_pipeline, :allow_merge_on_skipped_pipeline?,
:allow_merge_on_skipped_pipeline=, :has_confluence?, :allow_editing_commit_messages?,
to: :project_setting
- delegate :active?, to: :prometheus_service, allow_nil: true, prefix: true
+ delegate :active?, to: :prometheus_integration, allow_nil: true, prefix: true
delegate :log_jira_dvcs_integration_usage, :jira_dvcs_server_last_sync_at, :jira_dvcs_cloud_last_sync_at, to: :feature_usage
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index e2bde27da63..862be606bf6 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -111,7 +111,7 @@ module Projects
if Feature.enabled?(:projects_post_creation_worker, current_user, default_enabled: :yaml)
Projects::PostCreationWorker.perform_async(@project.id)
else
- create_prometheus_service
+ create_prometheus_integration
end
create_readme if @initialize_with_readme
@@ -192,7 +192,7 @@ module Projects
end
# Deprecated: https://gitlab.com/gitlab-org/gitlab/-/issues/326665
- def create_prometheus_service
+ def create_prometheus_integration
service = @project.find_or_initialize_service(::Integrations::Prometheus.to_param)
# If the service has already been inserted in the database, that
@@ -202,12 +202,12 @@ module Projects
if service.prometheus_available?
service.save!
else
- @project.prometheus_service = nil
+ @project.prometheus_integration = nil
end
rescue ActiveRecord::RecordInvalid => e
Gitlab::ErrorTracking.track_exception(e, extra: { project_id: project.id })
- @project.prometheus_service = nil
+ @project.prometheus_integration = nil
end
def set_project_name_from_path
diff --git a/app/services/projects/operations/update_service.rb b/app/services/projects/operations/update_service.rb
index 4fb2cede7ce..a37504588d8 100644
--- a/app/services/projects/operations/update_service.rb
+++ b/app/services/projects/operations/update_service.rb
@@ -105,7 +105,7 @@ module Projects
service = project.find_or_initialize_service(::Integrations::Prometheus.to_param)
service.assign_attributes(attrs)
- { prometheus_service_attributes: service.attributes.except(*%w(id project_id created_at updated_at)) }
+ { prometheus_integration_attributes: service.attributes.except(*%w(id project_id created_at updated_at)) }
end
def incident_management_setting_params
diff --git a/app/views/projects/settings/operations/show.html.haml b/app/views/projects/settings/operations/show.html.haml
index e2c1a00a587..e0f6b3b5625 100644
--- a/app/views/projects/settings/operations/show.html.haml
+++ b/app/views/projects/settings/operations/show.html.haml
@@ -10,4 +10,4 @@
= render 'projects/settings/operations/incidents'
= render 'projects/settings/operations/grafana_integration'
= render_if_exists 'projects/settings/operations/status_page'
-= render 'projects/settings/operations/prometheus', service: prometheus_service if Feature.enabled?(:settings_operations_prometheus_service)
+= render 'projects/settings/operations/prometheus', service: prometheus_integration if Feature.enabled?(:settings_operations_prometheus_service)
diff --git a/app/views/registrations/invites/new.html.haml b/app/views/registrations/invites/new.html.haml
deleted file mode 100644
index 0feae9b17e9..00000000000
--- a/app/views/registrations/invites/new.html.haml
+++ /dev/null
@@ -1,17 +0,0 @@
-- page_title _('Join your team')
-- add_page_specific_style 'page_bundles/signup'
-- content_for :page_specific_javascripts do
- = render "layouts/google_tag_manager_head"
-= render "layouts/google_tag_manager_body"
-
-%h2.center.pt-6.pb-3.gl-mb-0
- = _('Join your team')
-%p.gl-text-center= _('Create your own profile to collaborate with your teammates in issues, merge requests, and more.')
-
-.signup-page
- = render 'devise/shared/signup_box',
- url: users_sign_up_invites_path,
- button_text: _('Continue'),
- show_omniauth_providers: social_signin_enabled?,
- omniauth_providers_placement: :top
- = render 'devise/shared/sign_in_link'
diff --git a/app/workers/clusters/applications/deactivate_service_worker.rb b/app/workers/clusters/applications/deactivate_service_worker.rb
index 935b455a4fc..f385fa6c6ac 100644
--- a/app/workers/clusters/applications/deactivate_service_worker.rb
+++ b/app/workers/clusters/applications/deactivate_service_worker.rb
@@ -10,18 +10,18 @@ module Clusters
loggable_arguments 1
- def perform(cluster_id, service_name)
+ def perform(cluster_id, integration_name)
cluster = Clusters::Cluster.find_by_id(cluster_id)
- raise cluster_missing_error(service_name) unless cluster
+ raise cluster_missing_error(integration_name) unless cluster
- service = "#{service_name}_service".to_sym
- cluster.all_projects.with_service(service).find_each do |project|
- project.public_send(service).update!(active: false) # rubocop:disable GitlabSecurity/PublicSend
+ integration = ::Project.integration_association_name(integration_name).to_sym
+ cluster.all_projects.with_service(integration).find_each do |project|
+ project.public_send(integration).update!(active: false) # rubocop:disable GitlabSecurity/PublicSend
end
end
- def cluster_missing_error(service)
- ActiveRecord::RecordNotFound.new("Can't deactivate #{service} services, host cluster not found! Some inconsistent records may be left in database.")
+ def cluster_missing_error(integration_name)
+ ActiveRecord::RecordNotFound.new("Can't deactivate #{integration_name} integrations, host cluster not found! Some inconsistent records may be left in database.")
end
end
end
diff --git a/app/workers/projects/post_creation_worker.rb b/app/workers/projects/post_creation_worker.rb
index 9065bb90e82..ba2468bc077 100644
--- a/app/workers/projects/post_creation_worker.rb
+++ b/app/workers/projects/post_creation_worker.rb
@@ -15,12 +15,12 @@ module Projects
return unless project
- create_prometheus_service(project)
+ create_prometheus_integration(project)
end
private
- def create_prometheus_service(project)
+ def create_prometheus_integration(project)
service = project.find_or_initialize_service(::Integrations::Prometheus.to_param)
# If the service has already been inserted in the database, that
diff --git a/config/feature_flags/development/diffs_gradual_load.yml b/config/feature_flags/development/diffs_gradual_load.yml
deleted file mode 100644
index 05246639069..00000000000
--- a/config/feature_flags/development/diffs_gradual_load.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: diffs_gradual_load
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/48253/
-rollout_issue_url:
-milestone: '13.7'
-type: development
-group: group::code review
-default_enabled: true
diff --git a/config/feature_flags/experiment/invite_signup_page_interaction.yml b/config/feature_flags/experiment/invite_signup_page_interaction.yml
deleted file mode 100644
index 660a503fb3a..00000000000
--- a/config/feature_flags/experiment/invite_signup_page_interaction.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-name: invite_signup_page_interaction
-introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/60939
-rollout_issue_url: https://gitlab.com/gitlab-org/growth/team-tasks/-/issues/379
-milestone: '13.12'
-type: experiment
-group: group::expansion
-default_enabled: false
diff --git a/config/routes.rb b/config/routes.rb
index f18085dbb54..e0744eb809f 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -64,7 +64,6 @@ Rails.application.routes.draw do
end
resource :experience_level, only: [:show, :update]
- resources :invites, only: [:new, :create]
Gitlab.ee do
resources :groups, only: [:new, :create]
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index b1ff11a4307..b0d2f6a28bd 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -7320,7 +7320,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
| <a id="boardepicancestorsenddate"></a>`endDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.end. |
| <a id="boardepicancestorsiid"></a>`iid` | [`ID`](#id) | IID of the epic, e.g., "1". |
| <a id="boardepicancestorsiidstartswith"></a>`iidStartsWith` | [`String`](#string) | Filter epics by IID for autocomplete. |
-| <a id="boardepicancestorsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., [1, 2]. |
+| <a id="boardepicancestorsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., `[1, 2]`. |
| <a id="boardepicancestorsincludeancestorgroups"></a>`includeAncestorGroups` | [`Boolean`](#boolean) | Include epics from ancestor groups. |
| <a id="boardepicancestorsincludedescendantgroups"></a>`includeDescendantGroups` | [`Boolean`](#boolean) | Include epics from descendant groups. |
| <a id="boardepicancestorslabelname"></a>`labelName` | [`[String!]`](#string) | Filter epics by labels. |
@@ -7352,7 +7352,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
| <a id="boardepicchildrenenddate"></a>`endDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.end. |
| <a id="boardepicchildreniid"></a>`iid` | [`ID`](#id) | IID of the epic, e.g., "1". |
| <a id="boardepicchildreniidstartswith"></a>`iidStartsWith` | [`String`](#string) | Filter epics by IID for autocomplete. |
-| <a id="boardepicchildreniids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., [1, 2]. |
+| <a id="boardepicchildreniids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., `[1, 2]`. |
| <a id="boardepicchildrenincludeancestorgroups"></a>`includeAncestorGroups` | [`Boolean`](#boolean) | Include epics from ancestor groups. |
| <a id="boardepicchildrenincludedescendantgroups"></a>`includeDescendantGroups` | [`Boolean`](#boolean) | Include epics from descendant groups. |
| <a id="boardepicchildrenlabelname"></a>`labelName` | [`[String!]`](#string) | Filter epics by labels. |
@@ -8533,7 +8533,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
| <a id="epicancestorsenddate"></a>`endDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.end. |
| <a id="epicancestorsiid"></a>`iid` | [`ID`](#id) | IID of the epic, e.g., "1". |
| <a id="epicancestorsiidstartswith"></a>`iidStartsWith` | [`String`](#string) | Filter epics by IID for autocomplete. |
-| <a id="epicancestorsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., [1, 2]. |
+| <a id="epicancestorsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., `[1, 2]`. |
| <a id="epicancestorsincludeancestorgroups"></a>`includeAncestorGroups` | [`Boolean`](#boolean) | Include epics from ancestor groups. |
| <a id="epicancestorsincludedescendantgroups"></a>`includeDescendantGroups` | [`Boolean`](#boolean) | Include epics from descendant groups. |
| <a id="epicancestorslabelname"></a>`labelName` | [`[String!]`](#string) | Filter epics by labels. |
@@ -8565,7 +8565,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
| <a id="epicchildrenenddate"></a>`endDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.end. |
| <a id="epicchildreniid"></a>`iid` | [`ID`](#id) | IID of the epic, e.g., "1". |
| <a id="epicchildreniidstartswith"></a>`iidStartsWith` | [`String`](#string) | Filter epics by IID for autocomplete. |
-| <a id="epicchildreniids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., [1, 2]. |
+| <a id="epicchildreniids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., `[1, 2]`. |
| <a id="epicchildrenincludeancestorgroups"></a>`includeAncestorGroups` | [`Boolean`](#boolean) | Include epics from ancestor groups. |
| <a id="epicchildrenincludedescendantgroups"></a>`includeDescendantGroups` | [`Boolean`](#boolean) | Include epics from descendant groups. |
| <a id="epicchildrenlabelname"></a>`labelName` | [`[String!]`](#string) | Filter epics by labels. |
@@ -9168,7 +9168,7 @@ Returns [`Epic`](#epic).
| <a id="groupepicenddate"></a>`endDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.end. |
| <a id="groupepiciid"></a>`iid` | [`ID`](#id) | IID of the epic, e.g., "1". |
| <a id="groupepiciidstartswith"></a>`iidStartsWith` | [`String`](#string) | Filter epics by IID for autocomplete. |
-| <a id="groupepiciids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., [1, 2]. |
+| <a id="groupepiciids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., `[1, 2]`. |
| <a id="groupepicincludeancestorgroups"></a>`includeAncestorGroups` | [`Boolean`](#boolean) | Include epics from ancestor groups. |
| <a id="groupepicincludedescendantgroups"></a>`includeDescendantGroups` | [`Boolean`](#boolean) | Include epics from descendant groups. |
| <a id="groupepiclabelname"></a>`labelName` | [`[String!]`](#string) | Filter epics by labels. |
@@ -9212,7 +9212,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
| <a id="groupepicsenddate"></a>`endDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.end. |
| <a id="groupepicsiid"></a>`iid` | [`ID`](#id) | IID of the epic, e.g., "1". |
| <a id="groupepicsiidstartswith"></a>`iidStartsWith` | [`String`](#string) | Filter epics by IID for autocomplete. |
-| <a id="groupepicsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., [1, 2]. |
+| <a id="groupepicsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., `[1, 2]`. |
| <a id="groupepicsincludeancestorgroups"></a>`includeAncestorGroups` | [`Boolean`](#boolean) | Include epics from ancestor groups. |
| <a id="groupepicsincludedescendantgroups"></a>`includeDescendantGroups` | [`Boolean`](#boolean) | Include epics from descendant groups. |
| <a id="groupepicslabelname"></a>`labelName` | [`[String!]`](#string) | Filter epics by labels. |
@@ -9266,7 +9266,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
| <a id="groupissuescreatedbefore"></a>`createdBefore` | [`Time`](#time) | Issues created before this date. |
| <a id="groupissuesepicid"></a>`epicId` | [`String`](#string) | ID of an epic associated with the issues, "none" and "any" values are supported. |
| <a id="groupissuesiid"></a>`iid` | [`String`](#string) | IID of the issue. For example, "1". |
-| <a id="groupissuesiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example, ["1", "2"]. |
+| <a id="groupissuesiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example, `["1", "2"]`. |
| <a id="groupissuesincludesubgroups"></a>`includeSubgroups` | [`Boolean`](#boolean) | Include issues belonging to subgroups. |
| <a id="groupissuesiterationid"></a>`iterationId` | [`[ID]`](#id) | List of iteration Global IDs applied to the issue. |
| <a id="groupissuesiterationwildcardid"></a>`iterationWildcardId` | [`IterationWildcardId`](#iterationwildcardid) | Filter by iteration ID wildcard. |
@@ -11240,7 +11240,7 @@ Returns [`AlertManagementAlert`](#alertmanagementalert).
| <a id="projectalertmanagementalertiid"></a>`iid` | [`String`](#string) | IID of the alert. For example, "1". |
| <a id="projectalertmanagementalertsearch"></a>`search` | [`String`](#string) | Search query for title, description, service, or monitoring_tool. |
| <a id="projectalertmanagementalertsort"></a>`sort` | [`AlertManagementAlertSort`](#alertmanagementalertsort) | Sort alerts by this criteria. |
-| <a id="projectalertmanagementalertstatuses"></a>`statuses` | [`[AlertManagementStatus!]`](#alertmanagementstatus) | Alerts with the specified statues. For example, [TRIGGERED]. |
+| <a id="projectalertmanagementalertstatuses"></a>`statuses` | [`[AlertManagementStatus!]`](#alertmanagementstatus) | Alerts with the specified statues. For example, `[TRIGGERED]`. |
##### `Project.alertManagementAlertStatusCounts`
@@ -11274,7 +11274,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
| <a id="projectalertmanagementalertsiid"></a>`iid` | [`String`](#string) | IID of the alert. For example, "1". |
| <a id="projectalertmanagementalertssearch"></a>`search` | [`String`](#string) | Search query for title, description, service, or monitoring_tool. |
| <a id="projectalertmanagementalertssort"></a>`sort` | [`AlertManagementAlertSort`](#alertmanagementalertsort) | Sort alerts by this criteria. |
-| <a id="projectalertmanagementalertsstatuses"></a>`statuses` | [`[AlertManagementStatus!]`](#alertmanagementstatus) | Alerts with the specified statues. For example, [TRIGGERED]. |
+| <a id="projectalertmanagementalertsstatuses"></a>`statuses` | [`[AlertManagementStatus!]`](#alertmanagementstatus) | Alerts with the specified statues. For example, `[TRIGGERED]`. |
##### `Project.alertManagementHttpIntegrations`
@@ -11497,7 +11497,7 @@ Returns [`Issue`](#issue).
| <a id="projectissuecreatedbefore"></a>`createdBefore` | [`Time`](#time) | Issues created before this date. |
| <a id="projectissueepicid"></a>`epicId` | [`String`](#string) | ID of an epic associated with the issues, "none" and "any" values are supported. |
| <a id="projectissueiid"></a>`iid` | [`String`](#string) | IID of the issue. For example, "1". |
-| <a id="projectissueiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example, ["1", "2"]. |
+| <a id="projectissueiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example, `["1", "2"]`. |
| <a id="projectissueiterationid"></a>`iterationId` | [`[ID]`](#id) | List of iteration Global IDs applied to the issue. |
| <a id="projectissueiterationwildcardid"></a>`iterationWildcardId` | [`IterationWildcardId`](#iterationwildcardid) | Filter by iteration ID wildcard. |
| <a id="projectissuelabelname"></a>`labelName` | [`[String]`](#string) | Labels applied to this issue. |
@@ -11530,7 +11530,7 @@ Returns [`IssueStatusCountsType`](#issuestatuscountstype).
| <a id="projectissuestatuscountscreatedafter"></a>`createdAfter` | [`Time`](#time) | Issues created after this date. |
| <a id="projectissuestatuscountscreatedbefore"></a>`createdBefore` | [`Time`](#time) | Issues created before this date. |
| <a id="projectissuestatuscountsiid"></a>`iid` | [`String`](#string) | IID of the issue. For example, "1". |
-| <a id="projectissuestatuscountsiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example, ["1", "2"]. |
+| <a id="projectissuestatuscountsiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example, `["1", "2"]`. |
| <a id="projectissuestatuscountslabelname"></a>`labelName` | [`[String]`](#string) | Labels applied to this issue. |
| <a id="projectissuestatuscountsmilestonetitle"></a>`milestoneTitle` | [`[String]`](#string) | Milestone applied to this issue. |
| <a id="projectissuestatuscountsnot"></a>`not` | [`NegatedIssueFilterInput`](#negatedissuefilterinput) | Negated arguments. |
@@ -11563,7 +11563,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
| <a id="projectissuescreatedbefore"></a>`createdBefore` | [`Time`](#time) | Issues created before this date. |
| <a id="projectissuesepicid"></a>`epicId` | [`String`](#string) | ID of an epic associated with the issues, "none" and "any" values are supported. |
| <a id="projectissuesiid"></a>`iid` | [`String`](#string) | IID of the issue. For example, "1". |
-| <a id="projectissuesiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example, ["1", "2"]. |
+| <a id="projectissuesiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example, `["1", "2"]`. |
| <a id="projectissuesiterationid"></a>`iterationId` | [`[ID]`](#id) | List of iteration Global IDs applied to the issue. |
| <a id="projectissuesiterationwildcardid"></a>`iterationWildcardId` | [`IterationWildcardId`](#iterationwildcardid) | Filter by iteration ID wildcard. |
| <a id="projectissueslabelname"></a>`labelName` | [`[String]`](#string) | Labels applied to this issue. |
@@ -11855,7 +11855,7 @@ Returns [`Requirement`](#requirement).
| ---- | ---- | ----------- |
| <a id="projectrequirementauthorusername"></a>`authorUsername` | [`[String!]`](#string) | Filter requirements by author username. |
| <a id="projectrequirementiid"></a>`iid` | [`ID`](#id) | IID of the requirement, e.g., "1". |
-| <a id="projectrequirementiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of requirements, e.g., [1, 2]. |
+| <a id="projectrequirementiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of requirements, e.g., `[1, 2]`. |
| <a id="projectrequirementlasttestreportstate"></a>`lastTestReportState` | [`RequirementStatusFilter`](#requirementstatusfilter) | The state of latest requirement test report. |
| <a id="projectrequirementsearch"></a>`search` | [`String`](#string) | Search query for requirement title. |
| <a id="projectrequirementsort"></a>`sort` | [`Sort`](#sort) | List requirements by sort order. |
@@ -11877,7 +11877,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
| ---- | ---- | ----------- |
| <a id="projectrequirementsauthorusername"></a>`authorUsername` | [`[String!]`](#string) | Filter requirements by author username. |
| <a id="projectrequirementsiid"></a>`iid` | [`ID`](#id) | IID of the requirement, e.g., "1". |
-| <a id="projectrequirementsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of requirements, e.g., [1, 2]. |
+| <a id="projectrequirementsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of requirements, e.g., `[1, 2]`. |
| <a id="projectrequirementslasttestreportstate"></a>`lastTestReportState` | [`RequirementStatusFilter`](#requirementstatusfilter) | The state of latest requirement test report. |
| <a id="projectrequirementssearch"></a>`search` | [`String`](#string) | Search query for requirement title. |
| <a id="projectrequirementssort"></a>`sort` | [`Sort`](#sort) | List requirements by sort order. |
@@ -13828,8 +13828,8 @@ Values for sorting alerts.
| <a id="alertmanagementalertsortseverity_desc"></a>`SEVERITY_DESC` | Severity from more critical to less critical. |
| <a id="alertmanagementalertsortstarted_at_asc"></a>`STARTED_AT_ASC` | Start time by ascending order. |
| <a id="alertmanagementalertsortstarted_at_desc"></a>`STARTED_AT_DESC` | Start time by descending order. |
-| <a id="alertmanagementalertsortstatus_asc"></a>`STATUS_ASC` | Status by order: Ignored > Resolved > Acknowledged > Triggered. |
-| <a id="alertmanagementalertsortstatus_desc"></a>`STATUS_DESC` | Status by order: Triggered > Acknowledged > Resolved > Ignored. |
+| <a id="alertmanagementalertsortstatus_asc"></a>`STATUS_ASC` | Status by order: `Ignored > Resolved > Acknowledged > Triggered`. |
+| <a id="alertmanagementalertsortstatus_desc"></a>`STATUS_DESC` | Status by order: `Triggered > Acknowledged > Resolved > Ignored`. |
| <a id="alertmanagementalertsortupdated_asc"></a>`UPDATED_ASC` | Updated at ascending order. |
| <a id="alertmanagementalertsortupdated_desc"></a>`UPDATED_DESC` | Updated at descending order. |
| <a id="alertmanagementalertsortupdated_time_asc"></a>`UPDATED_TIME_ASC` | Created time by ascending order. |
@@ -16071,7 +16071,7 @@ Field that are available while modifying the custom mapping attributes for an HT
| <a id="boardissueinputauthorusername"></a>`authorUsername` | [`String`](#string) | Filter by author username. |
| <a id="boardissueinputepicid"></a>`epicId` | [`EpicID`](#epicid) | Filter by epic ID. Incompatible with epicWildcardId. |
| <a id="boardissueinputepicwildcardid"></a>`epicWildcardId` | [`EpicWildcardId`](#epicwildcardid) | Filter by epic ID wildcard. Incompatible with epicId. |
-| <a id="boardissueinputiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example ["1", "2"]. |
+| <a id="boardissueinputiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example `["1", "2"]`. |
| <a id="boardissueinputiterationid"></a>`iterationId` | [`[IterationID!]`](#iterationid) | Filter by a list of iteration IDs. Incompatible with iterationWildcardId. |
| <a id="boardissueinputiterationtitle"></a>`iterationTitle` | [`String`](#string) | Filter by iteration title. |
| <a id="boardissueinputiterationwildcardid"></a>`iterationWildcardId` | [`IterationWildcardId`](#iterationwildcardid) | Filter by iteration ID wildcard. |
@@ -16225,7 +16225,7 @@ Represents an escalation rule.
| <a id="negatedboardissueinputassigneeusername"></a>`assigneeUsername` | [`[String]`](#string) | Filter by assignee username. |
| <a id="negatedboardissueinputauthorusername"></a>`authorUsername` | [`String`](#string) | Filter by author username. |
| <a id="negatedboardissueinputepicid"></a>`epicId` | [`EpicID`](#epicid) | Filter by epic ID. Incompatible with epicWildcardId. |
-| <a id="negatedboardissueinputiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example ["1", "2"]. |
+| <a id="negatedboardissueinputiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues. For example `["1", "2"]`. |
| <a id="negatedboardissueinputiterationid"></a>`iterationId` | [`[IterationID!]`](#iterationid) | Filter by a list of iteration IDs. Incompatible with iterationWildcardId. |
| <a id="negatedboardissueinputiterationtitle"></a>`iterationTitle` | [`String`](#string) | Filter by iteration title. |
| <a id="negatedboardissueinputiterationwildcardid"></a>`iterationWildcardId` | [`NegatedIterationWildcardId`](#negatediterationwildcardid) | Filter by iteration ID wildcard. |
@@ -16264,7 +16264,7 @@ Represents an escalation rule.
| <a id="negatedissuefilterinputassigneeid"></a>`assigneeId` | [`String`](#string) | ID of a user not assigned to the issues. |
| <a id="negatedissuefilterinputassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users not assigned to the issue. |
| <a id="negatedissuefilterinputepicid"></a>`epicId` | [`String`](#string) | ID of an epic not associated with the issues. |
-| <a id="negatedissuefilterinputiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues to exclude. For example, [1, 2]. |
+| <a id="negatedissuefilterinputiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of issues to exclude. For example, `[1, 2]`. |
| <a id="negatedissuefilterinputiterationid"></a>`iterationId` | [`[ID!]`](#id) | List of iteration Global IDs not applied to the issue. |
| <a id="negatedissuefilterinputiterationwildcardid"></a>`iterationWildcardId` | [`IterationWildcardId`](#iterationwildcardid) | Filter by negated iteration ID wildcard. |
| <a id="negatedissuefilterinputlabelname"></a>`labelName` | [`[String!]`](#string) | Labels not applied to this issue. |
diff --git a/doc/development/fe_guide/index.md b/doc/development/fe_guide/index.md
index 00f0d72571a..325310ad05c 100644
--- a/doc/development/fe_guide/index.md
+++ b/doc/development/fe_guide/index.md
@@ -95,7 +95,7 @@ How we implement [keyboard shortcuts](keyboard_shortcuts.md) that can be customi
## Editors
-GitLab text editing experiences are provided by the [Source Editor](editor_lite.md) and
+GitLab text editing experiences are provided by the [Source Editor](source_editor.md) and
the [Content Editor](content_editor.md).
## Frontend FAQ
diff --git a/doc/development/fe_guide/editor_lite.md b/doc/development/fe_guide/source_editor.md
index f28588c23e9..fc128c0ecb1 100644
--- a/doc/development/fe_guide/editor_lite.md
+++ b/doc/development/fe_guide/source_editor.md
@@ -4,9 +4,9 @@ group: Editor
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
---
-# Editor Lite **(FREE)**
+# Source Editor **(FREE)**
-**Editor Lite** provides the editing experience at GitLab. This thin wrapper around
+**Source Editor** provides the editing experience at GitLab. This thin wrapper around
[the Monaco editor](https://microsoft.github.io/monaco-editor/) provides necessary
helpers and abstractions, and extends Monaco [using extensions](#extensions). Multiple
GitLab features use it, including:
@@ -17,22 +17,22 @@ GitLab features use it, including:
- [Web Editor](../../user/project/repository/web_editor.md)
- [Security Policies](../../user/application_security/threat_monitoring/index.md)
-## How to use Editor Lite
+## How to use Source Editor
-Editor Lite is framework-agnostic and can be used in any application, including both
-Rails and Vue. To help with integration, we have the dedicated `<editor-lite>`
-Vue component, but the integration of Editor Lite is generally straightforward:
+Source Editor is framework-agnostic and can be used in any application, including both
+Rails and Vue. To help with integration, we have the dedicated `<source-editor>`
+Vue component, but the integration of Source Editor is generally straightforward:
-1. Import Editor Lite:
+1. Import Source Editor:
```javascript
- import EditorLite from '~/editor/editor_lite';
+ import SourceEditor from '~/editor/source_editor';
```
1. Initialize global editor for the view:
```javascript
- const editor = new EditorLite({
+ const editor = new SourceEditor({
// Editor Options.
// The list of all accepted options can be found at
// https://microsoft.github.io/monaco-editor/api/enums/monaco.editor.editoroption.html
@@ -43,11 +43,11 @@ Vue component, but the integration of Editor Lite is generally straightforward:
```javascript
editor.createInstance({
- // Editor Lite configuration options.
+ // Source Editor configuration options.
})
```
-An instance of Editor Lite accepts the following configuration options:
+An instance of Source Editor accepts the following configuration options:
| Option | Required? | Description |
| -------------- | ------- | ---- |
@@ -74,12 +74,12 @@ with additional functions on the instance level:
1. Editor's loading state.
- The loading state is built in to Editor Lite, making spinners and loaders
+ The loading state is built in to Source Editor, making spinners and loaders
rarely needed in HTML. To benefit the built-in loading state, set the `data-editor-loading`
property on the HTML element that should contain the editor. When bootstrapping,
- Editor Lite shows the loader automatically.
+ Source Editor shows the loader automatically.
- ![Editor Lite: loading state](img/editor_lite_loading.png)
+ ![Source Editor: loading state](img/editor_lite_loading.png)
1. Update syntax highlighting if the filename changes.
@@ -104,21 +104,21 @@ with additional functions on the instance level:
1. Performance
- Even though Editor Lite itself is extremely slim, it still depends on Monaco editor,
- which adds weight. Every time you add Editor Lite to a view, the JavaScript bundle's
+ Even though Source Editor itself is extremely slim, it still depends on Monaco editor,
+ which adds weight. Every time you add Source Editor to a view, the JavaScript bundle's
size significantly increases, affecting your view's loading performance. We recommend
you import the editor on demand if either:
- You're uncertain if the view needs the editor.
- The editor is a secondary element of the view.
- Loading Editor Lite on demand is handled like loading any other module:
+ Loading Source Editor on demand is handled like loading any other module:
```javascript
someActionFunction() {
- import(/* webpackChunkName: 'EditorLite' */ '~/editor/editor_lite').
- then(({ default: EditorLite }) => {
- const editor = new EditorLite();
+ import(/* webpackChunkName: 'SourceEditor' */ '~/editor/source_editor').
+ then(({ default: SourceEditor }) => {
+ const editor = new SourceEditor();
...
});
...
@@ -127,28 +127,28 @@ with additional functions on the instance level:
## Extensions
-Editor Lite provides a universal, extensible editing tool to the whole product,
-and doesn't depend on any particular group. Even though the Editor Lite's core is owned by
+Source Editor provides a universal, extensible editing tool to the whole product,
+and doesn't depend on any particular group. Even though the Source Editor's core is owned by
[Create::Editor FE Team](https://about.gitlab.com/handbook/engineering/development/dev/create-editor/),
any group can own the extensions—the main functional elements. The goal of
-Editor Lite extensions is to keep the editor's core slim and stable. Any
+Source Editor extensions is to keep the editor's core slim and stable. Any
needed features can be added as extensions to this core. Any group can
-build and own new editing features without worrying about changes to Editor Lite
+build and own new editing features without worrying about changes to Source Editor
breaking or overriding them.
You can depend on other modules in your extensions. This organization helps keep
-the size of Editor Lite's core at bay by importing dependencies only when needed.
+the size of Source Editor's core at bay by importing dependencies only when needed.
-Structurally, the complete implementation of Editor Lite can be presented as this diagram:
+Structurally, the complete implementation of Source Editor can be presented as this diagram:
```mermaid
graph TD;
- B[Extension 1]---A[Editor Lite]
- C[Extension 2]---A[Editor Lite]
- D[Extension 3]---A[Editor Lite]
- E[...]---A[Editor Lite]
- F[Extension N]---A[Editor Lite]
- A[Editor Lite]---Z[Monaco]
+ B[Extension 1]---A[Source Editor]
+ C[Extension 2]---A[Source Editor]
+ D[Extension 3]---A[Source Editor]
+ E[...]---A[Source Editor]
+ F[Extension N]---A[Source Editor]
+ A[Source Editor]---Z[Monaco]
```
An extension is an ES6 module that exports a JavaScript object:
@@ -164,19 +164,19 @@ export default {
```
-In the extension's functions, `this` refers to the current Editor Lite instance.
+In the extension's functions, `this` refers to the current Source Editor instance.
Using `this`, you get access to the complete instance's API, such as the
`setPosition()` method in this particular case.
### Using an existing extension
-Adding an extension to Editor Lite's instance requires the following steps:
+Adding an extension to Source Editor's instance requires the following steps:
```javascript
-import EditorLite from '~/editor/editor_lite';
+import SourceEditor from '~/editor/source_editor';
import MyExtension from '~/my_extension';
-const editor = new EditorLite().createInstance({
+const editor = new SourceEditor().createInstance({
...
});
editor.use(MyExtension);
@@ -184,10 +184,10 @@ editor.use(MyExtension);
### Creating an extension
-Let's create our first Editor Lite extension. Extensions are
+Let's create our first Source Editor extension. Extensions are
[ES6 modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) exporting a
-basic `Object`, used to extend Editor Lite's features. As a test, let's
-create an extension that extends Editor Lite with a new function that, when called,
+basic `Object`, used to extend Source Editor's features. As a test, let's
+create an extension that extends Source Editor with a new function that, when called,
outputs the editor's content in `alert`.
`~/my_folder/my_fancy_extension.js:`
@@ -210,10 +210,10 @@ Now let's use our extension:
`~/my_folder/component_bundle.js`:
```javascript
-import EditorLite from '~/editor/editor_lite';
+import SourceEditor from '~/editor/source_editor';
import MyFancyExtension from './my_fancy_extension';
-const editor = new EditorLite().createInstance({
+const editor = new SourceEditor().createInstance({
...
});
editor.use(MyFancyExtension);
@@ -223,32 +223,32 @@ someButton.addEventListener('click', () => {
});
```
-First of all, we import Editor Lite and our new extension. Then we create the
-editor and its instance. By default Editor Lite has no `throwContentAtMe` method.
+First of all, we import Source Editor and our new extension. Then we create the
+editor and its instance. By default Source Editor has no `throwContentAtMe` method.
But the `editor.use(MyFancyExtension)` line brings that method to our instance.
After that, we can use it any time we need it. In this case, we call it when some
theoretical button has been clicked.
This script would result in an alert containing the editor's content when `someButton` is clicked.
-![Editor Lite new extension's result](img/editor_lite_create_ext.png)
+![Source Editor new extension's result](img/editor_lite_create_ext.png)
### Tips
1. Performance
- Just like Editor Lite itself, any extension can be loaded on demand to not harm
+ Just like Source Editor itself, any extension can be loaded on demand to not harm
loading performance of the views:
```javascript
const EditorPromise = import(
- /* webpackChunkName: 'EditorLite' */ '~/editor/editor_lite'
+ /* webpackChunkName: 'SourceEditor' */ '~/editor/source_editor'
);
- const MarkdownExtensionPromise = import('~/editor/editor_markdown_ext');
+ const MarkdownExtensionPromise = import('~/editor/source_editor_markdown_ext');
Promise.all([EditorPromise, MarkdownExtensionPromise])
- .then(([{ default: EditorLite }, { default: MarkdownExtension }]) => {
- const editor = new EditorLite().createInstance({
+ .then(([{ default: SourceEditor }, { default: MarkdownExtension }]) => {
+ const editor = new SourceEditor().createInstance({
...
});
editor.use(MarkdownExtension);
diff --git a/doc/operations/metrics/alerts.md b/doc/operations/metrics/alerts.md
index fc0db5f8b2d..ea4dd7e34cb 100644
--- a/doc/operations/metrics/alerts.md
+++ b/doc/operations/metrics/alerts.md
@@ -28,7 +28,7 @@ use with Prometheus webhooks. If you have manual configuration enabled, an
This section contains the needed **URL** and **Authorization Key**. The
**Reset Key** button invalidates the key and generates a new one.
-![Prometheus service configuration of Alerts](img/prometheus_service_alerts.png)
+![Prometheus integration configuration of Alerts](img/prometheus_integration_alerts.png)
To send GitLab alert notifications, copy the **URL** and **Authorization Key** into the
[`webhook_configs`](https://prometheus.io/docs/alerting/latest/configuration/#webhook_config)
diff --git a/doc/operations/metrics/img/prometheus_service_alerts.png b/doc/operations/metrics/img/prometheus_integration_alerts.png
index 609c5e5196c..609c5e5196c 100644
--- a/doc/operations/metrics/img/prometheus_service_alerts.png
+++ b/doc/operations/metrics/img/prometheus_integration_alerts.png
Binary files differ
diff --git a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
index e3617805c83..cf818bec92a 100644
--- a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
+++ b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
@@ -109,7 +109,7 @@ module Gitlab
service = result[:project].find_or_initialize_service('prometheus')
- unless service.update(prometheus_service_attributes)
+ unless service.update(prometheus_integration_attributes)
log_error('Could not save prometheus manual configuration for self-monitoring project. Errors: %{errors}' % { errors: service.errors.full_messages })
return error(_('Could not save prometheus manual configuration'))
end
@@ -156,7 +156,7 @@ module Gitlab
::Gitlab::Prometheus::Internal.uri
end
- def prometheus_service_attributes
+ def prometheus_integration_attributes
{
api_url: internal_prometheus_server_address_uri,
manual_configuration: true,
diff --git a/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb b/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb
index 5ff7c88970c..8eab527f88d 100644
--- a/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb
+++ b/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb
@@ -21,9 +21,9 @@ module Gitlab
@paginated_collection = load_paginated_collection(batch_page, batch_size, diff_options)
@pagination_data = {
- current_page: current_page,
- next_page: next_page,
- total_pages: total_pages
+ current_page: nil,
+ next_page: nil,
+ total_pages: @paginated_collection.blank? ? nil : relation.size
}
end
@@ -62,24 +62,6 @@ module Gitlab
@merge_request_diff.merge_request_diff_files
end
- def current_page
- return if @paginated_collection.blank?
-
- batch_gradual_load? ? nil : @paginated_collection.current_page
- end
-
- def next_page
- return if @paginated_collection.blank?
-
- batch_gradual_load? ? nil : @paginated_collection.next_page
- end
-
- def total_pages
- return if @paginated_collection.blank?
-
- batch_gradual_load? ? relation.size : @paginated_collection.total_pages
- end
-
# rubocop: disable CodeReuse/ActiveRecord
def load_paginated_collection(batch_page, batch_size, diff_options)
batch_page ||= DEFAULT_BATCH_PAGE
@@ -87,21 +69,12 @@ module Gitlab
paths = diff_options&.fetch(:paths, nil)
- paginated_collection = if batch_gradual_load?
- relation.offset(batch_page).limit([batch_size.to_i, DEFAULT_BATCH_SIZE].min)
- else
- relation.page(batch_page).per(batch_size)
- end
-
+ paginated_collection = relation.offset(batch_page).limit([batch_size.to_i, DEFAULT_BATCH_SIZE].min)
paginated_collection = paginated_collection.by_paths(paths) if paths
paginated_collection
end
# rubocop: enable CodeReuse/ActiveRecord
-
- def batch_gradual_load?
- Feature.enabled?(:diffs_gradual_load, @merge_request_diff.project, default_enabled: true)
- end
end
end
end
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index 54ede91b38d..a5f170aa0f3 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -9204,9 +9204,6 @@ msgstr ""
msgid "Create your group"
msgstr ""
-msgid "Create your own profile to collaborate with your teammates in issues, merge requests, and more."
-msgstr ""
-
msgid "Create/import your first project"
msgstr ""
@@ -11737,9 +11734,6 @@ msgstr ""
msgid "Editing"
msgstr ""
-msgid "Editor Lite instance is required to set up an extension."
-msgstr ""
-
msgid "Elapsed time"
msgstr ""
@@ -18682,9 +18676,6 @@ msgstr ""
msgid "Join Zoom meeting"
msgstr ""
-msgid "Join your team"
-msgstr ""
-
msgid "Joined %{time_ago}"
msgstr ""
@@ -30552,6 +30543,9 @@ msgstr ""
msgid "Source Branch"
msgstr ""
+msgid "Source Editor instance is required to set up an extension."
+msgstr ""
+
msgid "Source IP"
msgstr ""
diff --git a/package.json b/package.json
index c3fbfabd07d..372eea7cfeb 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"@gitlab/favicon-overlay": "2.0.0",
"@gitlab/svgs": "1.199.0",
"@gitlab/tributejs": "1.0.0",
- "@gitlab/ui": "29.37.0",
+ "@gitlab/ui": "29.38.1",
"@gitlab/visual-review-tools": "1.6.1",
"@rails/actioncable": "6.1.3-2",
"@rails/ujs": "6.1.3-2",
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
diff --git a/yarn.lock b/yarn.lock
index 46c6932fa68..9defe4d87bb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -908,10 +908,10 @@
resolved "https://registry.yarnpkg.com/@gitlab/tributejs/-/tributejs-1.0.0.tgz#672befa222aeffc83e7d799b0500a7a4418e59b8"
integrity sha512-nmKw1+hB6MHvlmPz63yPwVs1qQkycHwsKgxpEbzmky16Y6mL4EJMk3w1b8QlOAF/AIAzjCERPhe/R4MJiohbZw==
-"@gitlab/ui@29.37.0":
- version "29.37.0"
- resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-29.37.0.tgz#ddfd4760562387f7c164756301f73e29c1a5cd13"
- integrity sha512-DK+MRhCeAXs7RhbIq7k7z+jTvSoQFfziMgFidmFiyyLYsZRj0+ya2pF9SubxEzH9HKwhs2TNZFd28onO8i5upg==
+"@gitlab/ui@29.38.1":
+ version "29.38.1"
+ resolved "https://registry.yarnpkg.com/@gitlab/ui/-/ui-29.38.1.tgz#93ab2ad7cb8008b3050599b452b626c109630e97"
+ integrity sha512-5sKdbZI9Q9S7KW3/ybN40tFS/KInm76cog8O0SMe2Ne026ZZ18CAHEMvkfoVXTN3XMkWZnMlk92s8f/WqM5//A==
dependencies:
"@babel/standalone" "^7.0.0"
"@gitlab/vue-toasted" "^1.3.0"