diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml
index 36d6d8a3973..ccc181e4fbb 100644
--- a/.gitlab/ci/rules.gitlab-ci.yml
+++ b/.gitlab/ci/rules.gitlab-ci.yml
@@ -289,10 +289,6 @@
- "tooling/docs/**/*"
- "lib/tasks/gitlab/docs/compile_deprecations.rake"
-.bundler-patterns: &bundler-patterns
- - '{Gemfile.lock,*/Gemfile.lock,*/*/Gemfile.lock}'
- - '{Gemfile.next.lock,*/Gemfile.next.lock,*/*/Gemfile.next.lock}'
-
.nodejs-patterns: &nodejs-patterns
- '{package.json,*/package.json,*/*/package.json}'
- '{yarn.lock,*/yarn.lock,*/*/yarn.lock}'
@@ -463,12 +459,6 @@
.frontend-predictive-patterns: &frontend-predictive-patterns
- "{,ee/,jh/}{app/assets/javascripts,spec/frontend}/**/*"
-# Frontend view patterns + .qa-patterns
-.frontend-qa-patterns: &frontend-qa-patterns
- - "{,ee/,jh/}{app/assets,app/components,app/helpers,app/presenters,app/views}/**/*"
- # QA changes
- - "{,jh/}qa/**/*"
-
# Code patterns + .ci-patterns
.code-patterns: &code-patterns
- ".{eslintrc.yml,eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}"
@@ -679,13 +669,6 @@
- "{,jh/}Gemfile.next{,.lock}"
- "{,ee/,jh/}config/**/*.rb"
-.core-frontend-patterns: &core-frontend-patterns
- - "{package.json,yarn.lock}"
- - "babel.config.js"
- - "jest.config.{base,integration,unit}.js"
- - "config/helpers/**/*.js"
- - "vendor/assets/javascripts/**/*"
-
.feature-flag-development-config-patterns: &feature-flag-development-config-patterns
- "{,ee/,jh/}config/feature_flags/**/*.yml"
diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml
index 9b9f27cbfd8..10f8b3cc52a 100644
--- a/.rubocop_todo/layout/line_length.yml
+++ b/.rubocop_todo/layout/line_length.yml
@@ -2150,7 +2150,6 @@ Layout/LineLength:
- 'ee/spec/workers/ci/minutes/update_project_and_namespace_usage_worker_spec.rb'
- 'ee/spec/workers/ci/upstream_projects_subscriptions_cleanup_worker_spec.rb'
- 'ee/spec/workers/compliance_management/merge_requests/compliance_violations_worker_spec.rb'
- - 'ee/spec/workers/concerns/elastic/indexing_control_spec.rb'
- 'ee/spec/workers/elastic/migration_worker_spec.rb'
- 'ee/spec/workers/geo/destroy_worker_spec.rb'
- 'ee/spec/workers/geo/prune_event_log_worker_spec.rb'
diff --git a/.rubocop_todo/rspec/expect_in_hook.yml b/.rubocop_todo/rspec/expect_in_hook.yml
index a0cc988aadc..d64e2dfab16 100644
--- a/.rubocop_todo/rspec/expect_in_hook.yml
+++ b/.rubocop_todo/rspec/expect_in_hook.yml
@@ -73,7 +73,6 @@ RSpec/ExpectInHook:
- 'ee/spec/tasks/gitlab/license_rake_spec.rb'
- 'ee/spec/tasks/gitlab/spdx_rake_spec.rb'
- 'ee/spec/workers/analytics/cycle_analytics/consistency_worker_spec.rb'
- - 'ee/spec/workers/concerns/elastic/indexing_control_spec.rb'
- 'ee/spec/workers/elastic_index_bulk_cron_worker_spec.rb'
- 'ee/spec/workers/elastic_indexing_control_worker_spec.rb'
- 'ee/spec/workers/geo/secondary/registry_consistency_worker_spec.rb'
diff --git a/.rubocop_todo/rspec/named_subject.yml b/.rubocop_todo/rspec/named_subject.yml
index 4dcfe10e1dc..1bd4a69e18b 100644
--- a/.rubocop_todo/rspec/named_subject.yml
+++ b/.rubocop_todo/rspec/named_subject.yml
@@ -3287,7 +3287,6 @@ RSpec/NamedSubject:
- 'spec/services/projects/operations/update_service_spec.rb'
- 'spec/services/projects/overwrite_project_service_spec.rb'
- 'spec/services/projects/prometheus/alerts/notify_service_spec.rb'
- - 'spec/services/projects/prometheus/metrics/destroy_service_spec.rb'
- 'spec/services/projects/readme_renderer_service_spec.rb'
- 'spec/services/projects/transfer_service_spec.rb'
- 'spec/services/projects/unlink_fork_service_spec.rb'
diff --git a/app/assets/javascripts/admin/broadcast_messages/components/base.stories.js b/app/assets/javascripts/admin/broadcast_messages/components/base.stories.js
new file mode 100644
index 00000000000..61fbce0fef9
--- /dev/null
+++ b/app/assets/javascripts/admin/broadcast_messages/components/base.stories.js
@@ -0,0 +1,27 @@
+import BroadcastMessagesBase from '~/admin/broadcast_messages/components/base.vue';
+import { generateMockMessages } from '../../../../../../spec/frontend/admin/broadcast_messages/mock_data';
+
+export default {
+ title: 'admin/broadcast_messages/base',
+ component: BroadcastMessagesBase,
+};
+
+const Template = (args, { argTypes }) => ({
+ props: Object.keys(argTypes),
+ components: { BroadcastMessagesBase },
+ template: '
+
test3
', + system: false, + internal: false, + systemNoteIconName: null, + createdAt: '2024-07-19T05:52:01Z', + lastEditedAt: '2024-07-26T10:06:02Z', + url: 'http://127.0.0.1:3000/flightjs/Flight/-/issues/134#note_2506', + authorIsContributor: false, + maxAccessLevelOfAuthor: 'Owner', + lastEditedBy: null, + discussion: { + id: 'gid://gitlab/Discussion/c4be5bec43a737e0966dbc4c040b1517e7febfa9', + resolved: true, + resolvable: true, + resolvedBy: { + id: 'gid://gitlab/User/1', + name: 'Administrator', + __typename: 'UserCore', + }, + __typename: 'Discussion', + }, + author: { + id: 'gid://gitlab/User/1', + avatarUrl: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Administrator', + username: 'root', + webUrl: 'http://127.0.0.1:3000/root', + webPath: '/root', + __typename: 'UserCore', + }, + awardEmoji: { + nodes: [], + __typename: 'AwardEmojiConnection', + }, + userPermissions: { + adminNote: true, + awardEmoji: true, + readNote: true, + createNote: true, + resolveNote: true, + repositionNote: true, + __typename: 'NotePermissions', + }, + systemNoteMetadata: null, + __typename: 'Note', + }, + { + id: 'gid://gitlab/DiscussionNote/2539', + body: 'comment', + bodyHtml: 'comment
', + system: false, + internal: false, + systemNoteIconName: null, + createdAt: '2024-07-23T05:07:46Z', + lastEditedAt: '2024-07-26T10:06:02Z', + url: 'http://127.0.0.1:3000/flightjs/Flight/-/issues/134#note_2539', + authorIsContributor: false, + maxAccessLevelOfAuthor: 'Owner', + lastEditedBy: null, + discussion: { + id: 'gid://gitlab/Discussion/c4be5bec43a737e0966dbc4c040b1517e7febfa9', + resolved: true, + resolvable: true, + resolvedBy: { + id: 'gid://gitlab/User/1', + name: 'Administrator', + __typename: 'UserCore', + }, + __typename: 'Discussion', + }, + author: { + id: 'gid://gitlab/User/1', + avatarUrl: + 'https://www.gravatar.com/avatar/258d8dc916db8cea2cafb6c3cd0cb0246efe061421dbd83ec3a350428cabda4f?s=80&d=identicon', + name: 'Administrator', + username: 'root', + webUrl: 'http://127.0.0.1:3000/root', + webPath: '/root', + __typename: 'UserCore', + }, + awardEmoji: { + nodes: [], + __typename: 'AwardEmojiConnection', + }, + userPermissions: { + adminNote: true, + awardEmoji: true, + readNote: true, + createNote: true, + resolveNote: true, + repositionNote: true, + __typename: 'NotePermissions', + }, + systemNoteMetadata: null, + __typename: 'Note', + }, + ], + __typename: 'NoteConnection', + }, + __typename: 'Discussion', + }, + errors: [], + __typename: 'DiscussionToggleResolvePayload', + }, + }, +}; diff --git a/spec/frontend/work_items/notes/award_utils_spec.js b/spec/frontend/work_items/notes/award_utils_spec.js index 62c4835aa5a..e3e5024bc9f 100644 --- a/spec/frontend/work_items/notes/award_utils_spec.js +++ b/spec/frontend/work_items/notes/award_utils_spec.js @@ -6,9 +6,9 @@ import workItemNotesByIidQuery from '~/work_items/graphql/notes/work_item_notes_ import addAwardEmojiMutation from '~/work_items/graphql/notes/work_item_note_add_award_emoji.mutation.graphql'; import removeAwardEmojiMutation from '~/work_items/graphql/notes/work_item_note_remove_award_emoji.mutation.graphql'; import { - mockWorkItemNotesResponseWithComments, mockAwardEmojiThumbsUp, mockAwardEmojiThumbsDown, + mockWorkItemNotesResponseWithComments, } from '../mock_data'; function getWorkItem(data) { diff --git a/spec/helpers/projects/pipeline_helper_spec.rb b/spec/helpers/projects/pipeline_helper_spec.rb index 5fdd83b4884..fd08fc5eeb1 100644 --- a/spec/helpers/projects/pipeline_helper_spec.rb +++ b/spec/helpers/projects/pipeline_helper_spec.rb @@ -36,6 +36,10 @@ RSpec.describe Projects::PipelineHelper do end describe '#js_pipeline_header_data' do + before do + allow(helper).to receive(:current_user).and_return(user) + end + subject(:pipeline_header_data) { helper.js_pipeline_header_data(project, pipeline) } it 'returns pipeline header data' do diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index b05b9dc0710..a9b5b4fcead 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -80,6 +80,7 @@ issues: - email - issuable_resource_links - synced_epic +- observability_metrics work_item_type: - issues - namespace diff --git a/spec/services/projects/prometheus/metrics/destroy_service_spec.rb b/spec/services/projects/prometheus/metrics/destroy_service_spec.rb deleted file mode 100644 index 4c2a959a149..00000000000 --- a/spec/services/projects/prometheus/metrics/destroy_service_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Projects::Prometheus::Metrics::DestroyService, feature_category: :metrics do - let(:metric) { create(:prometheus_metric) } - - subject { described_class.new(metric) } - - it 'destroys metric' do - subject.execute - - expect(PrometheusMetric.find_by(id: metric.id)).to be_nil - end -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3aa6a0d72d3..e5d7f2bba46 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -34,7 +34,7 @@ require 'rspec-parameterized' require 'shoulda/matchers' require 'test_prof/recipes/rspec/let_it_be' require 'test_prof/factory_default' -require 'test_prof/factory_prof/nate_heckler' +require 'test_prof/factory_prof/nate_heckler' if ENV.fetch('ENABLE_FACTORY_PROF', 'true') == 'true' require 'parslet/rig/rspec' require 'axe-rspec' diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml index 969f71e4862..d07e69b1d97 100644 --- a/spec/support/rspec_order_todo.yml +++ b/spec/support/rspec_order_todo.yml @@ -8075,7 +8075,6 @@ - './spec/services/projects/overwrite_project_service_spec.rb' - './spec/services/projects/participants_service_spec.rb' - './spec/services/projects/prometheus/alerts/notify_service_spec.rb' -- './spec/services/projects/prometheus/metrics/destroy_service_spec.rb' - './spec/services/projects/protect_default_branch_service_spec.rb' - './spec/services/projects/readme_renderer_service_spec.rb' - './spec/services/projects/record_target_platforms_service_spec.rb' diff --git a/spec/support/shared_examples/features/rich_text_editor/common_shared_examples.rb b/spec/support/shared_examples/features/rich_text_editor/common_shared_examples.rb index 60861f774bd..7de795e5e04 100644 --- a/spec/support/shared_examples/features/rich_text_editor/common_shared_examples.rb +++ b/spec/support/shared_examples/features/rich_text_editor/common_shared_examples.rb @@ -49,4 +49,43 @@ RSpec.shared_examples 'rich text editor - common' do expect(page).not_to have_text('An error occurred') end end + + describe 'block content is added to a table' do + it 'converts a markdown table to HTML and shows a warning for it' do + click_on 'Add a table' + + switch_to_content_editor + type_in_content_editor '* list item' + + expect(page).to have_text( + "Tables containing block elements (like multiple paragraphs, lists or blockquotes) are not \ +supported in Markdown and will be converted to HTML." + ) + + switch_to_markdown_editor + expect(page.find('textarea').value).to include '| header | +header | +
|---|---|
| + + | ++ + | +
| + + | ++ +* list item + | +