From 940dc9bc92bfe8fa46e696e8214406e6958fc20e Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 28 Nov 2024 09:27:41 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .rubocop_todo/layout/space_inside_parens.yml | 1 - .../ci/runners/register_runner_service.rb | 3 +- doc/api/graphql/reference/index.md | 1 + doc/development/i18n/proofreader.md | 2 + spec/features/dashboard/todos/todos_spec.rb | 93 +++++++++++++++++-- spec/lib/feature/gitaly_spec.rb | 2 +- 6 files changed, 90 insertions(+), 12 deletions(-) diff --git a/.rubocop_todo/layout/space_inside_parens.yml b/.rubocop_todo/layout/space_inside_parens.yml index 2ca34a4725c..fd3d68fbcef 100644 --- a/.rubocop_todo/layout/space_inside_parens.yml +++ b/.rubocop_todo/layout/space_inside_parens.yml @@ -3,7 +3,6 @@ Layout/SpaceInsideParens: Exclude: - 'spec/lib/banzai/filter/repository_link_filter_spec.rb' - - 'spec/lib/feature/gitaly_spec.rb' - 'spec/lib/gitlab/auth/o_auth/auth_hash_spec.rb' - 'spec/lib/gitlab/ci/config/entry/reports_spec.rb' - 'spec/lib/gitlab/ci/config/entry/trigger_spec.rb' diff --git a/app/services/ci/runners/register_runner_service.rb b/app/services/ci/runners/register_runner_service.rb index 550dfd3c29b..58e9a96395e 100644 --- a/app/services/ci/runners/register_runner_service.rb +++ b/app/services/ci/runners/register_runner_service.rb @@ -80,11 +80,12 @@ module Ci def token_scope case attrs_from_token[:runner_type] + when :instance_type + Gitlab::Audit::InstanceScope.new when :project_type attrs_from_token[:projects]&.first when :group_type attrs_from_token[:groups]&.first - # No scope for instance type end end diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index 573eaceffdb..cbfd3c32d24 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -31162,6 +31162,7 @@ Project-level settings for product analytics provider. | `pendingMemberApprovals` **{warning-solid}** | [`MemberApprovalConnection`](#memberapprovalconnection) | **Introduced** in GitLab 17.3. **Status**: Experiment. Pending member promotions of the project. | | `permanentDeletionDate` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 16.11. **Status**: Experiment. Date when project will be deleted if delayed project deletion is enabled. | | `pipelineTriggers` **{warning-solid}** | [`PipelineTriggerConnection`](#pipelinetriggerconnection) | **Introduced** in GitLab 16.3. **Status**: Experiment. List of pipeline trigger tokens. | +| `preReceiveSecretDetectionEnabled` | [`Boolean`](#boolean) | Indicates whether Secret Push Protection is on or not for the project. | | `preventMergeWithoutJiraIssueEnabled` | [`Boolean!`](#boolean) | Indicates if an associated issue from Jira is required. | | `printingMergeRequestLinkEnabled` | [`Boolean`](#boolean) | Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line. | | `productAnalyticsInstrumentationKey` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 16.0. **Status**: Experiment. Product Analytics instrumentation key assigned to the project. | diff --git a/doc/development/i18n/proofreader.md b/doc/development/i18n/proofreader.md index 11073d66684..606dc739bd3 100644 --- a/doc/development/i18n/proofreader.md +++ b/doc/development/i18n/proofreader.md @@ -68,6 +68,8 @@ are very appreciative of the work done by translators and proofreaders! - Proofreaders needed. - Indonesian - Rahayu Rafika - [GitLab](https://gitlab.com/Vkfikaa), [Crowdin](https://crowdin.com/profile/rahayurafika_12) +- Irish + - Aindriú Mac Giolla Eoin - [GitLab](https://gitlab.com/aindriu80), [Crowdin](https://crowdin.com/profile/aindriu80) - Italian - Proofreaders needed. - Japanese diff --git a/spec/features/dashboard/todos/todos_spec.rb b/spec/features/dashboard/todos/todos_spec.rb index a0c118b0a69..2010aeb5b7b 100644 --- a/spec/features/dashboard/todos/todos_spec.rb +++ b/spec/features/dashboard/todos/todos_spec.rb @@ -548,6 +548,8 @@ RSpec.describe 'Dashboard Todos (Vue version)', :js, feature_category: :notifica let_it_be(:user2) { create(:user, name: 'Michael Scott') } let_it_be(:project) { create(:project, :public, developers: user) } let_it_be(:issue) { create(:issue, project: project, due_date: Date.today, title: "Fix bug") } + let_it_be(:issue2) { create(:issue, project: project, due_date: Date.today, title: "Update gems") } + let_it_be(:issue3) { create(:issue, project: project, due_date: Date.today, title: "Deploy feature") } before do sign_in user @@ -595,12 +597,11 @@ RSpec.describe 'Dashboard Todos (Vue version)', :js, feature_category: :notifica context 'when user has no done tasks' do before do create_todo(state: :pending) - visit dashboard_todos_path(author_id: user.id) - click_on 'Done' end context 'with filters applied' do it 'shows a "no matches" message' do + visit dashboard_todos_path(author_id: user.id, state: :done) expect(page).to have_content 'Sorry, your filter produced no results' expect_tab_nav end @@ -608,7 +609,7 @@ RSpec.describe 'Dashboard Todos (Vue version)', :js, feature_category: :notifica context 'with no filters applied' do it 'shows a "no done todos" message on the "Done" tab' do - click_on 'Clear' + visit dashboard_todos_path(state: :done) expect(page).to have_content 'There are no done to-do items yet' expect_tab_nav end @@ -617,13 +618,11 @@ RSpec.describe 'Dashboard Todos (Vue version)', :js, feature_category: :notifica end context 'when user has pending todos' do - let!(:todo_assigned) { create(:todo, :assigned, :pending, user: user, project: project, target: issue, author: user2) } - let!(:todo_marked) { create(:todo, :marked, :pending, user: user, project: project, target: issue, author: user) } + let_it_be(:todo_assigned) { create(:todo, :assigned, :pending, user: user, project: project, target: issue, author: user2) } + let_it_be(:todo_marked) { create(:todo, :marked, :pending, user: user, project: project, target: issue, author: user) } before do - sign_in(user) visit dashboard_todos_path - wait_for_requests end it 'allows to mark a pending todo as done and find it in the Done tab' do @@ -642,8 +641,84 @@ RSpec.describe 'Dashboard Todos (Vue version)', :js, feature_category: :notifica end end - def create_todo(state:) - create(:todo, :assigned, state, user: user, project: project, target: issue, author: user2) + describe 'sorting' do + let_it_be(:oldest_but_most_recently_updated) { create_todo(created_at: 3.days.ago, updated_at: 3.minutes.ago, target: issue) } + let_it_be(:middle_old_and_middle_updated) { create_todo(created_at: 2.days.ago, updated_at: 2.hours.ago, target: issue2) } + let_it_be(:newest_but_never_updated) { create_todo(created_at: 1.day.ago, updated_at: 1.day.ago, target: issue3) } + + before do + visit dashboard_todos_path + end + + it 'allows to change sort order and direction' do + # default sort is by `created_at` (desc) + expect(page).to have_content( + /#{newest_but_never_updated.target.title}.*#{middle_old_and_middle_updated.target.title}.*#{oldest_but_most_recently_updated.target.title}/ + ) + + # change direction + find('.sorting-direction-button').click + expect(page).to have_content( + /#{oldest_but_most_recently_updated.target.title}.*#{middle_old_and_middle_updated.target.title}.*#{newest_but_never_updated.target.title}/ + ) + + # change order + click_on 'Created' # to open order dropdown + find('li', text: 'Updated').click # to change to `updated_at` + expect(page).to have_content( + /#{newest_but_never_updated.target.title}.*#{middle_old_and_middle_updated.target.title}.*#{oldest_but_most_recently_updated.target.title}/ + ) + end + end + + describe 'filtering' do + let_it_be(:self_assigned) { create_todo(author: user, target: issue) } + let_it_be(:self_marked) { create_todo(author: user, target: issue2, action: :marked) } + let_it_be(:other_assigned) { create_todo(author: user2, target: issue3) } + + before do + visit dashboard_todos_path + end + + it 'allows to filter by auther, action etc' do + find_by_testid('filtered-search-term').click + find('li', text: 'Author').click + find('li', text: user.username).click + find_by_testid('search-button').click + + expect(page).to have_content(self_assigned.target.title) + expect(page).to have_content(self_marked.target.title) + expect(page).not_to have_content(other_assigned.target.title) + + find_by_testid('filtered-search-term').click + find('li', text: 'Reason').click + find('li', text: 'Marked').click + find_by_testid('search-button').click + + expect(page).not_to have_content(self_assigned.target.title) + expect(page).to have_content(self_marked.target.title) + expect(page).not_to have_content(other_assigned.target.title) + + click_on 'Clear' + + expect(page).to have_content(self_assigned.target.title) + expect(page).to have_content(self_marked.target.title) + expect(page).to have_content(other_assigned.target.title) + end + end + + def create_todo(action: :assigned, state: :pending, created_at: nil, updated_at: nil, target: issue, author: user2) + create( + :todo, + action, + state: state, + user: user, + created_at: created_at, + updated_at: updated_at, + project: project, + target: target, + author: author + ) end def expect_tab_nav diff --git a/spec/lib/feature/gitaly_spec.rb b/spec/lib/feature/gitaly_spec.rb index dacd1fcb212..d55f12459ef 100644 --- a/spec/lib/feature/gitaly_spec.rb +++ b/spec/lib/feature/gitaly_spec.rb @@ -270,7 +270,7 @@ RSpec.describe Feature::Gitaly do end describe ".group_actor" do - let_it_be(:group) { create(:group ) } + let_it_be(:group) { create(:group) } let_it_be(:project) { create(:project, group: group) } context 'when project is passed in' do