From 7f5e08060f261a63ebf5058a95419da66928173a Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 12 Feb 2021 09:08:48 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .rubocop_manual_todo.yml | 8 - .../pages/search/show/refresh_counts.js | 24 +++ app/assets/javascripts/search/index.js | 2 + .../javascripts/search/store/actions.js | 56 +------ .../search/store/mutation_types.js | 3 - .../javascripts/search/store/mutations.js | 11 -- app/assets/javascripts/search/store/state.js | 1 - .../search/topbar/components/app.vue | 66 +++------ .../search/topbar/components/scope_tabs.vue | 73 --------- .../javascripts/search/topbar/constants.js | 14 -- app/assets/javascripts/search/topbar/index.js | 6 +- app/assets/stylesheets/pages/search.scss | 12 -- app/controllers/concerns/boards_actions.rb | 14 +- .../concerns/multiple_boards_actions.rb | 1 + app/controllers/groups/boards_controller.rb | 23 +++ app/controllers/projects/boards_controller.rb | 22 +++ app/graphql/resolvers/board_resolver.rb | 2 +- app/graphql/resolvers/boards_resolver.rb | 2 +- app/helpers/boards_helper.rb | 3 +- app/helpers/projects_helper.rb | 3 +- app/helpers/search_helper.rb | 42 ++++-- app/models/board.rb | 8 + app/presenters/ci/pipeline_presenter.rb | 3 + app/services/boards/list_service.rb | 8 +- app/services/boards/visits/create_service.rb | 1 + app/views/search/_category.html.haml | 35 +++++ app/views/search/show.html.haml | 3 +- app/views/shared/boards/_show.html.haml | 5 +- ...global-search-scope-tabs-vue-component.yml | 5 - .../unreleased/jimcser-openapi-readme.yml | 5 + ...pdate_merge_request_worker_performance.yml | 5 + doc/api/openapi/img/apiviewer01-fs8.png | Bin 0 -> 79594 bytes doc/api/openapi/img/apiviewer03-fs8.png | Bin 0 -> 72812 bytes doc/api/openapi/img/apiviewer04-fs8.png | Bin 0 -> 77404 bytes doc/api/openapi/openapi_interactive.md | 42 ++++++ doc/development/architecture.md | 81 +++++----- lib/gitlab/git/push.rb | 4 +- locale/gitlab.pot | 6 +- package.json | 8 +- qa/Gemfile | 2 + qa/Rakefile | 2 + qa/bin/qa | 1 + qa/bin/rubymine | 1 + qa/qa/fixtures/auto_devops_rack/Gemfile | 2 + qa/qa/fixtures/auto_devops_rack/Rakefile | 2 + qa/qa/fixtures/auto_devops_rack/config.ru | 2 + qa/qa/page/page_concern.rb | 2 + qa/qa/page/search/results.rb | 2 +- spec/features/global_search_spec.rb | 2 +- .../search/user_searches_for_code_spec.rb | 15 +- .../search/user_searches_for_comments_spec.rb | 2 +- .../search/user_searches_for_users_spec.rb | 4 +- .../features/snippets/search_snippets_spec.rb | 2 +- .../__snapshots__/refresh_counts_spec.js.snap | 7 + .../pages/search/show/refresh_counts_spec.js | 38 +++++ spec/frontend/search/mock_data.js | 25 ---- spec/frontend/search/store/actions_spec.js | 44 ++---- spec/frontend/search/store/mutations_spec.js | 36 +---- .../search/topbar/components/app_spec.js | 14 -- .../topbar/components/scope_tabs_spec.js | 122 --------------- spec/helpers/search_helper_spec.rb | 139 +++++++----------- spec/lib/gitlab/git/push_spec.rb | 10 ++ .../boards_list_service_shared_examples.rb | 28 +--- spec/views/search/show.html.haml_spec.rb | 3 + yarn.lock | 84 ++++++----- 65 files changed, 500 insertions(+), 698 deletions(-) create mode 100644 app/assets/javascripts/pages/search/show/refresh_counts.js delete mode 100644 app/assets/javascripts/search/topbar/components/scope_tabs.vue create mode 100644 app/views/search/_category.html.haml delete mode 100644 changelogs/unreleased/262066-global-search-scope-tabs-vue-component.yml create mode 100644 changelogs/unreleased/jimcser-openapi-readme.yml create mode 100644 changelogs/unreleased/test_update_merge_request_worker_performance.yml create mode 100644 doc/api/openapi/img/apiviewer01-fs8.png create mode 100644 doc/api/openapi/img/apiviewer03-fs8.png create mode 100644 doc/api/openapi/img/apiviewer04-fs8.png create mode 100644 doc/api/openapi/openapi_interactive.md create mode 100644 spec/frontend/pages/search/show/__snapshots__/refresh_counts_spec.js.snap create mode 100644 spec/frontend/pages/search/show/refresh_counts_spec.js delete mode 100644 spec/frontend/search/topbar/components/scope_tabs_spec.js diff --git a/.rubocop_manual_todo.yml b/.rubocop_manual_todo.yml index 57c17da243f..96437f47758 100644 --- a/.rubocop_manual_todo.yml +++ b/.rubocop_manual_todo.yml @@ -2497,14 +2497,6 @@ Style/FrozenStringLiteralComment: - 'bin/secpick' - 'danger/changes_size/Dangerfile' - 'danger/metadata/Dangerfile' - - 'qa/Gemfile' - - 'qa/Rakefile' - - 'qa/bin/qa' - - 'qa/bin/rubymine' - - 'qa/qa/fixtures/auto_devops_rack/Gemfile' - - 'qa/qa/fixtures/auto_devops_rack/Rakefile' - - 'qa/qa/fixtures/auto_devops_rack/config.ru' - - 'qa/qa/page/page_concern.rb' - 'scripts/flaky_examples/detect-new-flaky-examples' - 'scripts/flaky_examples/prune-old-flaky-examples' - 'scripts/gather-test-memory-data' diff --git a/app/assets/javascripts/pages/search/show/refresh_counts.js b/app/assets/javascripts/pages/search/show/refresh_counts.js new file mode 100644 index 00000000000..f3f6312cb7c --- /dev/null +++ b/app/assets/javascripts/pages/search/show/refresh_counts.js @@ -0,0 +1,24 @@ +import axios from '~/lib/utils/axios_utils'; + +function showCount(el, count) { + el.textContent = count; + el.classList.remove('hidden'); +} + +function refreshCount(el) { + const { url } = el.dataset; + + return axios + .get(url) + .then(({ data }) => showCount(el, data.count)) + .catch((e) => { + // eslint-disable-next-line no-console + console.error(`Failed to fetch search count from '${url}'.`, e); + }); +} + +export default function refreshCounts() { + const elements = Array.from(document.querySelectorAll('.js-search-count')); + + return Promise.all(elements.map(refreshCount)); +} diff --git a/app/assets/javascripts/search/index.js b/app/assets/javascripts/search/index.js index 0c5d68ab96b..3050b628cd5 100644 --- a/app/assets/javascripts/search/index.js +++ b/app/assets/javascripts/search/index.js @@ -1,5 +1,6 @@ import setHighlightClass from 'ee_else_ce/search/highlight_blob_search_result'; import Project from '~/pages/projects/project'; +import refreshCounts from '~/pages/search/show/refresh_counts'; import { queryToObject } from '~/lib/utils/url_utility'; import createStore from './store'; import { initTopbar } from './topbar'; @@ -19,5 +20,6 @@ export const initSearchApp = () => { initSearchSort(store); setHighlightClass(query.search); // Code Highlighting + refreshCounts(); // Other Scope Tab Counts Project.initRefSwitcher(); // Code Search Branch Picker }; diff --git a/app/assets/javascripts/search/store/actions.js b/app/assets/javascripts/search/store/actions.js index e1722d8dee3..bdfe966d990 100644 --- a/app/assets/javascripts/search/store/actions.js +++ b/app/assets/javascripts/search/store/actions.js @@ -1,30 +1,9 @@ -import axios from '~/lib/utils/axios_utils'; import Api from '~/api'; import createFlash from '~/flash'; import { __ } from '~/locale'; import { visitUrl, setUrlParams } from '~/lib/utils/url_utility'; import * as types from './mutation_types'; -/* private */ -const getCount = ({ params, state, activeCount }) => { - const globalSearchCountsPath = '/search/count'; - const url = Api.buildUrl(globalSearchCountsPath); - - // count is known for active tab, so return it and skip the Api call - if (params.scope === state.query?.scope) { - return { scope: params.scope, count: activeCount }; - } - - return axios - .get(url, { params }) - .then(({ data }) => { - return { scope: params.scope, count: data.count }; - }) - .catch((e) => { - throw e; - }); -}; - export const fetchGroups = ({ commit }, search) => { commit(types.REQUEST_GROUPS); Api.groups(search) @@ -59,21 +38,6 @@ export const fetchProjects = ({ commit, state }, search) => { } }; -export const fetchSearchCounts = ({ commit, state }, { scopeTabs, activeCount }) => { - commit(types.REQUEST_SEARCH_COUNTS, { scopeTabs, activeCount }); - const promises = scopeTabs.map((scope) => - getCount({ params: { ...state.query, scope }, state, activeCount }), - ); - - Promise.all(promises) - .then((data) => { - commit(types.RECEIVE_SEARCH_COUNTS_SUCCESS, data); - }) - .catch(() => { - createFlash({ message: __('There was an error fetching the Search Counts') }); - }); -}; - export const setQuery = ({ commit }, { key, value }) => { commit(types.SET_QUERY, { key, value }); }; @@ -82,22 +46,6 @@ export const applyQuery = ({ state }) => { visitUrl(setUrlParams({ ...state.query, page: null })); }; -export const resetQuery = ({ state }, snippets = false) => { - let defaultQuery = { - page: null, - state: null, - confidential: null, - nav_source: null, - }; - - if (snippets) { - defaultQuery = { - snippets: true, - group_id: null, - project_id: null, - ...defaultQuery, - }; - } - - visitUrl(setUrlParams({ ...state.query, ...defaultQuery })); +export const resetQuery = ({ state }) => { + visitUrl(setUrlParams({ ...state.query, page: null, state: null, confidential: null })); }; diff --git a/app/assets/javascripts/search/store/mutation_types.js b/app/assets/javascripts/search/store/mutation_types.js index 5ba3845bfcc..a6430b53c4f 100644 --- a/app/assets/javascripts/search/store/mutation_types.js +++ b/app/assets/javascripts/search/store/mutation_types.js @@ -6,7 +6,4 @@ export const REQUEST_PROJECTS = 'REQUEST_PROJECTS'; export const RECEIVE_PROJECTS_SUCCESS = 'RECEIVE_PROJECTS_SUCCESS'; export const RECEIVE_PROJECTS_ERROR = 'RECEIVE_PROJECTS_ERROR'; -export const REQUEST_SEARCH_COUNTS = 'REQUEST_SEARCH_COUNTS'; -export const RECEIVE_SEARCH_COUNTS_SUCCESS = 'RECEIVE_SEARCH_COUNTS_SUCCESS'; - export const SET_QUERY = 'SET_QUERY'; diff --git a/app/assets/javascripts/search/store/mutations.js b/app/assets/javascripts/search/store/mutations.js index 57a577060b3..91d7cf66c8f 100644 --- a/app/assets/javascripts/search/store/mutations.js +++ b/app/assets/javascripts/search/store/mutations.js @@ -1,4 +1,3 @@ -import { ALL_SCOPE_TABS } from '~/search/topbar/constants'; import * as types from './mutation_types'; export default { @@ -24,16 +23,6 @@ export default { state.fetchingProjects = false; state.projects = []; }, - [types.REQUEST_SEARCH_COUNTS](state, { scopeTabs, activeCount }) { - state.inflatedScopeTabs = scopeTabs.map((tab) => { - return { ...ALL_SCOPE_TABS[tab], count: tab === state.query?.scope ? activeCount : '' }; - }); - }, - [types.RECEIVE_SEARCH_COUNTS_SUCCESS](state, data) { - state.inflatedScopeTabs = data.map((tab) => { - return { ...ALL_SCOPE_TABS[tab.scope], count: tab.count }; - }); - }, [types.SET_QUERY](state, { key, value }) { state.query[key] = value; }, diff --git a/app/assets/javascripts/search/store/state.js b/app/assets/javascripts/search/store/state.js index 9528b0400a4..9a0d61d0b93 100644 --- a/app/assets/javascripts/search/store/state.js +++ b/app/assets/javascripts/search/store/state.js @@ -4,6 +4,5 @@ const createState = ({ query }) => ({ fetchingGroups: false, projects: [], fetchingProjects: false, - inflatedScopeTabs: [], }); export default createState; diff --git a/app/assets/javascripts/search/topbar/components/app.vue b/app/assets/javascripts/search/topbar/components/app.vue index c858f1fcc42..639cff591c3 100644 --- a/app/assets/javascripts/search/topbar/components/app.vue +++ b/app/assets/javascripts/search/topbar/components/app.vue @@ -3,7 +3,6 @@ import { mapState, mapActions } from 'vuex'; import { GlForm, GlSearchBoxByType, GlButton } from '@gitlab/ui'; import GroupFilter from './group_filter.vue'; import ProjectFilter from './project_filter.vue'; -import ScopeTabs from './scope_tabs.vue'; export default { name: 'GlobalSearchTopbar', @@ -13,7 +12,6 @@ export default { GroupFilter, ProjectFilter, GlButton, - ScopeTabs, }, props: { groupInitialData: { @@ -26,16 +24,6 @@ export default { required: false, default: () => ({}), }, - scopeTabs: { - type: Array, - required: false, - default: () => [], - }, - count: { - type: String, - required: false, - default: '', - }, }, computed: { ...mapState(['query']), @@ -50,9 +38,6 @@ export default { showFilters() { return !this.query.snippets || this.query.snippets === 'false'; }, - showScopeTabs() { - return this.query.search; - }, }, methods: { ...mapActions(['applyQuery', 'setQuery']), @@ -61,31 +46,28 @@ export default { diff --git a/app/assets/javascripts/search/topbar/components/scope_tabs.vue b/app/assets/javascripts/search/topbar/components/scope_tabs.vue deleted file mode 100644 index 83264a1b411..00000000000 --- a/app/assets/javascripts/search/topbar/components/scope_tabs.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - diff --git a/app/assets/javascripts/search/topbar/constants.js b/app/assets/javascripts/search/topbar/constants.js index ec65667cde3..3944b2c8374 100644 --- a/app/assets/javascripts/search/topbar/constants.js +++ b/app/assets/javascripts/search/topbar/constants.js @@ -19,17 +19,3 @@ export const PROJECT_DATA = { selectedDisplayValue: 'name_with_namespace', itemsDisplayValue: 'name_with_namespace', }; - -export const ALL_SCOPE_TABS = { - blobs: { scope: 'blobs', title: __('Code'), qaSelector: 'code_tab' }, - issues: { scope: 'issues', title: __('Issues') }, - merge_requests: { scope: 'merge_requests', title: __('Merge requests') }, - milestones: { scope: 'milestones', title: __('Milestones') }, - notes: { scope: 'notes', title: __('Comments') }, - wiki_blobs: { scope: 'wiki_blobs', title: __('Wiki') }, - commits: { scope: 'commits', title: __('Commits') }, - epics: { scope: 'epics', title: __('Epics') }, - users: { scope: 'users', title: __('Users') }, - snippet_titles: { scope: 'snippet_titles', title: __('Titles and Descriptions') }, - projects: { scope: 'projects', title: __('Projects'), qaSelector: 'projects_tab' }, -}; diff --git a/app/assets/javascripts/search/topbar/index.js b/app/assets/javascripts/search/topbar/index.js index f9564b5cfbb..87316e10e8d 100644 --- a/app/assets/javascripts/search/topbar/index.js +++ b/app/assets/javascripts/search/topbar/index.js @@ -11,12 +11,10 @@ export const initTopbar = (store) => { return false; } - let { groupInitialData, projectInitialData, scopeTabs } = el.dataset; - const { count } = el.dataset; + let { groupInitialData, projectInitialData } = el.dataset; groupInitialData = JSON.parse(groupInitialData); projectInitialData = JSON.parse(projectInitialData); - scopeTabs = JSON.parse(scopeTabs); return new Vue({ el, @@ -26,8 +24,6 @@ export const initTopbar = (store) => { props: { groupInitialData, projectInitialData, - scopeTabs, - count, }, }); }, diff --git a/app/assets/stylesheets/pages/search.scss b/app/assets/stylesheets/pages/search.scss index a1961d24bbf..cd99c667001 100644 --- a/app/assets/stylesheets/pages/search.scss +++ b/app/assets/stylesheets/pages/search.scss @@ -2,7 +2,6 @@ $search-dropdown-max-height: 400px; $search-avatar-size: 16px; $search-sidebar-min-width: 240px; $search-sidebar-max-width: 300px; -$search-topbar-min-height: 111px; .search-results { .search-result-row { @@ -20,12 +19,6 @@ $search-topbar-min-height: 111px; } } -.search-topbar { - @include media-breakpoint-up(md) { - min-height: $search-topbar-min-height; - } -} - .search-sidebar { @include media-breakpoint-up(md) { min-width: $search-sidebar-min-width; @@ -33,11 +26,6 @@ $search-topbar-min-height: 111px; } } -.search-nav-tabs { - overflow-y: hidden; - flex-wrap: nowrap; -} - .search form:hover, .file-finder-input:hover, .issuable-search-form:hover, diff --git a/app/controllers/concerns/boards_actions.rb b/app/controllers/concerns/boards_actions.rb index b382e338a78..79e6f027c2f 100644 --- a/app/controllers/concerns/boards_actions.rb +++ b/app/controllers/concerns/boards_actions.rb @@ -34,16 +34,26 @@ module BoardsActions def boards strong_memoize(:boards) do - Boards::ListService.new(parent, current_user).execute + existing_boards = boards_finder.execute + if existing_boards.any? + existing_boards + else + # if no board exists, create one + [board_create_service.execute.payload] + end end end def board strong_memoize(:board) do - boards.find(params[:id]) + board_finder.execute.first end end + def board_type + board_klass.to_type + end + def serializer BoardSerializer.new(current_user: current_user) end diff --git a/app/controllers/concerns/multiple_boards_actions.rb b/app/controllers/concerns/multiple_boards_actions.rb index 370b8c72bfe..5206f5759d8 100644 --- a/app/controllers/concerns/multiple_boards_actions.rb +++ b/app/controllers/concerns/multiple_boards_actions.rb @@ -65,6 +65,7 @@ module MultipleBoardsActions private def redirect_to_recent_board + return unless board_type == Board.to_type return if request.format.json? || !parent.multiple_issue_boards_available? || !latest_visited_board redirect_to board_path(latest_visited_board.board) diff --git a/app/controllers/groups/boards_controller.rb b/app/controllers/groups/boards_controller.rb index b34b826a695..fa109021b7d 100644 --- a/app/controllers/groups/boards_controller.rb +++ b/app/controllers/groups/boards_controller.rb @@ -3,6 +3,7 @@ class Groups::BoardsController < Groups::ApplicationController include BoardsActions include RecordUserLastActivity + include Gitlab::Utils::StrongMemoize before_action :authorize_read_board!, only: [:index, :show] before_action :assign_endpoint_vars @@ -14,6 +15,28 @@ class Groups::BoardsController < Groups::ApplicationController private + def board_klass + Board + end + + def boards_finder + strong_memoize :boards_finder do + Boards::ListService.new(parent, current_user) + end + end + + def board_finder + strong_memoize :board_finder do + Boards::ListService.new(parent, current_user, board_id: params[:id]) + end + end + + def board_create_service + strong_memoize :board_create_service do + Boards::CreateService.new(parent, current_user) + end + end + def assign_endpoint_vars @boards_endpoint = group_boards_path(group) @namespace_path = group.to_param diff --git a/app/controllers/projects/boards_controller.rb b/app/controllers/projects/boards_controller.rb index 51c9bf3699a..d2e5d319f96 100644 --- a/app/controllers/projects/boards_controller.rb +++ b/app/controllers/projects/boards_controller.rb @@ -15,6 +15,28 @@ class Projects::BoardsController < Projects::ApplicationController private + def board_klass + Board + end + + def boards_finder + strong_memoize :boards_finder do + Boards::ListService.new(parent, current_user) + end + end + + def board_finder + strong_memoize :board_finder do + Boards::ListService.new(parent, current_user, board_id: params[:id]) + end + end + + def board_create_service + strong_memoize :board_create_service do + Boards::CreateService.new(parent, current_user) + end + end + def assign_endpoint_vars @boards_endpoint = project_boards_path(project) @bulk_issues_path = bulk_update_project_issues_path(project) diff --git a/app/graphql/resolvers/board_resolver.rb b/app/graphql/resolvers/board_resolver.rb index 582707cc1e4..2c2922c3fbf 100644 --- a/app/graphql/resolvers/board_resolver.rb +++ b/app/graphql/resolvers/board_resolver.rb @@ -13,7 +13,7 @@ module Resolvers def resolve(id: nil) return unless parent - ::Boards::ListService.new(parent, context[:current_user], board_id: extract_board_id(id)).execute(create_default_board: false).first + ::Boards::ListService.new(parent, context[:current_user], board_id: extract_board_id(id)).execute.first rescue ActiveRecord::RecordNotFound nil end diff --git a/app/graphql/resolvers/boards_resolver.rb b/app/graphql/resolvers/boards_resolver.rb index cdb15dc8f37..be2f22175dc 100644 --- a/app/graphql/resolvers/boards_resolver.rb +++ b/app/graphql/resolvers/boards_resolver.rb @@ -16,7 +16,7 @@ module Resolvers return Board.none unless parent - ::Boards::ListService.new(parent, context[:current_user], board_id: extract_board_id(id)).execute(create_default_board: false) + ::Boards::ListService.new(parent, context[:current_user], board_id: extract_board_id(id)).execute rescue ActiveRecord::RecordNotFound Board.none end diff --git a/app/helpers/boards_helper.rb b/app/helpers/boards_helper.rb index c827fb4dd95..80b6c62cb0b 100644 --- a/app/helpers/boards_helper.rb +++ b/app/helpers/boards_helper.rb @@ -21,7 +21,8 @@ module BoardsHelper group_id: @group&.id, labels_filter_base_path: build_issue_link_base, labels_fetch_path: labels_fetch_path, - labels_manage_path: labels_manage_path + labels_manage_path: labels_manage_path, + board_type: board.to_type } end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 0d43032a184..a2e9952f350 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -511,8 +511,7 @@ module ProjectsHelper commits: :download_code, merge_requests: :read_merge_request, notes: [:read_merge_request, :download_code, :read_issue, :read_snippet], - members: :read_project_member, - wiki_blobs: :read_wiki + members: :read_project_member ) end diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb index 1a5b578cc75..a7acc0cd7db 100644 --- a/app/helpers/search_helper.rb +++ b/app/helpers/search_helper.rb @@ -1,8 +1,16 @@ # frozen_string_literal: true module SearchHelper - PROJECT_SEARCH_TABS = %i{blobs issues merge_requests milestones notes wiki_blobs commits}.freeze - BASIC_SEARCH_TABS = %i{projects issues merge_requests milestones}.freeze + SEARCH_GENERIC_PARAMS = [ + :search, + :scope, + :project_id, + :group_id, + :repository_ref, + :snippets, + :sort, + :force_search_results + ].freeze def search_autocomplete_opts(term) return unless current_user @@ -284,19 +292,27 @@ module SearchHelper Sanitize.clean(str) end - def search_nav_tabs - return [:snippet_titles] if !@project && @show_snippets + def search_filter_link(scope, label, data: {}, search: {}) + search_params = params + .merge(search) + .merge({ scope: scope }) + .permit(SEARCH_GENERIC_PARAMS) - tabs = - if @project - PROJECT_SEARCH_TABS.select { |tab| project_search_tabs?(tab) } - else - BASIC_SEARCH_TABS.dup + if @scope == scope + li_class = 'active' + count = @search_results.formatted_count(scope) + else + badge_class = 'js-search-count hidden' + badge_data = { url: search_count_path(search_params) } + end + + content_tag :li, class: li_class, data: data do + link_to search_path(search_params) do + concat label + concat ' ' + concat content_tag(:span, count, class: ['badge badge-pill', badge_class], data: badge_data) end - - tabs << :users if show_user_search_tab? - - tabs + end end def search_filter_input_options(type, placeholder = _('Search or filter results...')) diff --git a/app/models/board.rb b/app/models/board.rb index a57d101b30a..85fad762ebe 100644 --- a/app/models/board.rb +++ b/app/models/board.rb @@ -44,6 +44,14 @@ class Board < ApplicationRecord def scoped? false end + + def self.to_type + name.demodulize + end + + def to_type + self.class.to_type + end end Board.prepend_if_ee('EE::Board') diff --git a/app/presenters/ci/pipeline_presenter.rb b/app/presenters/ci/pipeline_presenter.rb index f3bb63b31c3..0c68c33cbbe 100644 --- a/app/presenters/ci/pipeline_presenter.rb +++ b/app/presenters/ci/pipeline_presenter.rb @@ -11,6 +11,9 @@ module Ci { unknown_failure: 'Unknown pipeline failure!', config_error: 'CI/CD YAML configuration error!', external_validation_failure: 'External pipeline validation failed!', + activity_limit_exceeded: 'Pipeline activity limit exceeded!', + size_limit_exceeded: 'Pipeline size limit exceeded!', + job_activity_limit_exceeded: 'Pipeline job activity limit exceeded!', deployments_limit_exceeded: 'Pipeline deployments limit exceeded!' } end diff --git a/app/services/boards/list_service.rb b/app/services/boards/list_service.rb index 729bca6580e..80ceb91f56d 100644 --- a/app/services/boards/list_service.rb +++ b/app/services/boards/list_service.rb @@ -2,9 +2,7 @@ module Boards class ListService < Boards::BaseService - def execute(create_default_board: true) - create_board! if create_default_board && parent.boards.empty? - + def execute find_boards end @@ -18,10 +16,6 @@ module Boards parent.boards.first_board end - def create_board! - Boards::CreateService.new(parent, current_user).execute - end - def find_boards found = if parent.multiple_issue_boards_available? diff --git a/app/services/boards/visits/create_service.rb b/app/services/boards/visits/create_service.rb index e2adf755511..428ed1a8bcc 100644 --- a/app/services/boards/visits/create_service.rb +++ b/app/services/boards/visits/create_service.rb @@ -5,6 +5,7 @@ module Boards class CreateService < Boards::BaseService def execute(board) return unless current_user && Gitlab::Database.read_write? + return unless board.is_a?(Board) # other board types do not support board visits yet if parent.is_a?(Group) BoardGroupRecentVisit.visited!(current_user, board) diff --git a/app/views/search/_category.html.haml b/app/views/search/_category.html.haml new file mode 100644 index 00000000000..f094a6f5e3b --- /dev/null +++ b/app/views/search/_category.html.haml @@ -0,0 +1,35 @@ +- users = capture_haml do + - if show_user_search_tab? + = search_filter_link 'users', _("Users") + +.scrolling-tabs-container.inner-page-scroll-tabs.is-smaller + .fade-left= sprite_icon('chevron-lg-left', size: 12) + .fade-right= sprite_icon('chevron-lg-right', size: 12) + %ul.nav-links.search-filter.scrolling-tabs.nav.nav-tabs + - if @project + - if project_search_tabs?(:blobs) + = search_filter_link 'blobs', _("Code"), data: { qa_selector: 'code_tab' } + - if project_search_tabs?(:issues) + = search_filter_link 'issues', _("Issues") + - if project_search_tabs?(:merge_requests) + = search_filter_link 'merge_requests', _("Merge requests") + - if project_search_tabs?(:milestones) + = search_filter_link 'milestones', _("Milestones") + - if project_search_tabs?(:notes) + = search_filter_link 'notes', _("Comments") + - if project_search_tabs?(:wiki) + = search_filter_link 'wiki_blobs', _("Wiki") + - if project_search_tabs?(:commits) + = search_filter_link 'commits', _("Commits") + = users + + - elsif @show_snippets + = search_filter_link 'snippet_titles', _("Titles and Descriptions"), search: { snippets: true, group_id: nil, project_id: nil } + - else + = search_filter_link 'projects', _("Projects"), data: { qa_selector: 'projects_tab' } + = search_filter_link 'issues', _("Issues") + = search_filter_link 'merge_requests', _("Merge requests") + = search_filter_link 'milestones', _("Milestones") + = render_if_exists 'search/epics_filter_link' + = render_if_exists 'search/category_elasticsearch' + = users diff --git a/app/views/search/show.html.haml b/app/views/search/show.html.haml index c0dca74bb8f..d54310bfa82 100644 --- a/app/views/search/show.html.haml +++ b/app/views/search/show.html.haml @@ -16,6 +16,7 @@ = render_if_exists 'search/form_elasticsearch', attrs: { class: 'mb-2 mb-sm-0 align-self-center' } .gl-mt-3 - #js-search-topbar.search-topbar{ data: { "group-initial-data": @group.to_json, "project-initial-data": project_attributes.to_json, "scope-tabs": search_nav_tabs.to_json, count: @search_results&.formatted_count(@scope) } } + #js-search-topbar{ data: { "group-initial-data": @group.to_json, "project-initial-data": project_attributes.to_json } } - if @search_term + = render 'search/category' = render 'search/results' diff --git a/app/views/shared/boards/_show.html.haml b/app/views/shared/boards/_show.html.haml index e4222d8a4fe..ababbdc7eb9 100644 --- a/app/views/shared/boards/_show.html.haml +++ b/app/views/shared/boards/_show.html.haml @@ -6,7 +6,10 @@ - @no_breadcrumb_container = true - @no_container = true - @content_class = "issue-boards-content js-focus-mode-board" -- breadcrumb_title _("Issue Boards") +- if board.to_type == "EpicBoard" + - breadcrumb_title _("Epic Boards") +- else + - breadcrumb_title _("Issue Boards") - page_title("#{board.name}", _("Boards")) - add_page_specific_style 'page_bundles/boards' diff --git a/changelogs/unreleased/262066-global-search-scope-tabs-vue-component.yml b/changelogs/unreleased/262066-global-search-scope-tabs-vue-component.yml deleted file mode 100644 index 4917c824150..00000000000 --- a/changelogs/unreleased/262066-global-search-scope-tabs-vue-component.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Change search tab to Vue component -merge_request: 52018 -author: -type: changed diff --git a/changelogs/unreleased/jimcser-openapi-readme.yml b/changelogs/unreleased/jimcser-openapi-readme.yml new file mode 100644 index 00000000000..ee693d76727 --- /dev/null +++ b/changelogs/unreleased/jimcser-openapi-readme.yml @@ -0,0 +1,5 @@ +--- +title: Adds README to OpenAPI docs +merge_request: 52637 +author: Jim Cser @jimcser +type: added diff --git a/changelogs/unreleased/test_update_merge_request_worker_performance.yml b/changelogs/unreleased/test_update_merge_request_worker_performance.yml new file mode 100644 index 00000000000..6aea28b2be6 --- /dev/null +++ b/changelogs/unreleased/test_update_merge_request_worker_performance.yml @@ -0,0 +1,5 @@ +--- +title: Speed up update merge request worker by memoizing whether a push is a force or not +merge_request: 53536 +author: +type: performance diff --git a/doc/api/openapi/img/apiviewer01-fs8.png b/doc/api/openapi/img/apiviewer01-fs8.png new file mode 100644 index 0000000000000000000000000000000000000000..0a2f7062cc8fba54c48f6b2e17650b0308945dbe GIT binary patch literal 79594 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 literal 0 HcmV?d00001 diff --git a/doc/api/openapi/img/apiviewer03-fs8.png b/doc/api/openapi/img/apiviewer03-fs8.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa00e830e7b9c415d4aa77373a03e00552cfb6f GIT binary patch literal 72812 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 literal 0 HcmV?d00001 diff --git a/doc/api/openapi/openapi_interactive.md b/doc/api/openapi/openapi_interactive.md new file mode 100644 index 00000000000..0f1544b139d --- /dev/null +++ b/doc/api/openapi/openapi_interactive.md @@ -0,0 +1,42 @@ +--- +stage: none +group: unassigned +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 +--- + +# Interactive API documentation + +Introduces the interactive documentation tool for the GitLab API. + +## About the OpenAPI specification + +The [OpenAPI specification](https://swagger.io/specification/) (formerly called Swagger) defines a standard, language-agnostic interface to RESTful APIs. OpenAPI definition files are written in the YAML format, which is automatically rendered by the GitLab browser into a more human-readable interface. For general information about the GitLab APIs, see [API Docs](../README.md). + +## Overview + +The [interactive API documentation tool](openapi.yaml) allows API testing directly on the GitLab.com +website. Only a few of the available endpoints are documented with the OpenAPI spec, but the current +list demonstrates the functionality of the tool. + +![API viewer screenshot](img/apiviewer01-fs8.png) + +## Endpoint parameters + +When you expand an endpoint listing, you'll see a description, input parameters (if required), +and example server responses. Some parameters include a default or a list of allowed values. + +![API viewer screenshot](img/apiviewer04-fs8.png) + +## Starting an interactive sesssion + +A [Personal access token](../../user/profile/personal_access_tokens.md) (PAT) is one way to +start an interactive session. To do this, select **Authorize** from the main page, and a +dialog box prompts you to enter your PAT, which is valid for the current web session. + +To test the endpoint, first select **Try it out** on the endpoint definition page. Input the parameters +as required, then select **Execute**. In the following example, we executed a request for the `version` +endpoint (no parameters required). The tool shows the `curl` command and URL of the request, followed +by the server responses that are returned. You can create new responses by editing the relevant parameters +and then select **Execute** once again. + +![API viewer screenshot](img/apiviewer03-fs8.png) diff --git a/doc/development/architecture.md b/doc/development/architecture.md index 3aab57d8e15..02430f39ac8 100644 --- a/doc/development/architecture.md +++ b/doc/development/architecture.md @@ -233,46 +233,47 @@ Table description links: - [Source](../install/installation.md) - [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit) -| Component | Description | Omnibus GitLab | GitLab chart | Minikube Minimal | GitLab.com | Source | GDK | CE/EE | -|-------------------------------------------------------|----------------------------------------------------------------------|:--------------:|:------------:|:----------------:|:----------:|:------:|:---:|:-------:| -| [Certificate Management](#certificate-management) | TLS Settings, Let's Encrypt | ✅ | ✅ | ⚙ | ✅ | ⚙ | ⚙ | CE & EE | -| [Consul](#consul) | Database node discovery, failover | ⚙ | ❌ | ❌ | ✅ | ❌ | ❌ | EE Only | -| [Database Migrations](#database-migrations) | Database migrations | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | -| [Elasticsearch](#elasticsearch) | Improved search within GitLab | ⤓ | ⤓ | ⤓ | ✅ | ⤓ | ⤓ | EE Only | -| [Gitaly](#gitaly) | Git RPC service for handling all Git calls made by GitLab | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | -| [GitLab Exporter](#gitlab-exporter) | Generates a variety of GitLab metrics | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | CE & EE | -| [GitLab Geo Node](#gitlab-geo) | Geographically distributed GitLab nodes | ⚙ | ⚙ | ❌ | ✅ | ❌ | ⚙ | EE Only | -| [GitLab Managed Apps](#gitlab-managed-apps) | Deploy Helm, Ingress, Cert-Manager, Prometheus, GitLab Runner, JupyterHub, or Knative to a cluster | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | CE & EE | -| [GitLab Pages](#gitlab-pages) | Hosts static websites | ⚙ | ❌ | ❌ | ✅ | ⚙ | ⚙ | CE & EE | -| [GitLab Kubernetes Agent](#gitlab-kubernetes-agent) | Integrate Kubernetes clusters in a cloud-native way | ⚙ | ⚙ | ❌ | ❌ | ⤓ | ⚙ | EE Only | -| [GitLab self-monitoring: Alertmanager](#alertmanager) | Deduplicates, groups, and routes alerts from Prometheus | ⚙ | ✅ | ⚙ | ✅ | ❌ | ❌ | CE & EE | -| [GitLab self-monitoring: Grafana](#grafana) | Metrics dashboard | ✅ | ⚙ | ⤓ | ✅ | ❌ | ❌ | CE & EE | -| [GitLab self-monitoring: Jaeger](#jaeger) | View traces generated by the GitLab instance | ❌ | ⚙ | ❌ | ❌ | ⤓ | ⚙ | CE & EE | -| [GitLab self-monitoring: Prometheus](#prometheus) | Time-series database, metrics collection, and query service | ✅ | ✅ | ⚙ | ✅ | ❌ | ❌ | CE & EE | -| [GitLab self-monitoring: Sentry](#sentry) | Track errors generated by the GitLab instance | ⤓ | ⤓ | ❌ | ✅ | ⤓ | ⤓ | CE & EE | -| [GitLab Shell](#gitlab-shell) | Handles `git` over SSH sessions | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | -| [GitLab Workhorse](#gitlab-workhorse) | Smart reverse proxy, handles large HTTP requests | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | -| [Inbound email (SMTP)](#inbound-email) | Receive messages to update issues | ⤓ | ⚙ | ⤓ | ✅ | ⤓ | ⤓ | CE & EE | -| [Jaeger integration](#jaeger) | Distributed tracing for deployed apps | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | EE Only | -| [LDAP Authentication](#ldap-authentication) | Authenticate users against centralized LDAP directory | ⤓ | ⤓ | ⤓ | ❌ | ⤓ | ⤓ | CE & EE | -| [Mattermost](#mattermost) | Open-source Slack alternative | ⚙ | ⤓ | ⤓ | ⤓ | ❌ | ❌ | CE & EE | -| [MinIO](#minio) | Object storage service | ⤓ | ✅ | ✅ | ✅ | ❌ | ⚙ | CE & EE | -| [NGINX](#nginx) | Routes requests to appropriate components, terminates SSL | ✅ | ✅ | ⚙ | ✅ | ⤓ | ❌ | CE & EE | -| [Node Exporter](#node-exporter) | Prometheus endpoint with system metrics | ✅ | N/A | N/A | ✅ | ❌ | ❌ | CE & EE | -| [Outbound email (SMTP)](#outbound-email) | Send email messages to users | ⤓ | ⚙ | ⤓ | ✅ | ⤓ | ⤓ | CE & EE | -| [Patroni](#patroni) | Manage PostgreSQL HA cluster leader selection and replication | ⚙ | ❌ | ❌ | ✅ | ❌ | ❌ | EE Only | -| [PgBouncer Exporter](#pgbouncer-exporter) | Prometheus endpoint with PgBouncer metrics | ⚙ | ❌ | ❌ | ✅ | ❌ | ❌ | CE & EE | -| [PgBouncer](#pgbouncer) | Database connection pooling, failover | ⚙ | ❌ | ❌ | ✅ | ❌ | ❌ | EE Only | -| [PostgreSQL Exporter](#postgresql-exporter) | Prometheus endpoint with PostgreSQL metrics | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | CE & EE | -| [PostgreSQL](#postgresql) | Database | ✅ | ✅ | ✅ | ✅ | ⤓ | ✅ | CE & EE | -| [Praefect](#praefect) | A transparent proxy between any Git client and Gitaly storage nodes. | ✅ | ⚙ | ❌ | ✅ | ⚙ | ✅ | CE & EE | -| [Redis Exporter](#redis-exporter) | Prometheus endpoint with Redis metrics | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | CE & EE | -| [Redis](#redis) | Caching service | ✅ | ✅ | ✅ | ✅ | ⤓ | ✅ | CE & EE | -| [Registry](#registry) | Container registry, allows pushing and pulling of images | ⚙ | ✅ | ✅ | ✅ | ⤓ | ⚙ | CE & EE | -| [Runner](#gitlab-runner) | Executes GitLab CI/CD jobs | ⤓ | ✅ | ⚙ | ✅ | ⚙ | ⚙ | CE & EE | -| [Sentry integration](#sentry) | Error tracking for deployed apps | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | CE & EE | -| [Sidekiq](#sidekiq) | Background jobs processor | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | CE & EE | -| [Puma (GitLab Rails)](#puma) | Handles requests for the web interface and API | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | +| Component | Description | Omnibus GitLab | GitLab Environment Toolkit (GET) - Omnibus | GitLab chart | Minikube Minimal | GitLab.com | Source | GDK | CE/EE | +|-------------------------------------------------------|----------------------------------------------------------------------|:--------------:|:--------------:|:------------:|:----------------:|:----------:|:------:|:---:|:-------:| +| [Certificate Management](#certificate-management) | TLS Settings, Let's Encrypt | ✅ | ✅ | ✅ | ⚙ | ✅ | ⚙ | ⚙ | CE & EE | +| [Consul](#consul) | Database node discovery, failover | ⚙ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | EE Only | +| [Database Migrations](#database-migrations) | Database migrations | ✅ | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | +| [Elasticsearch](#elasticsearch) | Improved search within GitLab | ⤓ | ⚙ | ⤓ | ⤓ | ✅ | ⤓ | ⤓ | EE Only | +| [Gitaly](#gitaly) | Git RPC service for handling all Git calls made by GitLab | ✅ | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | +| [GitLab Exporter](#gitlab-exporter) | Generates a variety of GitLab metrics | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | CE & EE | +| [GitLab Geo Node](#gitlab-geo) | Geographically distributed GitLab nodes | ⚙ | ⚙ | ❌ | ❌ | ✅ | ❌ | ⚙ | EE Only | +| [GitLab Kubernetes Agent](#gitlab-kubernetes-agent) | Integrate Kubernetes clusters in a cloud-native way | ⚙ | ⚙ | ⚙ | ❌ | ❌ | ⤓ | ⚙ | EE Only | +| [GitLab Managed Apps](#gitlab-managed-apps) | Deploy Helm, Ingress, Cert-Manager, Prometheus, GitLab Runner, JupyterHub, or Knative to a cluster | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | CE & EE | +| [GitLab Pages](#gitlab-pages) | Hosts static websites | ⚙ | ⚙ | ❌ | ❌ | ✅ | ⚙ | ⚙ | CE & EE | +| [GitLab Kubernetes Agent](#gitlab-kubernetes-agent) | Integrate Kubernetes clusters in a cloud-native way | ⚙ | ⚙ | ⚙ | ❌ | ❌ | ⤓ | ⚙ | EE Only | +| [GitLab self-monitoring: Alertmanager](#alertmanager) | Deduplicates, groups, and routes alerts from Prometheus | ⚙ | ⚙ | ✅ | ⚙ | ✅ | ❌ | ❌ | CE & EE | +| [GitLab self-monitoring: Grafana](#grafana) | Metrics dashboard | ✅ | ✅ | ⚙ | ⤓ | ✅ | ❌ | ❌ | CE & EE | +| [GitLab self-monitoring: Jaeger](#jaeger) | View traces generated by the GitLab instance | ❌ | ⚙ | ⚙ | ❌ | ❌ | ⤓ | ⚙ | CE & EE | +| [GitLab self-monitoring: Prometheus](#prometheus) | Time-series database, metrics collection, and query service | ✅ | ✅ | ✅ | ⚙ | ✅ | ❌ | ❌ | CE & EE | +| [GitLab self-monitoring: Sentry](#sentry) | Track errors generated by the GitLab instance | ⤓ | ⤓ | ⤓ | ❌ | ✅ | ⤓ | ⤓ | CE & EE | +| [GitLab Shell](#gitlab-shell) | Handles `git` over SSH sessions | ✅ | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | +| [GitLab Workhorse](#gitlab-workhorse) | Smart reverse proxy, handles large HTTP requests | ✅ | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | +| [Inbound email (SMTP)](#inbound-email) | Receive messages to update issues | ⤓ | ⤓ | ⚙ | ⤓ | ✅ | ⤓ | ⤓ | CE & EE | +| [Jaeger integration](#jaeger) | Distributed tracing for deployed apps | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | EE Only | +| [LDAP Authentication](#ldap-authentication) | Authenticate users against centralized LDAP directory | ⤓ | ⤓ | ⤓ | ⤓ | ❌ | ⤓ | ⤓ | CE & EE | +| [Mattermost](#mattermost) | Open-source Slack alternative | ⚙ | ⚙ | ⤓ | ⤓ | ⤓ | ❌ | ❌ | CE & EE | +| [MinIO](#minio) | Object storage service | ⤓ | ⤓ | ✅ | ✅ | ✅ | ❌ | ⚙ | CE & EE | +| [NGINX](#nginx) | Routes requests to appropriate components, terminates SSL | ✅ | ✅ | ✅ | ⚙ | ✅ | ⤓ | ❌ | CE & EE | +| [Node Exporter](#node-exporter) | Prometheus endpoint with system metrics | ✅ | ✅ | N/A | N/A | ✅ | ❌ | ❌ | CE & EE | +| [Outbound email (SMTP)](#outbound-email) | Send email messages to users | ⤓ | ⤓ | ⚙ | ⤓ | ✅ | ⤓ | ⤓ | CE & EE | +| [Patroni](#patroni) | Manage PostgreSQL HA cluster leader selection and replication | ⚙ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | EE Only | +| [PgBouncer Exporter](#pgbouncer-exporter) | Prometheus endpoint with PgBouncer metrics | ⚙ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | CE & EE | +| [PgBouncer](#pgbouncer) | Database connection pooling, failover | ⚙ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | EE Only | +| [PostgreSQL Exporter](#postgresql-exporter) | Prometheus endpoint with PostgreSQL metrics | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | CE & EE | +| [PostgreSQL](#postgresql) | Database | ✅ | ✅ | ✅ | ✅ | ✅ | ⤓ | ✅ | CE & EE | +| [Praefect](#praefect) | A transparent proxy between any Git client and Gitaly storage nodes. | ✅ | ✅ | ⚙ | ❌ | ✅ | ⚙ | ✅ | CE & EE | +| [Puma (GitLab Rails)](#puma) | Handles requests for the web interface and API | ✅ | ✅ | ✅ | ✅ | ✅ | ⚙ | ✅ | CE & EE | +| [Redis Exporter](#redis-exporter) | Prometheus endpoint with Redis metrics | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | CE & EE | +| [Redis](#redis) | Caching service | ✅ | ✅ | ✅ | ✅ | ✅ | ⤓ | ✅ | CE & EE | +| [Registry](#registry) | Container registry, allows pushing and pulling of images | ⚙ | ⚙ | ✅ | ✅ | ✅ | ⤓ | ⚙ | CE & EE | +| [Runner](#gitlab-runner) | Executes GitLab CI/CD jobs | ⤓ | ⤓ | ✅ | ⚙ | ✅ | ⚙ | ⚙ | CE & EE | +| [Sentry integration](#sentry) | Error tracking for deployed apps | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | ⤓ | CE & EE | +| [Sidekiq](#sidekiq) | Background jobs processor | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | CE & EE | ### Component details diff --git a/lib/gitlab/git/push.rb b/lib/gitlab/git/push.rb index b6577ba17f1..3d533a5185f 100644 --- a/lib/gitlab/git/push.rb +++ b/lib/gitlab/git/push.rb @@ -33,7 +33,9 @@ module Gitlab end def force_push? - Gitlab::Checks::ForcePush.force_push?(@project, @oldrev, @newrev) + strong_memoize(:force_push) do + Gitlab::Checks::ForcePush.force_push?(@project, @oldrev, @newrev) + end end def branch_push? diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 7ffaa21157f..4d3a62b20a1 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -11523,6 +11523,9 @@ msgstr "" msgid "Epic" msgstr "" +msgid "Epic Boards" +msgstr "" + msgid "Epic cannot be found." msgstr "" @@ -29563,9 +29566,6 @@ msgstr "" msgid "There was an error fetching the Node's Groups" msgstr "" -msgid "There was an error fetching the Search Counts" -msgstr "" - msgid "There was an error fetching the deploy freezes." msgstr "" diff --git a/package.json b/package.json index 753e051b81a..b7947982c09 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "autosize": "^4.0.2", "aws-sdk": "^2.637.0", "axios": "^0.20.0", - "babel-loader": "^8.0.6", + "babel-loader": "^8.2.2", "babel-plugin-lodash": "^3.3.4", "bootstrap": "4.4.1", "brace-expansion": "^1.1.8", @@ -69,7 +69,7 @@ "codemirror": "^5.48.4", "codesandbox-api": "0.0.23", "compression-webpack-plugin": "^5.0.2", - "copy-webpack-plugin": "^5.0.5", + "copy-webpack-plugin": "^5.1.2", "core-js": "^3.8.3", "cron-validator": "^1.1.1", "cropper": "^2.3.0", @@ -125,7 +125,7 @@ "prosemirror-markdown": "^1.3.0", "prosemirror-model": "^1.6.4", "raphael": "^2.2.7", - "raw-loader": "^4.0.0", + "raw-loader": "^4.0.2", "select2": "3.5.2-browserify", "smooshpack": "^0.0.62", "sortablejs": "^1.10.2", @@ -154,7 +154,7 @@ "vuex": "^3.6.0", "web-vitals": "^0.2.4", "webpack": "^4.46.0", - "webpack-bundle-analyzer": "^3.6.0", + "webpack-bundle-analyzer": "^3.9.0", "webpack-cli": "^3.3.12", "webpack-stats-plugin": "^0.3.1", "worker-loader": "^2.0.0", diff --git a/qa/Gemfile b/qa/Gemfile index da45ba3b955..f55d27c159b 100644 --- a/qa/Gemfile +++ b/qa/Gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source 'https://rubygems.org' gem 'gitlab-qa' diff --git a/qa/Rakefile b/qa/Rakefile index 6bafec2a67d..0a040f0aee7 100644 --- a/qa/Rakefile +++ b/qa/Rakefile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative 'qa/tools/revoke_all_personal_access_tokens' require_relative 'qa/tools/delete_subgroups' require_relative 'qa/tools/generate_perf_testdata' diff --git a/qa/bin/qa b/qa/bin/qa index cbaad4bd7ad..4328adf719b 100755 --- a/qa/bin/qa +++ b/qa/bin/qa @@ -1,4 +1,5 @@ #!/usr/bin/env ruby +# frozen_string_literal: true require_relative '../qa' diff --git a/qa/bin/rubymine b/qa/bin/rubymine index 0be0cf0ec33..7db50f4aade 100755 --- a/qa/bin/rubymine +++ b/qa/bin/rubymine @@ -1,4 +1,5 @@ #!/usr/bin/env ruby +# frozen_string_literal: true require_relative '../qa' diff --git a/qa/qa/fixtures/auto_devops_rack/Gemfile b/qa/qa/fixtures/auto_devops_rack/Gemfile index fc7514242d0..2c7c77adf94 100644 --- a/qa/qa/fixtures/auto_devops_rack/Gemfile +++ b/qa/qa/fixtures/auto_devops_rack/Gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source 'https://rubygems.org' gem 'rack' gem 'rake' diff --git a/qa/qa/fixtures/auto_devops_rack/Rakefile b/qa/qa/fixtures/auto_devops_rack/Rakefile index c865c9aaac1..a6d08103d55 100644 --- a/qa/qa/fixtures/auto_devops_rack/Rakefile +++ b/qa/qa/fixtures/auto_devops_rack/Rakefile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'rake/testtask' task default: %w[test] diff --git a/qa/qa/fixtures/auto_devops_rack/config.ru b/qa/qa/fixtures/auto_devops_rack/config.ru index e990662145a..aea28ef1893 100644 --- a/qa/qa/fixtures/auto_devops_rack/config.ru +++ b/qa/qa/fixtures/auto_devops_rack/config.ru @@ -1 +1,3 @@ +# frozen_string_literal: true + run lambda { |env| [200, { 'Content-Type' => 'text/plain' }, StringIO.new("Hello World! #{ENV['OPTIONAL_MESSAGE']}\n")] } diff --git a/qa/qa/page/page_concern.rb b/qa/qa/page/page_concern.rb index 6ba2d27f574..cf1153c0ca3 100644 --- a/qa/qa/page/page_concern.rb +++ b/qa/qa/page/page_concern.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module QA module Page module PageConcern diff --git a/qa/qa/page/search/results.rb b/qa/qa/page/search/results.rb index 7dab3881ede..3f7aa837d3c 100644 --- a/qa/qa/page/search/results.rb +++ b/qa/qa/page/search/results.rb @@ -4,7 +4,7 @@ module QA module Page module Search class Results < QA::Page::Base - view 'app/assets/javascripts/search/topbar/constants.js' do + view 'app/views/search/_category.html.haml' do element :code_tab element :projects_tab end diff --git a/spec/features/global_search_spec.rb b/spec/features/global_search_spec.rb index 0fab274e1f7..19fb8e5f52c 100644 --- a/spec/features/global_search_spec.rb +++ b/spec/features/global_search_spec.rb @@ -28,7 +28,7 @@ RSpec.describe 'Global search' do create_list(:issue, 2, project: project, title: 'initial') end - it "has a pagination", :js do + it "has a pagination" do submit_search('initial') select_search_scope('Issues') diff --git a/spec/features/search/user_searches_for_code_spec.rb b/spec/features/search/user_searches_for_code_spec.rb index 14a8176adec..ee3717b3e42 100644 --- a/spec/features/search/user_searches_for_code_spec.rb +++ b/spec/features/search/user_searches_for_code_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User searches for code', :js do +RSpec.describe 'User searches for code' do let(:user) { create(:user) } let(:project) { create(:project, :repository, namespace: user.namespace) } @@ -16,7 +16,6 @@ RSpec.describe 'User searches for code', :js do visit(project_path(project)) submit_search('application.js') - select_search_scope('Code') expect(page).to have_selector('.results', text: 'application.js') @@ -25,7 +24,7 @@ RSpec.describe 'User searches for code', :js do expect(page).to have_link('application.js', href: /master\/files\/js\/application.js/) end - context 'when on a project page' do + context 'when on a project page', :js do before do visit(search_path) find('[data-testid="project-filter"]').click @@ -49,7 +48,7 @@ RSpec.describe 'User searches for code', :js do expect(current_url).to match(/master\/.gitignore#L3/) end - it 'search multiple words with refs switching' do + it 'search mutiple words with refs switching' do expected_result = 'Use `snake_case` for naming files' search = 'for naming files' @@ -68,7 +67,7 @@ RSpec.describe 'User searches for code', :js do end end - context 'search code within refs' do + context 'search code within refs', :js do let(:ref_name) { 'v1.0.0' } before do @@ -86,9 +85,9 @@ RSpec.describe 'User searches for code', :js do expect(find('.js-project-refs-dropdown')).to have_text(ref_name) end - # this example is use to test the design that the refs is not - # only represent the branch as well as the tags. - it 'ref switcher list all the branches and tags' do + # this example is use to test the desgine that the refs is not + # only repersent the branch as well as the tags. + it 'ref swither list all the branchs and tags' do find('.js-project-refs-dropdown').click expect(find('.dropdown-page-one .dropdown-content')).to have_link('sha-starting-with-large-number') expect(find('.dropdown-page-one .dropdown-content')).to have_link('v1.0.0') diff --git a/spec/features/search/user_searches_for_comments_spec.rb b/spec/features/search/user_searches_for_comments_spec.rb index 4bdaed970f6..2a12b22b457 100644 --- a/spec/features/search/user_searches_for_comments_spec.rb +++ b/spec/features/search/user_searches_for_comments_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User searches for comments', :js do +RSpec.describe 'User searches for comments' do let(:project) { create(:project, :repository) } let(:user) { create(:user) } diff --git a/spec/features/search/user_searches_for_users_spec.rb b/spec/features/search/user_searches_for_users_spec.rb index 70fb7166b21..826ed73c9bf 100644 --- a/spec/features/search/user_searches_for_users_spec.rb +++ b/spec/features/search/user_searches_for_users_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User searches for users', :js do +RSpec.describe 'User searches for users' do let(:user1) { create(:user, username: 'gob_bluth', name: 'Gob Bluth') } let(:user2) { create(:user, username: 'michael_bluth', name: 'Michael Bluth') } let(:user3) { create(:user, username: 'gob_2018', name: 'George Oscar Bluth') } @@ -12,7 +12,7 @@ RSpec.describe 'User searches for users', :js do end context 'when on the dashboard' do - it 'finds the user' do + it 'finds the user', :js do visit dashboard_projects_path submit_search('gob') diff --git a/spec/features/snippets/search_snippets_spec.rb b/spec/features/snippets/search_snippets_spec.rb index d18729d080a..46bc3b7caad 100644 --- a/spec/features/snippets/search_snippets_spec.rb +++ b/spec/features/snippets/search_snippets_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Search Snippets', :js do +RSpec.describe 'Search Snippets' do it 'user searches for snippets by title' do public_snippet = create(:personal_snippet, :public, title: 'Beginning and Middle') private_snippet = create(:personal_snippet, :private, title: 'Middle and End') diff --git a/spec/frontend/pages/search/show/__snapshots__/refresh_counts_spec.js.snap b/spec/frontend/pages/search/show/__snapshots__/refresh_counts_spec.js.snap new file mode 100644 index 00000000000..ce456d6c899 --- /dev/null +++ b/spec/frontend/pages/search/show/__snapshots__/refresh_counts_spec.js.snap @@ -0,0 +1,7 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`pages/search/show/refresh_counts fetches and displays search counts 1`] = ` +"
22
+
4
+
5
" +`; diff --git a/spec/frontend/pages/search/show/refresh_counts_spec.js b/spec/frontend/pages/search/show/refresh_counts_spec.js new file mode 100644 index 00000000000..81c9bf74308 --- /dev/null +++ b/spec/frontend/pages/search/show/refresh_counts_spec.js @@ -0,0 +1,38 @@ +import MockAdapter from 'axios-mock-adapter'; +import { TEST_HOST } from 'helpers/test_constants'; +import axios from '~/lib/utils/axios_utils'; +import refreshCounts from '~/pages/search/show/refresh_counts'; + +const URL = `${TEST_HOST}/search/count?search=lorem+ipsum&project_id=3`; +const urlWithScope = (scope) => `${URL}&scope=${scope}`; +const counts = [ + { scope: 'issues', count: 4 }, + { scope: 'merge_requests', count: 5 }, +]; +const fixture = `
22
+ +`; + +describe('pages/search/show/refresh_counts', () => { + let mock; + + beforeEach(() => { + mock = new MockAdapter(axios); + setFixtures(fixture); + }); + + afterEach(() => { + mock.restore(); + }); + + it('fetches and displays search counts', () => { + counts.forEach(({ scope, count }) => { + mock.onGet(urlWithScope(scope)).reply(200, { count }); + }); + + // assert before act behavior + return refreshCounts().then(() => { + expect(document.body.innerHTML).toMatchSnapshot(); + }); + }); +}); diff --git a/spec/frontend/search/mock_data.js b/spec/frontend/search/mock_data.js index 5cd16a856e7..d076997b04a 100644 --- a/spec/frontend/search/mock_data.js +++ b/spec/frontend/search/mock_data.js @@ -61,28 +61,3 @@ export const MOCK_SORT_OPTIONS = [ }, }, ]; - -export const MOCK_SEARCH_COUNTS_INPUT = { - scopeTabs: ['issues', 'snippet_titles', 'merge_requests'], - activeCount: '15', -}; - -export const MOCK_SEARCH_COUNT = { scope: 'issues', count: '15' }; - -export const MOCK_SEARCH_COUNTS_SUCCESS = [ - { scope: 'issues', count: '15' }, - { scope: 'snippet_titles', count: '15' }, - { scope: 'merge_requests', count: '15' }, -]; - -export const MOCK_SEARCH_COUNTS = [ - { scope: 'issues', count: '15' }, - { scope: 'snippet_titles', count: '5' }, - { scope: 'merge_requests', count: '1' }, -]; - -export const MOCK_SCOPE_TABS = [ - { scope: 'issues', title: 'Issues', count: '15' }, - { scope: 'snippet_titles', title: 'Titles and Descriptions', count: '5' }, - { scope: 'merge_requests', title: 'Merge requests', count: '1' }, -]; diff --git a/spec/frontend/search/store/actions_spec.js b/spec/frontend/search/store/actions_spec.js index f751b857c36..e4536a3e136 100644 --- a/spec/frontend/search/store/actions_spec.js +++ b/spec/frontend/search/store/actions_spec.js @@ -7,15 +7,7 @@ import * as urlUtils from '~/lib/utils/url_utility'; import createState from '~/search/store/state'; import axios from '~/lib/utils/axios_utils'; import createFlash from '~/flash'; -import { - MOCK_QUERY, - MOCK_GROUPS, - MOCK_PROJECT, - MOCK_PROJECTS, - MOCK_SEARCH_COUNT, - MOCK_SEARCH_COUNTS_SUCCESS, - MOCK_SEARCH_COUNTS_INPUT, -} from '../mock_data'; +import { MOCK_QUERY, MOCK_GROUPS, MOCK_PROJECT, MOCK_PROJECTS } from '../mock_data'; jest.mock('~/flash'); jest.mock('~/lib/utils/url_utility', () => ({ @@ -45,21 +37,19 @@ describe('Global Search Store Actions', () => { }); describe.each` - action | axiosMock | payload | type | expectedMutations | callback - ${actions.fetchGroups} | ${{ method: 'onGet', code: 200, res: MOCK_GROUPS }} | ${null} | ${'success'} | ${[{ type: types.REQUEST_GROUPS }, { type: types.RECEIVE_GROUPS_SUCCESS, payload: MOCK_GROUPS }]} | ${noCallback} - ${actions.fetchGroups} | ${{ method: 'onGet', code: 500, res: null }} | ${null} | ${'error'} | ${[{ type: types.REQUEST_GROUPS }, { type: types.RECEIVE_GROUPS_ERROR }]} | ${flashCallback} - ${actions.fetchProjects} | ${{ method: 'onGet', code: 200, res: MOCK_PROJECTS }} | ${null} | ${'success'} | ${[{ type: types.REQUEST_PROJECTS }, { type: types.RECEIVE_PROJECTS_SUCCESS, payload: MOCK_PROJECTS }]} | ${noCallback} - ${actions.fetchProjects} | ${{ method: 'onGet', code: 500, res: null }} | ${null} | ${'error'} | ${[{ type: types.REQUEST_PROJECTS }, { type: types.RECEIVE_PROJECTS_ERROR }]} | ${flashCallback} - ${actions.fetchSearchCounts} | ${{ method: 'onGet', code: 200, res: MOCK_SEARCH_COUNT }} | ${MOCK_SEARCH_COUNTS_INPUT} | ${'success'} | ${[{ type: types.REQUEST_SEARCH_COUNTS, payload: MOCK_SEARCH_COUNTS_INPUT }, { type: types.RECEIVE_SEARCH_COUNTS_SUCCESS, payload: MOCK_SEARCH_COUNTS_SUCCESS }]} | ${noCallback} - ${actions.fetchSearchCounts} | ${{ method: 'onGet', code: 500, res: null }} | ${MOCK_SEARCH_COUNTS_INPUT} | ${'error'} | ${[{ type: types.REQUEST_SEARCH_COUNTS, payload: MOCK_SEARCH_COUNTS_INPUT }]} | ${flashCallback} - `(`axios calls`, ({ action, axiosMock, payload, type, expectedMutations, callback }) => { + action | axiosMock | type | expectedMutations | callback + ${actions.fetchGroups} | ${{ method: 'onGet', code: 200, res: MOCK_GROUPS }} | ${'success'} | ${[{ type: types.REQUEST_GROUPS }, { type: types.RECEIVE_GROUPS_SUCCESS, payload: MOCK_GROUPS }]} | ${noCallback} + ${actions.fetchGroups} | ${{ method: 'onGet', code: 500, res: null }} | ${'error'} | ${[{ type: types.REQUEST_GROUPS }, { type: types.RECEIVE_GROUPS_ERROR }]} | ${flashCallback} + ${actions.fetchProjects} | ${{ method: 'onGet', code: 200, res: MOCK_PROJECTS }} | ${'success'} | ${[{ type: types.REQUEST_PROJECTS }, { type: types.RECEIVE_PROJECTS_SUCCESS, payload: MOCK_PROJECTS }]} | ${noCallback} + ${actions.fetchProjects} | ${{ method: 'onGet', code: 500, res: null }} | ${'error'} | ${[{ type: types.REQUEST_PROJECTS }, { type: types.RECEIVE_PROJECTS_ERROR }]} | ${flashCallback} + `(`axios calls`, ({ action, axiosMock, type, expectedMutations, callback }) => { describe(action.name, () => { describe(`on ${type}`, () => { beforeEach(() => { - mock[axiosMock.method]().reply(axiosMock.code, axiosMock.res); + mock[axiosMock.method]().replyOnce(axiosMock.code, axiosMock.res); }); it(`should dispatch the correct mutations`, () => { - return testAction({ action, payload, state, expectedMutations }).then(() => callback()); + return testAction({ action, state, expectedMutations }).then(() => callback()); }); }); }); @@ -125,25 +115,9 @@ describe('Global Search Store Actions', () => { page: null, state: null, confidential: null, - nav_source: null, }); expect(urlUtils.visitUrl).toHaveBeenCalled(); }); }); }); - - it('calls setUrlParams with snippets, group_id, and project_id when snippets param is true', () => { - return testAction(actions.resetQuery, true, state, [], [], () => { - expect(urlUtils.setUrlParams).toHaveBeenCalledWith({ - ...state.query, - page: null, - state: null, - confidential: null, - nav_source: null, - group_id: null, - project_id: null, - snippets: true, - }); - }); - }); }); diff --git a/spec/frontend/search/store/mutations_spec.js b/spec/frontend/search/store/mutations_spec.js index e9a1107cb07..560ed66263b 100644 --- a/spec/frontend/search/store/mutations_spec.js +++ b/spec/frontend/search/store/mutations_spec.js @@ -1,13 +1,7 @@ import mutations from '~/search/store/mutations'; import createState from '~/search/store/state'; import * as types from '~/search/store/mutation_types'; -import { - MOCK_QUERY, - MOCK_GROUPS, - MOCK_PROJECTS, - MOCK_SEARCH_COUNTS, - MOCK_SCOPE_TABS, -} from '../mock_data'; +import { MOCK_QUERY, MOCK_GROUPS, MOCK_PROJECTS } from '../mock_data'; describe('Global Search Store Mutations', () => { let state; @@ -77,32 +71,4 @@ describe('Global Search Store Mutations', () => { expect(state.query[payload.key]).toBe(payload.value); }); }); - - describe('REQUEST_SEARCH_COUNTS', () => { - it('sets the count to for the query.scope activeCount', () => { - const payload = { scopeTabs: ['issues'], activeCount: '22' }; - mutations[types.REQUEST_SEARCH_COUNTS](state, payload); - - expect(state.inflatedScopeTabs).toStrictEqual([ - { scope: 'issues', title: 'Issues', count: '22' }, - ]); - }); - - it('sets other scopes count to empty string', () => { - const payload = { scopeTabs: ['milestones'], activeCount: '22' }; - mutations[types.REQUEST_SEARCH_COUNTS](state, payload); - - expect(state.inflatedScopeTabs).toStrictEqual([ - { scope: 'milestones', title: 'Milestones', count: '' }, - ]); - }); - }); - - describe('RECEIVE_SEARCH_COUNTS_SUCCESS', () => { - it('sets the count from the input for all tabs', () => { - mutations[types.RECEIVE_SEARCH_COUNTS_SUCCESS](state, MOCK_SEARCH_COUNTS); - - expect(state.inflatedScopeTabs).toStrictEqual(MOCK_SCOPE_TABS); - }); - }); }); diff --git a/spec/frontend/search/topbar/components/app_spec.js b/spec/frontend/search/topbar/components/app_spec.js index ff37c733fdb..faf3629b444 100644 --- a/spec/frontend/search/topbar/components/app_spec.js +++ b/spec/frontend/search/topbar/components/app_spec.js @@ -5,7 +5,6 @@ import { MOCK_QUERY } from 'jest/search/mock_data'; import GlobalSearchTopbar from '~/search/topbar/components/app.vue'; import GroupFilter from '~/search/topbar/components/group_filter.vue'; import ProjectFilter from '~/search/topbar/components/project_filter.vue'; -import ScopeTabs from '~/search/topbar/components/scope_tabs.vue'; const localVue = createLocalVue(); localVue.use(Vuex); @@ -43,7 +42,6 @@ describe('GlobalSearchTopbar', () => { const findGroupFilter = () => wrapper.find(GroupFilter); const findProjectFilter = () => wrapper.find(ProjectFilter); const findSearchButton = () => wrapper.find(GlButton); - const findScopeTabs = () => wrapper.find(ScopeTabs); describe('template', () => { beforeEach(() => { @@ -54,18 +52,6 @@ describe('GlobalSearchTopbar', () => { expect(findTopbarForm().exists()).toBe(true); }); - describe('Scope Tabs', () => { - it('renders when search param is set', () => { - createComponent({ query: { search: 'test' } }); - expect(findScopeTabs().exists()).toBe(true); - }); - it('does not render search param is blank', () => { - createComponent({ query: {} }); - - expect(findScopeTabs().exists()).toBe(false); - }); - }); - describe('Search box', () => { it('renders always', () => { expect(findGlSearchBox().exists()).toBe(true); diff --git a/spec/frontend/search/topbar/components/scope_tabs_spec.js b/spec/frontend/search/topbar/components/scope_tabs_spec.js deleted file mode 100644 index 5c06ce7a2ad..00000000000 --- a/spec/frontend/search/topbar/components/scope_tabs_spec.js +++ /dev/null @@ -1,122 +0,0 @@ -import Vuex from 'vuex'; -import { createLocalVue, mount } from '@vue/test-utils'; -import { GlTabs, GlTab, GlBadge } from '@gitlab/ui'; -import { extendedWrapper } from 'helpers/vue_test_utils_helper'; -import { MOCK_QUERY, MOCK_SCOPE_TABS } from 'jest/search/mock_data'; -import ScopeTabs from '~/search/topbar/components/scope_tabs.vue'; - -const localVue = createLocalVue(); -localVue.use(Vuex); - -describe('ScopeTabs', () => { - let wrapper; - - const actionSpies = { - fetchSearchCounts: jest.fn(), - setQuery: jest.fn(), - resetQuery: jest.fn(), - }; - - const defaultProps = { - scopeTabs: ['issues', 'merge_requests', 'milestones'], - count: '20', - }; - - const createComponent = (props = {}, initialState = {}) => { - const store = new Vuex.Store({ - state: { - query: { - ...MOCK_QUERY, - search: 'test', - }, - ...initialState, - }, - actions: actionSpies, - }); - - wrapper = extendedWrapper( - mount(ScopeTabs, { - localVue, - store, - propsData: { - ...defaultProps, - ...props, - }, - }), - ); - }; - - afterEach(() => { - wrapper.destroy(); - wrapper = null; - }); - - const findScopeTabs = () => wrapper.find(GlTabs); - const findTabs = () => wrapper.findAll(GlTab); - const findBadges = () => wrapper.findAll(GlBadge); - const findTabsTitle = () => - wrapper.findAll('[data-testid="tab-title"]').wrappers.map((w) => w.text()); - const findBadgesTitle = () => findBadges().wrappers.map((w) => w.text()); - const findBadgeByScope = (scope) => wrapper.findByTestId(`badge-${scope}`); - const findTabByScope = (scope) => wrapper.findByTestId(`tab-${scope}`); - - describe('template', () => { - beforeEach(() => { - createComponent({}, { inflatedScopeTabs: MOCK_SCOPE_TABS }); - }); - - it('always renders Scope Tabs', () => { - expect(findScopeTabs().exists()).toBe(true); - }); - - describe('findTabs', () => { - it('renders a tab for each scope', () => { - expect(findTabs()).toHaveLength(defaultProps.scopeTabs.length); - expect(findTabsTitle()).toStrictEqual([ - 'Issues', - 'Titles and Descriptions', - 'Merge requests', - ]); - }); - }); - - describe('findBadges', () => { - it('renders a badge for each scope', () => { - expect(findBadges()).toHaveLength(defaultProps.scopeTabs.length); - expect(findBadgesTitle()).toStrictEqual(['15', '5', '1']); - }); - - it('sets the variant to neutral for active tab only', () => { - expect(findBadgeByScope('issues').classes()).toContain('badge-neutral'); - expect(findBadgeByScope('snippet_titles').classes()).toContain('badge-muted'); - expect(findBadgeByScope('merge_requests').classes()).toContain('badge-muted'); - }); - }); - }); - - describe('methods', () => { - beforeEach(() => { - createComponent({}, { inflatedScopeTabs: MOCK_SCOPE_TABS }); - - findTabByScope('snippet_titles').vm.$emit('click'); - }); - - describe('handleTabChange', () => { - it('calls setQuery with scope, applies any search params from ALL_SCOPE_TABS, and sends nulls for page, state, confidential, and nav_source', () => { - expect(actionSpies.setQuery).toHaveBeenCalledWith(expect.any(Object), { - key: 'scope', - value: 'snippet_titles', - }); - }); - - it('calls resetQuery and sends true for snippet_titles tab', () => { - expect(actionSpies.resetQuery).toHaveBeenCalledWith(expect.any(Object), true); - }); - - it('calls resetQuery and does not send true for other tabs', () => { - findTabByScope('issues').vm.$emit('click'); - expect(actionSpies.resetQuery).toHaveBeenCalledWith(expect.any(Object), false); - }); - }); - }); -}); diff --git a/spec/helpers/search_helper_spec.rb b/spec/helpers/search_helper_spec.rb index 4881d4a5b51..a977f2c88c6 100644 --- a/spec/helpers/search_helper_spec.rb +++ b/spec/helpers/search_helper_spec.rb @@ -392,6 +392,63 @@ RSpec.describe SearchHelper do end end + describe 'search_filter_link' do + it 'renders a search filter link for the current scope' do + @scope = 'projects' + @search_results = double + + expect(@search_results).to receive(:formatted_count).with('projects').and_return('23') + + link = search_filter_link('projects', 'Projects') + + expect(link).to have_css('li.active') + expect(link).to have_link('Projects', href: search_path(scope: 'projects')) + expect(link).to have_css('span.badge.badge-pill:not(.js-search-count):not(.hidden):not([data-url])', text: '23') + end + + it 'renders a search filter link for another scope' do + link = search_filter_link('projects', 'Projects') + count_path = search_count_path(scope: 'projects') + + expect(link).to have_css('li:not([class="active"])') + expect(link).to have_link('Projects', href: search_path(scope: 'projects')) + expect(link).to have_css("span.badge.badge-pill.js-search-count.hidden[data-url='#{count_path}']", text: '') + end + + it 'merges in the current search params and given params' do + expect(self).to receive(:params).and_return( + ActionController::Parameters.new( + search: 'hello', + scope: 'ignored', + other_param: 'ignored' + ) + ) + + link = search_filter_link('projects', 'Projects', search: { project_id: 23 }) + + expect(link).to have_link('Projects', href: search_path(scope: 'projects', search: 'hello', project_id: 23)) + end + + it 'restricts the params' do + expect(self).to receive(:params).and_return( + ActionController::Parameters.new( + search: 'hello', + unknown: 42 + ) + ) + + link = search_filter_link('projects', 'Projects') + + expect(link).to have_link('Projects', href: search_path(scope: 'projects', search: 'hello')) + end + + it 'assigns given data attributes on the list container' do + link = search_filter_link('projects', 'Projects', data: { foo: 'bar' }) + + expect(link).to have_css('li[data-foo="bar"]') + end + end + describe '#show_user_search_tab?' do subject { show_user_search_tab? } @@ -584,86 +641,4 @@ RSpec.describe SearchHelper do expect(search_sort_options).to eq(mock_created_sort) end end - - describe '#search_nav_tabs' do - subject { search_nav_tabs } - - let(:current_user) { nil } - - before do - allow(self).to receive(:current_user).and_return(current_user) - end - - context 'when @show_snippets is present' do - before do - @show_snippets = 1 - end - - it { is_expected.to eq([:snippet_titles]) } - - context 'and @project is present' do - before do - @project = 1 - allow(self).to receive(:project_search_tabs?).with(anything).and_return(true) - end - - it { is_expected.to eq([:blobs, :issues, :merge_requests, :milestones, :notes, :wiki_blobs, :commits, :users]) } - end - end - - context 'when @project is present' do - before do - @project = 1 - end - - context 'when user has access to project' do - before do - allow(self).to receive(:project_search_tabs?).with(anything).and_return(true) - end - - it { is_expected.to eq([:blobs, :issues, :merge_requests, :milestones, :notes, :wiki_blobs, :commits, :users]) } - end - - context 'when user does not have access to project' do - before do - allow(self).to receive(:project_search_tabs?).with(anything).and_return(false) - end - - it { is_expected.to eq([]) } - end - - context 'when user does not have access to read members for project' do - before do - allow(self).to receive(:project_search_tabs?).with(:members).and_return(false) - allow(self).to receive(:project_search_tabs?).with(:merge_requests).and_return(true) - allow(self).to receive(:project_search_tabs?).with(:milestones).and_return(true) - allow(self).to receive(:project_search_tabs?).with(:wiki_blobs).and_return(true) - allow(self).to receive(:project_search_tabs?).with(:issues).and_return(true) - allow(self).to receive(:project_search_tabs?).with(:blobs).and_return(true) - allow(self).to receive(:project_search_tabs?).with(:notes).and_return(true) - allow(self).to receive(:project_search_tabs?).with(:commits).and_return(true) - end - - it { is_expected.to eq([:blobs, :issues, :merge_requests, :milestones, :notes, :wiki_blobs, :commits]) } - end - end - - context 'when @show_snippets and @project are not present' do - context 'when user has access to read users' do - before do - allow(self).to receive(:can?).with(current_user, :read_users_list).and_return(true) - end - - it { is_expected.to eq([:projects, :issues, :merge_requests, :milestones, :users]) } - end - - context 'when user does not have access to read users' do - before do - allow(self).to receive(:can?).with(current_user, :read_users_list).and_return(false) - end - - it { is_expected.to eq([:projects, :issues, :merge_requests, :milestones]) } - end - end - end end diff --git a/spec/lib/gitlab/git/push_spec.rb b/spec/lib/gitlab/git/push_spec.rb index 0f52f10c0a6..8ba43b2967c 100644 --- a/spec/lib/gitlab/git/push_spec.rb +++ b/spec/lib/gitlab/git/push_spec.rb @@ -86,6 +86,16 @@ RSpec.describe Gitlab::Git::Push do it { is_expected.to be_force_push } end + + context 'when called muiltiple times' do + it 'does not make make multiple calls to the force push check' do + expect(Gitlab::Checks::ForcePush).to receive(:force_push?).once + + 2.times do + subject.force_push? + end + end + end end describe '#branch_added?' do diff --git a/spec/support/shared_examples/services/boards/boards_list_service_shared_examples.rb b/spec/support/shared_examples/services/boards/boards_list_service_shared_examples.rb index 8f7c08ed625..0e2bddc19ab 100644 --- a/spec/support/shared_examples/services/boards/boards_list_service_shared_examples.rb +++ b/spec/support/shared_examples/services/boards/boards_list_service_shared_examples.rb @@ -1,32 +1,8 @@ # frozen_string_literal: true RSpec.shared_examples 'boards list service' do - context 'when parent does not have a board' do - it 'creates a new parent board' do - expect { service.execute }.to change(parent.boards, :count).by(1) - end - - it 'delegates the parent board creation to Boards::CreateService' do - expect_any_instance_of(Boards::CreateService).to receive(:execute).once - - service.execute - end - - context 'when create_default_board is false' do - it 'does not create a new parent board' do - expect { service.execute(create_default_board: false) }.not_to change(parent.boards, :count) - end - end - end - - context 'when parent has a board' do - before do - create(:board, resource_parent: parent) - end - - it 'does not create a new board' do - expect { service.execute }.not_to change(parent.boards, :count) - end + it 'does not create a new board' do + expect { service.execute }.not_to change(parent.boards, :count) end it 'returns parent boards' do diff --git a/spec/views/search/show.html.haml_spec.rb b/spec/views/search/show.html.haml_spec.rb index 1f70aa029eb..eb763d424d3 100644 --- a/spec/views/search/show.html.haml_spec.rb +++ b/spec/views/search/show.html.haml_spec.rb @@ -6,6 +6,7 @@ RSpec.describe 'search/show' do let(:search_term) { nil } before do + stub_template "search/_category.html.haml" => 'Category Partial' stub_template "search/_results.html.haml" => 'Results Partial' @search_term = search_term @@ -20,6 +21,7 @@ RSpec.describe 'search/show' do end it 'does not render partials' do + expect(rendered).not_to render_template('search/_category') expect(rendered).not_to render_template('search/_results') end end @@ -28,6 +30,7 @@ RSpec.describe 'search/show' do let(:search_term) { 'Search Foo' } it 'renders partials' do + expect(rendered).to render_template('search/_category') expect(rendered).to render_template('search/_results') end diff --git a/yarn.lock b/yarn.lock index cc86928454e..8b9789c8887 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1332,10 +1332,10 @@ jest-diff "^25.2.1" pretty-format "^25.2.1" -"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" - integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== "@types/json5@^0.0.29": version "0.0.29" @@ -1671,17 +1671,12 @@ acorn-jsx@^5.2.0, acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn-walk@^6.1.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^6.0.7, acorn@^6.3.0, acorn@^6.4.1: +acorn@^6.3.0, acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== @@ -1721,7 +1716,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2191,15 +2186,15 @@ babel-jest@^26.5.2: graceful-fs "^4.2.4" slash "^3.0.0" -babel-loader@^8.0.6: - version "8.0.6" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" - integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== +babel-loader@^8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" + integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g== dependencies: - find-cache-dir "^2.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - pify "^4.0.1" + find-cache-dir "^3.3.1" + loader-utils "^1.4.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" babel-plugin-dynamic-import-node@^2.3.3: version "2.3.3" @@ -3329,10 +3324,10 @@ copy-to-clipboard@^3.0.8: dependencies: toggle-selection "^1.0.6" -copy-webpack-plugin@^5.0.5: - version "5.1.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" - integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== +copy-webpack-plugin@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz#8a889e1dcafa6c91c6cd4be1ad158f1d3823bae2" + integrity sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ== dependencies: cacache "^12.0.3" find-cache-dir "^2.1.0" @@ -3344,7 +3339,7 @@ copy-webpack-plugin@^5.0.5: normalize-path "^3.0.0" p-limit "^2.2.1" schema-utils "^1.0.0" - serialize-javascript "^2.1.2" + serialize-javascript "^4.0.0" webpack-log "^2.0.0" core-js-compat@^3.6.2: @@ -5167,7 +5162,7 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: +find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== @@ -7984,7 +7979,7 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -9951,13 +9946,13 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -raw-loader@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.0.tgz#d639c40fb9d72b5c7f8abc1fb2ddb25b29d3d540" - integrity sha512-iINUOYvl1cGEmfoaLjnZXt4bKfT2LJnZZib5N/LLyAphC+Dd11vNP9CNVb38j+SAJpFI1uo8j9frmih53ASy7Q== +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.5.0" + loader-utils "^2.0.0" + schema-utils "^3.0.0" rc@^1.2.8, rc@~1.2.7: version "1.2.8" @@ -10546,7 +10541,7 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.7.0: +schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.6.5, schema-utils@^2.7.0: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== @@ -10555,6 +10550,15 @@ schema-utils@^2.0.0, schema-utils@^2.5.0, schema-utils@^2.7.0: ajv "^6.12.4" ajv-keywords "^3.5.2" +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + scss-tokenizer@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" @@ -12583,13 +12587,13 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-bundle-analyzer@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.0.tgz#39b3a8f829ca044682bc6f9e011c95deb554aefd" - integrity sha512-orUfvVYEfBMDXgEKAKVvab5iQ2wXneIEorGNsyuOyVYpjYrI7CUOhhXNDd3huMwQ3vNNWWlGP+hzflMFYNzi2g== +webpack-bundle-analyzer@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz#f6f94db108fb574e415ad313de41a2707d33ef3c" + integrity sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA== dependencies: - acorn "^6.0.7" - acorn-walk "^6.1.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" bfj "^6.1.1" chalk "^2.4.1" commander "^2.18.0" @@ -12597,7 +12601,7 @@ webpack-bundle-analyzer@^3.6.0: express "^4.16.3" filesize "^3.6.1" gzip-size "^5.0.0" - lodash "^4.17.15" + lodash "^4.17.19" mkdirp "^0.5.1" opener "^1.5.1" ws "^6.0.0"