diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index a3db2c43ac7..9a9688ea1c0 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -503,10 +503,6 @@ rspec:coverage: optional: true - job: rspec:artifact-collector ee remainder optional: true - # Memory jobs - - job: memory-on-boot - optional: true - artifacts: false script: - run_timed_command "bundle exec scripts/merge-simplecov" coverage: '/LOC \((\d+\.\d+%)\) covered.$/' diff --git a/.rubocop_todo/layout/empty_line_after_magic_comment.yml b/.rubocop_todo/layout/empty_line_after_magic_comment.yml index 5500546069b..a53be928a9f 100644 --- a/.rubocop_todo/layout/empty_line_after_magic_comment.yml +++ b/.rubocop_todo/layout/empty_line_after_magic_comment.yml @@ -99,7 +99,6 @@ Layout/EmptyLineAfterMagicComment: - 'app/services/packages/create_package_file_service.rb' - 'app/services/packages/maven/create_package_service.rb' - 'app/services/packages/maven/find_or_create_package_service.rb' - - 'app/services/packages/npm/create_package_service.rb' - 'app/services/packages/npm/create_tag_service.rb' - 'app/services/packages/nuget/create_dependency_service.rb' - 'app/services/packages/remove_tag_service.rb' @@ -669,7 +668,6 @@ Layout/EmptyLineAfterMagicComment: - 'spec/services/packages/helm/process_file_service_spec.rb' - 'spec/services/packages/maven/create_package_service_spec.rb' - 'spec/services/packages/maven/find_or_create_package_service_spec.rb' - - 'spec/services/packages/npm/create_package_service_spec.rb' - 'spec/services/packages/npm/create_tag_service_spec.rb' - 'spec/services/packages/nuget/create_dependency_service_spec.rb' - 'spec/services/packages/pypi/create_package_service_spec.rb' diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index 18ebb34b4b2..bb14ff2a396 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -547,7 +547,6 @@ Layout/LineLength: - 'app/services/packages/maven/find_or_create_package_service.rb' - 'app/services/packages/maven/metadata/append_package_file_service.rb' - 'app/services/packages/maven/metadata/sync_service.rb' - - 'app/services/packages/npm/create_package_service.rb' - 'app/services/packages/nuget/search_service.rb' - 'app/services/packages/nuget/update_package_from_metadata_service.rb' - 'app/services/personal_access_tokens/create_service.rb' @@ -4426,9 +4425,7 @@ Layout/LineLength: - 'spec/services/packages/generic/create_package_file_service_spec.rb' - 'spec/services/packages/helm/extract_file_metadata_service_spec.rb' - 'spec/services/packages/helm/process_file_service_spec.rb' - - 'spec/services/packages/maven/find_or_create_package_service_spec.rb' - 'spec/services/packages/maven/metadata/sync_service_spec.rb' - - 'spec/services/packages/npm/create_package_service_spec.rb' - 'spec/services/packages/npm/create_tag_service_spec.rb' - 'spec/services/packages/nuget/create_dependency_service_spec.rb' - 'spec/services/packages/nuget/search_service_spec.rb' diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml index 492bec83f9a..0f8b3895dc2 100644 --- a/.rubocop_todo/rspec/context_wording.yml +++ b/.rubocop_todo/rspec/context_wording.yml @@ -2640,7 +2640,6 @@ RSpec/ContextWording: - 'spec/services/packages/maven/find_or_create_package_service_spec.rb' - 'spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb' - 'spec/services/packages/maven/metadata/sync_service_spec.rb' - - 'spec/services/packages/npm/create_package_service_spec.rb' - 'spec/services/packages/nuget/search_service_spec.rb' - 'spec/services/packages/nuget/update_package_from_metadata_service_spec.rb' - 'spec/services/packages/rubygems/dependency_resolver_service_spec.rb' diff --git a/.rubocop_todo/rspec/named_subject.yml b/.rubocop_todo/rspec/named_subject.yml index 323d349a24b..8ff4ee8b544 100644 --- a/.rubocop_todo/rspec/named_subject.yml +++ b/.rubocop_todo/rspec/named_subject.yml @@ -3346,7 +3346,6 @@ RSpec/NamedSubject: - 'spec/services/packages/maven/metadata/create_versions_xml_service_spec.rb' - 'spec/services/packages/ml_model/find_or_create_package_service_spec.rb' - 'spec/services/packages/npm/create_metadata_cache_service_spec.rb' - - 'spec/services/packages/npm/create_package_service_spec.rb' - 'spec/services/packages/npm/create_tag_service_spec.rb' - 'spec/services/packages/npm/generate_metadata_service_spec.rb' - 'spec/services/packages/nuget/create_dependency_service_spec.rb' diff --git a/.rubocop_todo/style/inline_disable_annotation.yml b/.rubocop_todo/style/inline_disable_annotation.yml index 44836664c9a..635272c724e 100644 --- a/.rubocop_todo/style/inline_disable_annotation.yml +++ b/.rubocop_todo/style/inline_disable_annotation.yml @@ -685,7 +685,6 @@ Style/InlineDisableAnnotation: - 'app/services/packages/create_package_service.rb' - 'app/services/packages/debian/generate_distribution_key_service.rb' - 'app/services/packages/debian/generate_distribution_service.rb' - - 'app/services/packages/npm/create_package_service.rb' - 'app/services/packages/nuget/create_dependency_service.rb' - 'app/services/packages/nuget/extract_remote_metadata_file_service.rb' - 'app/services/packages/nuget/process_package_file_service.rb' diff --git a/app/assets/javascripts/organizations/mock_data.js b/app/assets/javascripts/organizations/mock_data.js index 0b0554e9e8c..8571b032a04 100644 --- a/app/assets/javascripts/organizations/mock_data.js +++ b/app/assets/javascripts/organizations/mock_data.js @@ -4,6 +4,10 @@ // https://gitlab.com/gitlab-org/gitlab/-/issues/420777 // https://gitlab.com/gitlab-org/gitlab/-/issues/421441 +import { organizationProjects } from 'ee_else_ce/organizations/mock_projects'; + +export { organizationProjects }; + export const defaultOrganization = { id: 1, name: 'Default', @@ -40,154 +44,6 @@ export const organizations = [ }, ]; -export const organizationProjects = [ - { - id: 'gid://gitlab/Project/8', - nameWithNamespace: 'Twitter / Typeahead.Js', - webUrl: 'http://127.0.0.1:3000/twitter/Typeahead.Js', - topics: ['JavaScript', 'Vue.js', 'GraphQL', 'Jest', 'CSS', 'HTML'], - forksCount: 4, - avatarUrl: null, - starCount: 0, - visibility: 'public', - openMergeRequestsCount: 5, - openIssuesCount: 48, - descriptionHtml: - '
Optio et reprehenderit enim doloremque deserunt et commodi. Sed sit amet iaculis neque. Morbi vel convallis elit. Aliquam vitae arcu orci. Aenean sem velit, dapibus eget enim id, tempor lobortis orci. Pellentesque dignissim nec velit eget sagittis. Maecenas lectus sapien, tincidunt ac cursus a, aliquam eu ipsum. Aliquam posuere maximus augue, ut vehicula elit vulputate condimentum. In libero leo, vehicula nec risus in, ullamcorper convallis risus. Phasellus sit amet lectus sit amet sem volutpat cursus. Nullam facilisis nulla nec lacus pretium, in pretium ex aliquam.
', - mergeRequestsAccessLevel: { - stringValue: 'ENABLED', - }, - issuesAccessLevel: { - stringValue: 'ENABLED', - }, - forkingAccessLevel: { - stringValue: 'ENABLED', - }, - userPermissions: { - removeProject: true, - }, - maxAccessLevel: { - integerValue: 30, - }, - }, - { - id: 'gid://gitlab/Project/7', - nameWithNamespace: 'Flightjs / Flight', - webUrl: 'http://127.0.0.1:3000/flightjs/Flight', - topics: [], - forksCount: 0, - avatarUrl: null, - starCount: 0, - visibility: 'private', - openMergeRequestsCount: 10, - openIssuesCount: 37, - descriptionHtml: - 'Dolor dicta rerum et ut eius voluptate earum qui.
', - mergeRequestsAccessLevel: { - stringValue: 'ENABLED', - }, - issuesAccessLevel: { - stringValue: 'ENABLED', - }, - forkingAccessLevel: { - stringValue: 'ENABLED', - }, - userPermissions: { - removeProject: true, - }, - maxAccessLevel: { - integerValue: 30, - }, - }, - { - id: 'gid://gitlab/Project/6', - nameWithNamespace: 'Jashkenas / Underscore', - webUrl: 'http://127.0.0.1:3000/jashkenas/Underscore', - topics: [], - forksCount: 0, - avatarUrl: null, - starCount: 0, - visibility: 'private', - openMergeRequestsCount: 0, - openIssuesCount: 34, - descriptionHtml: - 'Incidunt est aliquam autem nihil eveniet quis autem.
', - mergeRequestsAccessLevel: { - stringValue: 'ENABLED', - }, - issuesAccessLevel: { - stringValue: 'ENABLED', - }, - forkingAccessLevel: { - stringValue: 'ENABLED', - }, - userPermissions: { - removeProject: true, - }, - maxAccessLevel: { - integerValue: 30, - }, - }, - { - id: 'gid://gitlab/Project/5', - nameWithNamespace: 'Commit451 / Lab Coat', - webUrl: 'http://127.0.0.1:3000/Commit451/lab-coat', - topics: [], - forksCount: 0, - avatarUrl: null, - starCount: 0, - visibility: 'internal', - openMergeRequestsCount: 3, - openIssuesCount: 49, - descriptionHtml: - 'Sint eos dolorem impedit rerum et.
', - mergeRequestsAccessLevel: { - stringValue: 'ENABLED', - }, - issuesAccessLevel: { - stringValue: 'ENABLED', - }, - forkingAccessLevel: { - stringValue: 'ENABLED', - }, - userPermissions: { - removeProject: true, - }, - maxAccessLevel: { - integerValue: 30, - }, - }, - { - id: 'gid://gitlab/Project/1', - nameWithNamespace: 'Toolbox / Gitlab Smoke Tests', - webUrl: 'http://127.0.0.1:3000/toolbox/gitlab-smoke-tests', - topics: [], - forksCount: 0, - avatarUrl: null, - starCount: 0, - visibility: 'internal', - openMergeRequestsCount: 20, - openIssuesCount: 34, - descriptionHtml: - 'Veritatis error laboriosam libero autem.
', - mergeRequestsAccessLevel: { - stringValue: 'ENABLED', - }, - issuesAccessLevel: { - stringValue: 'ENABLED', - }, - forkingAccessLevel: { - stringValue: 'ENABLED', - }, - userPermissions: { - removeProject: false, - }, - maxAccessLevel: { - integerValue: 30, - }, - }, -]; - export const organizationGroups = [ { id: 'gid://gitlab/Group/29', diff --git a/app/assets/javascripts/organizations/mock_projects.js b/app/assets/javascripts/organizations/mock_projects.js new file mode 100644 index 00000000000..8442e029a37 --- /dev/null +++ b/app/assets/javascripts/organizations/mock_projects.js @@ -0,0 +1,163 @@ +/* eslint-disable @gitlab/require-i18n-strings */ + +// This is temporary mock data that will be removed when completing the following: +// https://gitlab.com/gitlab-org/gitlab/-/issues/420777 +// https://gitlab.com/gitlab-org/gitlab/-/issues/421441 + +export const organizationProjects = [ + { + id: 'gid://gitlab/Project/8', + nameWithNamespace: 'Twitter / Typeahead.Js', + webUrl: 'http://127.0.0.1:3000/twitter/Typeahead.Js', + topics: ['JavaScript', 'Vue.js', 'GraphQL', 'Jest', 'CSS', 'HTML'], + forksCount: 4, + avatarUrl: null, + starCount: 0, + visibility: 'public', + openMergeRequestsCount: 5, + openIssuesCount: 48, + descriptionHtml: + 'Optio et reprehenderit enim doloremque deserunt et commodi. Sed sit amet iaculis neque. Morbi vel convallis elit. Aliquam vitae arcu orci. Aenean sem velit, dapibus eget enim id, tempor lobortis orci. Pellentesque dignissim nec velit eget sagittis. Maecenas lectus sapien, tincidunt ac cursus a, aliquam eu ipsum. Aliquam posuere maximus augue, ut vehicula elit vulputate condimentum. In libero leo, vehicula nec risus in, ullamcorper convallis risus. Phasellus sit amet lectus sit amet sem volutpat cursus. Nullam facilisis nulla nec lacus pretium, in pretium ex aliquam.
', + archived: false, + mergeRequestsAccessLevel: { + stringValue: 'ENABLED', + }, + issuesAccessLevel: { + stringValue: 'ENABLED', + }, + forkingAccessLevel: { + stringValue: 'ENABLED', + }, + userPermissions: { + removeProject: true, + }, + maxAccessLevel: { + integerValue: 30, + }, + __typename: 'Project', + }, + { + id: 'gid://gitlab/Project/7', + nameWithNamespace: 'Flightjs / Flight', + webUrl: 'http://127.0.0.1:3000/flightjs/Flight', + topics: [], + forksCount: 0, + avatarUrl: null, + starCount: 0, + visibility: 'private', + openMergeRequestsCount: 10, + openIssuesCount: 37, + descriptionHtml: + 'Dolor dicta rerum et ut eius voluptate earum qui.
', + archived: false, + mergeRequestsAccessLevel: { + stringValue: 'ENABLED', + }, + issuesAccessLevel: { + stringValue: 'ENABLED', + }, + forkingAccessLevel: { + stringValue: 'ENABLED', + }, + userPermissions: { + removeProject: true, + }, + maxAccessLevel: { + integerValue: 30, + }, + __typename: 'Project', + }, + { + id: 'gid://gitlab/Project/6', + nameWithNamespace: 'Jashkenas / Underscore', + webUrl: 'http://127.0.0.1:3000/jashkenas/Underscore', + topics: [], + forksCount: 0, + avatarUrl: null, + starCount: 0, + visibility: 'private', + openMergeRequestsCount: 0, + openIssuesCount: 34, + descriptionHtml: + 'Incidunt est aliquam autem nihil eveniet quis autem.
', + archived: false, + mergeRequestsAccessLevel: { + stringValue: 'ENABLED', + }, + issuesAccessLevel: { + stringValue: 'ENABLED', + }, + forkingAccessLevel: { + stringValue: 'ENABLED', + }, + userPermissions: { + removeProject: true, + }, + maxAccessLevel: { + integerValue: 30, + }, + __typename: 'Project', + }, + { + id: 'gid://gitlab/Project/5', + nameWithNamespace: 'Commit451 / Lab Coat', + webUrl: 'http://127.0.0.1:3000/Commit451/lab-coat', + topics: [], + forksCount: 0, + avatarUrl: null, + starCount: 0, + visibility: 'internal', + openMergeRequestsCount: 3, + openIssuesCount: 49, + descriptionHtml: + 'Sint eos dolorem impedit rerum et.
', + archived: true, + mergeRequestsAccessLevel: { + stringValue: 'ENABLED', + }, + issuesAccessLevel: { + stringValue: 'ENABLED', + }, + forkingAccessLevel: { + stringValue: 'ENABLED', + }, + userPermissions: { + removeProject: true, + }, + maxAccessLevel: { + integerValue: 30, + }, + __typename: 'Project', + }, + { + id: 'gid://gitlab/Project/1', + nameWithNamespace: 'Toolbox / Gitlab Smoke Tests', + webUrl: 'http://127.0.0.1:3000/toolbox/gitlab-smoke-tests', + topics: [], + forksCount: 0, + avatarUrl: null, + starCount: 0, + visibility: 'internal', + openMergeRequestsCount: 20, + openIssuesCount: 34, + descriptionHtml: + 'Veritatis error laboriosam libero autem.
', + archived: false, + mergeRequestsAccessLevel: { + stringValue: 'ENABLED', + }, + issuesAccessLevel: { + stringValue: 'ENABLED', + }, + forkingAccessLevel: { + stringValue: 'ENABLED', + }, + userPermissions: { + removeProject: false, + }, + maxAccessLevel: { + integerValue: 30, + }, + __typename: 'Project', + }, +]; diff --git a/app/assets/javascripts/organizations/shared/graphql/fragments/base_project.fragment.graphql b/app/assets/javascripts/organizations/shared/graphql/fragments/base_project.fragment.graphql new file mode 100644 index 00000000000..bb1625ab53d --- /dev/null +++ b/app/assets/javascripts/organizations/shared/graphql/fragments/base_project.fragment.graphql @@ -0,0 +1,29 @@ +fragment BaseProject on Project { + id + archived + nameWithNamespace + webUrl + topics + forksCount + avatarUrl + starCount + visibility + openMergeRequestsCount + openIssuesCount + descriptionHtml + mergeRequestsAccessLevel { + stringValue + } + issuesAccessLevel { + stringValue + } + forkingAccessLevel { + stringValue + } + userPermissions { + removeProject + } + maxAccessLevel { + integerValue + } +} diff --git a/app/assets/javascripts/organizations/shared/graphql/fragments/project.fragment.graphql b/app/assets/javascripts/organizations/shared/graphql/fragments/project.fragment.graphql new file mode 100644 index 00000000000..e607313de61 --- /dev/null +++ b/app/assets/javascripts/organizations/shared/graphql/fragments/project.fragment.graphql @@ -0,0 +1,5 @@ +#import "./base_project.fragment.graphql" + +fragment Project on Project { + ...BaseProject +} diff --git a/app/assets/javascripts/organizations/shared/graphql/queries/projects.query.graphql b/app/assets/javascripts/organizations/shared/graphql/queries/projects.query.graphql index 0b7cd2680d2..578ceb4d617 100644 --- a/app/assets/javascripts/organizations/shared/graphql/queries/projects.query.graphql +++ b/app/assets/javascripts/organizations/shared/graphql/queries/projects.query.graphql @@ -1,4 +1,5 @@ #import "~/graphql_shared/fragments/page_info.fragment.graphql" +#import "ee_else_ce/organizations/shared/graphql/fragments/project.fragment.graphql" query getOrganizationProjects( $id: OrganizationsOrganizationID! @@ -11,32 +12,7 @@ query getOrganizationProjects( id projects(first: $first, last: $last, before: $before, after: $after) { nodes { - id - nameWithNamespace - webUrl - topics - forksCount - avatarUrl - starCount - visibility - openMergeRequestsCount - openIssuesCount - descriptionHtml - mergeRequestsAccessLevel { - stringValue - } - issuesAccessLevel { - stringValue - } - forkingAccessLevel { - stringValue - } - userPermissions { - removeProject - } - maxAccessLevel { - integerValue - } + ...Project } pageInfo { ...PageInfo diff --git a/app/assets/javascripts/pages/shared/wikis/components/delete_wiki_modal.vue b/app/assets/javascripts/pages/shared/wikis/components/delete_wiki_modal.vue index de85420a976..0c834649e4f 100644 --- a/app/assets/javascripts/pages/shared/wikis/components/delete_wiki_modal.vue +++ b/app/assets/javascripts/pages/shared/wikis/components/delete_wiki_modal.vue @@ -2,6 +2,7 @@ import { GlButton, GlModal, GlModalDirective } from '@gitlab/ui'; import { escape } from 'lodash'; import { s__, __, sprintf } from '~/locale'; +import { isTemplate } from '../utils'; export default { components: { @@ -15,23 +16,23 @@ export default { deleteWikiUrl: { type: String, required: true, - default: '', }, pageTitle: { type: String, required: true, - default: '', }, csrfToken: { type: String, required: true, - default: '', }, }, computed: { + isTemplate, title() { return sprintf( - s__('WikiPageConfirmDelete|Delete page %{pageTitle}?'), + this.isTemplate + ? this.$options.i18n.deleteTemplateTitle + : this.$options.i18n.deletePageTitle, { pageTitle: escape(this.pageTitle), }, @@ -40,13 +41,23 @@ export default { }, primaryProps() { return { - text: this.$options.i18n.deletePageText, + text: this.isTemplate + ? this.$options.i18n.deleteTemplateText + : this.$options.i18n.deletePageText, attributes: { variant: 'danger', 'data-testid': 'confirm-deletion-button', }, }; }, + deleteTemplateText() { + return this.isTemplate + ? this.$options.i18n.deleteTemplateText + : this.$options.i18n.deletePageText; + }, + modalBody() { + return this.isTemplate ? this.$options.i18n.modalBodyTemplate : this.$options.i18n.modalBody; + }, cancelProps() { return { text: this.$options.i18n.cancelButtonText, @@ -60,8 +71,12 @@ export default { }, }, i18n: { + deletePageTitle: s__('WikiPageConfirmDelete|Delete page "%{pageTitle}"?'), + deleteTemplateTitle: s__('WikiPageConfirmDelete|Delete template "%{pageTitle}"?'), deletePageText: s__('WikiPageConfirmDelete|Delete page'), + deleteTemplateText: s__('WikiPageConfirmDelete|Delete template'), modalBody: s__('WikiPageConfirmDelete|Are you sure you want to delete this page?'), + modalBodyTemplate: s__('WikiPageConfirmDelete|Are you sure you want to delete this template?'), cancelButtonText: __('Cancel'), }, modal: { @@ -78,7 +93,7 @@ export default { variant="danger" data-testid="delete-button" > - {{ $options.i18n.deletePageText }} + {{ deleteTemplateText }}