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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-07 06:10:17 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-07 06:10:17 +0300
commit170765911848f0ad68e0f26f6413dd770d36f364 (patch)
treeb42a0750d6e17fc6d26357d3d97aad42bbb20462
parentfd6093f6f04702cecf75306a83beba837cfde8fb (diff)
Add latest changes from gitlab-org/gitlab@master
-rw-r--r--app/assets/javascripts/jobs/components/table/cells/job_cell.vue14
-rw-r--r--app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql3
-rw-r--r--app/views/layouts/header/_current_user_dropdown.html.haml2
-rw-r--r--app/views/shared/users/_user.html.haml2
-rw-r--r--app/views/users/_overview.html.haml2
-rw-r--r--app/views/users/show.html.haml4
-rw-r--r--package.json2
-rw-r--r--qa/knapsack/master_report.json221
-rw-r--r--qa/qa.rb5
-rw-r--r--qa/qa/page/main/menu.rb6
-rw-r--r--qa/qa/page/user/show.rb40
-rw-r--r--qa/qa/resource/project_issue_note.rb61
-rw-r--r--qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb97
-rw-r--r--spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js23
-rw-r--r--spec/frontend/jobs/mock_data.js4
-rw-r--r--spec/models/concerns/bulk_insert_safe_spec.rb36
-rw-r--r--spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb4
-rw-r--r--yarn.lock8
18 files changed, 469 insertions, 65 deletions
diff --git a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue b/app/assets/javascripts/jobs/components/table/cells/job_cell.vue
index cea873b64a0..1797992641d 100644
--- a/app/assets/javascripts/jobs/components/table/cells/job_cell.vue
+++ b/app/assets/javascripts/jobs/components/table/cells/job_cell.vue
@@ -52,6 +52,9 @@ export default {
isScheduledJob() {
return Boolean(this.job.scheduledAt);
},
+ canReadJob() {
+ return this.job?.userPermissions?.readBuild;
+ },
},
};
</script>
@@ -59,7 +62,16 @@ export default {
<template>
<div>
<div class="gl-text-truncate">
- <gl-link class="gl-text-gray-500!" :href="jobPath" data-testid="job-id">{{ jobId }}</gl-link>
+ <gl-link
+ v-if="canReadJob"
+ class="gl-text-gray-500!"
+ :href="jobPath"
+ data-testid="job-id-link"
+ >
+ {{ jobId }}
+ </gl-link>
+
+ <span v-else data-testid="job-id-limited-access">{{ jobId }}</span>
<div class="gl-display-flex gl-align-items-center">
<div v-if="jobRef" class="gl-max-w-15 gl-text-truncate">
diff --git a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql b/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql
index 7025bc97c53..2e49d07df5f 100644
--- a/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql
+++ b/app/assets/javascripts/jobs/components/table/graphql/queries/get_jobs.query.graphql
@@ -59,6 +59,9 @@ query getJobs($fullPath: ID!, $statuses: [CiJobStatus!]) {
playable
cancelable
active
+ userPermissions {
+ readBuild
+ }
}
}
}
diff --git a/app/views/layouts/header/_current_user_dropdown.html.haml b/app/views/layouts/header/_current_user_dropdown.html.haml
index 0251a8b6d7c..6bb51b01c13 100644
--- a/app/views/layouts/header/_current_user_dropdown.html.haml
+++ b/app/views/layouts/header/_current_user_dropdown.html.haml
@@ -3,7 +3,7 @@
%ul
%li.current-user
- if current_user_menu?(:profile)
- = link_to current_user, class: 'gl-line-height-20!', data: { user: current_user.username, testid: 'user-profile-link' } do
+ = link_to current_user, class: 'gl-line-height-20!', data: { user: current_user.username, testid: 'user-profile-link', qa_selector: 'user_profile_link' } do
= render 'layouts/header/current_user_dropdown_item'
- else
.gl-py-3.gl-px-4
diff --git a/app/views/shared/users/_user.html.haml b/app/views/shared/users/_user.html.haml
index f92c12102bb..7f7cd31591e 100644
--- a/app/views/shared/users/_user.html.haml
+++ b/app/views/shared/users/_user.html.haml
@@ -7,7 +7,7 @@
.user-info
.block-truncated
- = link_to user.name, user_path(user), class: 'user js-user-link', data: { user_id: user.id }
+ = link_to user.name, user_path(user), class: 'user js-user-link', data: { user_id: user.id, qa_selector: 'user_link', qa_username: user.username }
.block-truncated
%span.gl-text-gray-900= user.to_reference
diff --git a/app/views/users/_overview.html.haml b/app/views/users/_overview.html.haml
index eb29e691ebd..2e6d335a98d 100644
--- a/app/views/users/_overview.html.haml
+++ b/app/views/users/_overview.html.haml
@@ -18,7 +18,7 @@
%h4.gl-flex-grow-1
= Feature.enabled?(:security_auto_fix) && @user.bot? ? s_('UserProfile|Bot activity') : s_('UserProfile|Activity')
= link_to s_('UserProfile|View all'), user_activity_path, class: "hide js-view-all"
- .overview-content-list{ data: { href: user_activity_path } }
+ .overview-content-list{ data: { href: user_activity_path, qa_selector: 'user_activity_content' } }
.center.light.loading
.gl-spinner.gl-spinner-md
diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml
index d89f4b811a3..a5b95883361 100644
--- a/app/views/users/show.html.haml
+++ b/app/views/users/show.html.haml
@@ -39,7 +39,7 @@
= link_to user_unfollow_path(@user, :json) , class: link_classes + 'btn gl-button btn-default', method: :post do
= _('Unfollow')
- else
- = link_to user_follow_path(@user, :json) , class: link_classes + 'btn gl-button btn-confirm', method: :post do
+ = link_to user_follow_path(@user, :json) , class: link_classes + 'btn gl-button btn-confirm', method: :post, data: { qa_selector: 'follow_user_link' } do
= _('Follow')
.profile-header{ class: [('with-no-profile-tabs' if profile_tabs.empty?)] }
@@ -103,7 +103,7 @@
- count = @user.followers.count
= n_('1 follower', '%{count} followers', count) % { count: count }
.profile-link-holder.middle-dot-divider
- = link_to user_following_path, class: 'text-link' do
+ = link_to user_following_path, class: 'text-link', data: { qa_selector: 'following_link' } do
= @user.followees.count
= _('following')
- if @user.bio.present?
diff --git a/package.json b/package.json
index 4975ff8937a..535c39a23d1 100644
--- a/package.json
+++ b/package.json
@@ -101,7 +101,7 @@
"codesandbox-api": "0.0.23",
"compression-webpack-plugin": "^5.0.2",
"copy-webpack-plugin": "^6.4.1",
- "core-js": "^3.11.3",
+ "core-js": "^3.12.0",
"cron-validator": "^1.1.1",
"cropper": "^2.3.0",
"css-loader": "^2.1.1",
diff --git a/qa/knapsack/master_report.json b/qa/knapsack/master_report.json
index 467150e84c7..47c6099a36d 100644
--- a/qa/knapsack/master_report.json
+++ b/qa/knapsack/master_report.json
@@ -1,54 +1,195 @@
{
"qa/specs/features/ee/api/2_plan/epics_milestone_dates_spec.rb": 4.835599899291992,
- "qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 69.85551619529724,
- "qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 14.649160623550415,
- "qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 12.790381908416748,
- "qa/specs/features/ee/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 0.00018262863159179688,
- "qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 59.73394823074341,
"qa/specs/features/ee/browser_ui/3_create/repository/code_owners_spec.rb": 26.39240026473999,
"qa/specs/features/ee/browser_ui/secure/create_project_with_secure_spec.rb": 46.76790499687195,
"qa/specs/features/api/1_manage/users_spec.rb": 0.6089541912078857,
- "qa/specs/features/api/3_create/repository/files_spec.rb": 5.015859127044678,
- "qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 1.0199065208435059,
- "qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb": 33.54091453552246,
- "qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb": 3.438166856765747,
"qa/specs/features/browser_ui/1_manage/login/login_via_oauth_spec.rb": 20.58603596687317,
- "qa/specs/features/browser_ui/1_manage/login/register_spec.rb": 22.320587396621704,
- "qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb": 8.490083694458008,
- "qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb": 10.214765310287476,
- "qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb": 100.28881478309631,
- "qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb": 7.882027864456177,
- "qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb": 13.739388942718506,
- "qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 13.403101205825806,
- "qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 10.989444971084595,
- "qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 10.811973810195923,
- "qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 12.63524317741394,
- "qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 11.280649185180664,
- "qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 41.76726770401001,
- "qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 32.5517954826355,
- "qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 46.54227638244629,
- "qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb": 27.943300485610962,
- "qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 3.705310821533203,
- "qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 40.09336972236633,
"qa/specs/features/browser_ui/3_create/repository/add_list_delete_branches_spec.rb": 31.49540114402771,
"qa/specs/features/browser_ui/3_create/repository/add_ssh_key_spec.rb": 16.18057894706726,
- "qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 0.7397980690002441,
"qa/specs/features/browser_ui/3_create/repository/create_edit_delete_file_via_web_spec.rb": 18.047621726989746,
- "qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 9.48607873916626,
- "qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 23.710937023162842,
"qa/specs/features/browser_ui/3_create/repository/push_over_http_file_size_spec.rb": 19.459370374679565,
- "qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 7.730542182922363,
- "qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 29.76174831390381,
"qa/specs/features/browser_ui/3_create/repository/use_ssh_key_spec.rb": 22.800872802734375,
- "qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 6.731764793395996,
"qa/specs/features/browser_ui/3_create/snippet/create_snippet_spec.rb": 5.812374591827393,
- "qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb": 25.460349321365356,
"qa/specs/features/browser_ui/3_create/wiki/create_edit_clone_push_wiki_spec.rb": 17.273863554000854,
"qa/specs/features/browser_ui/4_verify/ci_variable/add_ci_variable_spec.rb": 8.31815505027771,
- "qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb": 18.679633855819702,
- "qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 15.342933893203735,
- "qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 92.46774697303772,
- "qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 20.252174615859985,
- "qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb": 8.281434059143066,
- "qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb": 8.810423135757446
-} \ No newline at end of file
+ "qa/specs/features/browser_ui/non_devops/performance_bar_spec.rb": 8.810423135757446,
+ "qa/specs/features/browser_ui/2_plan/issue/create_issue_spec.rb": 51.81568956375122,
+ "qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_spec.rb": 30.373554468154907,
+ "qa/specs/features/sanity/version_spec.rb": 0.0004665851593017578,
+ "qa/specs/features/browser_ui/3_create/repository/push_http_private_token_spec.rb": 22.993898630142212,
+ "qa/specs/features/browser_ui/4_verify/pipeline/create_and_process_pipeline_spec.rb": 58.383920192718506,
+ "qa/specs/features/browser_ui/4_verify/ci_variable/add_remove_ci_variable_spec.rb": 58.99856781959534,
+ "qa/specs/features/browser_ui/7_configure/auto_devops/create_project_with_auto_devops_spec.rb": 36.358747243881226,
+ "qa/specs/features/browser_ui/1_manage/login/log_in_spec.rb": 9.079580068588257,
+ "qa/specs/features/browser_ui/3_create/repository/push_over_http_spec.rb": 39.412545919418335,
+ "qa/specs/features/browser_ui/3_create/repository/push_over_ssh_spec.rb": 27.905837297439575,
+ "qa/specs/features/browser_ui/6_release/pages/pages_pipeline_spec.rb": 130.09448766708374,
+ "qa/specs/features/browser_ui/3_create/repository/ssh_key_support_spec.rb": 36.39329433441162,
+ "qa/specs/features/browser_ui/3_create/merge_request/merge_merge_request_from_fork_spec.rb": 99.71209812164307,
+ "qa/specs/features/browser_ui/1_manage/project/create_project_spec.rb": 34.64759969711304,
+ "qa/specs/features/ee/browser_ui/2_plan/epic/promote_issue_to_epic_spec.rb": 25.72262978553772,
+ "qa/specs/features/ee/browser_ui/2_plan/issue_boards/project_issue_boards_spec.rb": 44.536749839782715,
+ "qa/specs/features/browser_ui/2_plan/milestone/create_group_milestone_spec.rb": 18.482256174087524,
+ "qa/specs/features/browser_ui/6_release/pipeline/parent_child_pipelines_independent_relationship_spec.rb": 107.76105904579163,
+ "qa/specs/features/browser_ui/2_plan/issue/comment_issue_spec.rb": 16.314701795578003,
+ "qa/specs/features/ee/browser_ui/2_plan/issue_boards/read_only_board_configuration_spec.rb": 36.934654235839844,
+ "qa/specs/features/ee/browser_ui/2_plan/iterations/create_group_iteration_spec.rb": 17.103047847747803,
+ "qa/specs/features/browser_ui/2_plan/issue/mentions_spec.rb": 43.9788339138031,
+ "qa/specs/features/ee/browser_ui/2_plan/issue_boards/configurable_issue_board_spec.rb": 27.46922779083252,
+ "qa/specs/features/browser_ui/2_plan/milestone/create_project_milestone_spec.rb": 28.352823495864868,
+ "qa/specs/features/ee/browser_ui/2_plan/issue_boards/configure_issue_board_by_label_spec.rb": 20.208287954330444,
+ "qa/specs/features/ee/browser_ui/2_plan/burndown_chart/burndown_chart_spec.rb": 13.733941793441772,
+ "qa/specs/features/ee/browser_ui/2_plan/issue_boards/sum_of_issues_weights_spec.rb": 21.879905223846436,
+ "qa/specs/features/browser_ui/2_plan/issue/collapse_comments_in_discussions_spec.rb": 16.376311540603638,
+ "qa/specs/features/ee/browser_ui/2_plan/epic/epics_management_spec.rb": 98.71593880653381,
+ "qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/four_assignees_spec.rb": 39.15917229652405,
+ "qa/specs/features/browser_ui/2_plan/related_issues/related_issues_spec.rb": 21.307689666748047,
+ "qa/specs/features/ee/browser_ui/2_plan/multiple_assignees_for_issues/more_than_four_assignees_spec.rb": 39.39231467247009,
+ "qa/specs/features/ee/browser_ui/2_plan/issue_boards/create_group_issue_board_spec.rb": 18.50350284576416,
+ "qa/specs/features/ee/browser_ui/2_plan/issues_analytics/issues_analytics_spec.rb": 30.67392325401306,
+ "qa/specs/features/ee/browser_ui/2_plan/custom_email/custom_email_spec.rb": 16.17888569831848,
+ "qa/specs/features/ee/browser_ui/2_plan/scoped_labels/editing_scoped_labels_spec.rb": 45.47245216369629,
+ "qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb": 38.93913507461548,
+ "qa/specs/features/ee/browser_ui/2_plan/epic/roadmap_spec.rb": 12.087258100509644,
+ "qa/specs/features/ee/browser_ui/2_plan/issue_boards/group_issue_boards_spec.rb": 17.309232473373413,
+ "qa/specs/features/browser_ui/2_plan/milestone/assign_milestone_spec.rb": 67.43084001541138,
+ "qa/specs/features/browser_ui/6_release/pipeline/parent_child_pipelines_dependent_relationship_spec.rb": 70.75156497955322,
+ "qa/specs/features/browser_ui/2_plan/issue/export_as_csv_spec.rb": 22.20275855064392,
+ "qa/specs/features/browser_ui/2_plan/issue/issue_suggestions_spec.rb": 24.21539831161499,
+ "qa/specs/features/ee/browser_ui/2_plan/issues_weight/issue_weight_visualization_spec.rb": 20.22646951675415,
+ "qa/specs/features/ee/browser_ui/2_plan/iterations/assign_group_iteration_spec.rb": 31.00749373435974,
+ "qa/specs/features/ee/browser_ui/2_plan/issue/default_issue_template_spec.rb": 18.430193424224854,
+ "qa/specs/features/browser_ui/3_create/wiki/project_based_page_deletion_spec.rb": 13.615312337875366,
+ "qa/specs/features/ee/browser_ui/1_manage/project/project_templates_spec.rb": 54.21430277824402,
+ "qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_subgroup_spec.rb": 189.6901969909668,
+ "qa/specs/features/browser_ui/1_manage/project/protected_tags_spec.rb": 94.04865074157715,
+ "qa/specs/features/browser_ui/3_create/web_ide/add_new_directory_in_web_ide_spec.rb": 59.575963258743286,
+ "qa/specs/features/api/3_create/merge_request/push_options_labels_spec.rb": 12.545408725738525,
+ "qa/specs/features/ee/browser_ui/1_manage/group/share_group_with_group_spec.rb": 25.6483793258667,
+ "qa/specs/features/browser_ui/4_verify/pipeline/include_multiple_files_from_a_project_spec.rb": 48.9726402759552,
+ "qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_commit_spec.rb": 26.07162046432495,
+ "qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_ssh_spec.rb": 8.41316819190979,
+ "qa/specs/features/ee/browser_ui/secure/merge_request_license_widget_spec.rb": 73.56247329711914,
+ "qa/specs/features/browser_ui/1_manage/project/import_github_repo_spec.rb": 70.19135999679565,
+ "qa/specs/features/api/3_create/repository/files_spec.rb": 6.235261917114258,
+ "qa/specs/features/browser_ui/5_package/container_registry_spec.rb": 7.263134717941284,
+ "qa/specs/features/api/3_create/repository/default_branch_name_setting_spec.rb": 10.079012870788574,
+ "qa/specs/features/browser_ui/3_create/repository/file/delete_file_via_web_spec.rb": 16.52791404724121,
+ "qa/specs/features/api/3_create/repository/project_archive_compare_spec.rb": 10.684799909591675,
+ "qa/specs/features/browser_ui/3_create/web_ide/upload_new_file_in_web_ide_spec.rb": 72.14465713500977,
+ "qa/specs/features/api/1_manage/project_access_token_spec.rb": 1.7818918228149414,
+ "qa/specs/features/ee/browser_ui/4_verify/pipeline_subscription_with_group_owned_project_spec.rb": 46.62651777267456,
+ "qa/specs/features/browser_ui/4_verify/pipeline/trigger_child_pipeline_with_manual_spec.rb": 41.63330125808716,
+ "qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_with_multiple_files_spec.rb": 15.664107322692871,
+ "qa/specs/features/browser_ui/3_create/snippet/add_file_to_snippet_spec.rb": 34.32576060295105,
+ "qa/specs/features/browser_ui/3_create/design_management/archive_design_content_spec.rb": 31.586787939071655,
+ "qa/specs/features/browser_ui/3_create/repository/push_protected_branch_spec.rb": 27.983626127243042,
+ "qa/specs/features/ee/browser_ui/secure/project_security_dashboard_spec.rb": 27.6742160320282,
+ "qa/specs/features/browser_ui/4_verify/pipeline/trigger_matrix_spec.rb": 33.06922268867493,
+ "qa/specs/features/ee/browser_ui/3_create/wiki/create_group_wiki_page_spec.rb": 22.77417540550232,
+ "qa/specs/features/api/1_manage/rate_limits_spec.rb": 11.836639165878296,
+ "qa/specs/features/ee/browser_ui/1_manage/user/minimal_access_user_spec.rb": 15.691015005111694,
+ "qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_spec.rb": 26.72679090499878,
+ "qa/specs/features/api/3_create/merge_request/push_options_mwps_spec.rb": 38.80854368209839,
+ "qa/specs/features/browser_ui/6_release/deploy_token/add_deploy_token_spec.rb": 15.07186245918274,
+ "qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_http_spec.rb": 41.58929800987244,
+ "qa/specs/features/browser_ui/6_release/deploy_key/clone_using_deploy_key_spec.rb": 101.82257866859436,
+ "qa/specs/features/ee/browser_ui/4_verify/pipelines_for_merged_results_and_merge_trains_spec.rb": 114.47506761550903,
+ "qa/specs/features/api/3_create/repository/push_postreceive_idempotent_spec.rb": 13.438591957092285,
+ "qa/specs/features/ee/browser_ui/3_create/merge_request/default_merge_request_template_spec.rb": 30.66688632965088,
+ "qa/specs/features/browser_ui/1_manage/user/user_access_termination_spec.rb": 25.137597799301147,
+ "qa/specs/features/ee/browser_ui/1_manage/group/group_audit_logs_1_spec.rb": 72.90312123298645,
+ "qa/specs/features/browser_ui/3_create/repository/clone_spec.rb": 8.731743574142456,
+ "qa/specs/features/browser_ui/7_configure/auto_devops/auto_devops_templates_spec.rb": 0.0008337497711181641,
+ "qa/specs/features/browser_ui/3_create/merge_request/suggestions/custom_commit_suggestion_spec.rb": 40.60329842567444,
+ "qa/specs/features/browser_ui/4_verify/pipeline/locked_artifacts_spec.rb": 48.4540741443634,
+ "qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_personal_snippet_spec.rb": 39.090237617492676,
+ "qa/specs/features/browser_ui/3_create/web_ide/create_first_file_in_web_ide_spec.rb": 22.633376359939575,
+ "qa/specs/features/browser_ui/3_create/design_management/modify_design_content_spec.rb": 18.457061767578125,
+ "qa/specs/features/browser_ui/3_create/wiki/project_based_content_creation_spec.rb": 49.273433685302734,
+ "qa/specs/features/browser_ui/1_manage/group/transfer_group_spec.rb": 14.6923348903656,
+ "qa/specs/features/browser_ui/3_create/repository/add_file_template_spec.rb": 81.94199562072754,
+ "qa/specs/features/browser_ui/3_create/merge_request/squash_merge_request_spec.rb": 38.44519090652466,
+ "qa/specs/features/browser_ui/3_create/repository/push_mirroring_lfs_over_http_spec.rb": 46.04780888557434,
+ "qa/specs/features/browser_ui/3_create/merge_request/create_merge_request_via_template_spec.rb": 27.77385425567627,
+ "qa/specs/features/ee/browser_ui/1_manage/insights/default_insights_spec.rb": 28.850987195968628,
+ "qa/specs/features/browser_ui/3_create/repository/file/edit_file_via_web_spec.rb": 19.598198413848877,
+ "qa/specs/features/browser_ui/1_manage/group/transfer_project_spec.rb": 65.70130896568298,
+ "qa/specs/features/browser_ui/3_create/repository/file/file_with_unusual_name_spec.rb": 15.17819595336914,
+ "qa/specs/features/ee/browser_ui/1_manage/instance/instance_audit_logs_spec.rb": 104.32384181022644,
+ "qa/specs/features/ee/browser_ui/3_create/repository/code_owners_with_protected_branch_and_squashed_commits_spec.rb": 50.42676067352295,
+ "qa/specs/features/api/1_manage/user_access_termination_spec.rb": 6.3396782875061035,
+ "qa/specs/features/ee/browser_ui/secure/create_merge_request_with_secure_spec.rb": 71.55253982543945,
+ "qa/specs/features/browser_ui/4_verify/pipeline/merge_mr_when_pipline_is_blocked_spec.rb": 58.73203682899475,
+ "qa/specs/features/ee/browser_ui/4_verify/new_discussion_not_dropping_merge_trains_mr_spec.rb": 65.0450668334961,
+ "qa/specs/features/browser_ui/4_verify/testing/view_code_coverage_spec.rb": 42.83795666694641,
+ "qa/specs/features/ee/browser_ui/3_create/repository/pull_mirroring_over_ssh_with_key_spec.rb": 60.95837211608887,
+ "qa/specs/features/api/3_create/merge_request/push_options_remove_source_branch_spec.rb": 17.03721809387207,
+ "qa/specs/features/browser_ui/3_create/wiki/project_based_content_manipulation_spec.rb": 25.14606213569641,
+ "qa/specs/features/browser_ui/3_create/web_ide/open_fork_in_web_ide_spec.rb": 70.44876503944397,
+ "qa/specs/features/browser_ui/3_create/merge_request/merge_when_pipeline_succeeds_spec.rb": 52.93111038208008,
+ "qa/specs/features/browser_ui/3_create/snippet/clone_push_pull_project_snippet_spec.rb": 48.3312201499939,
+ "qa/specs/features/browser_ui/1_manage/login/2fa_recovery_spec.rb": 52.52523970603943,
+ "qa/specs/features/ee/browser_ui/secure/security_reports_spec.rb": 49.19262075424194,
+ "qa/specs/features/browser_ui/4_verify/ci_variable/pipeline_with_protected_variable_spec.rb": 120.86664414405823,
+ "qa/specs/features/browser_ui/3_create/snippet/create_project_snippet_with_multiple_files_spec.rb": 38.46292161941528,
+ "qa/specs/features/ee/browser_ui/1_manage/group/group_audit_logs_2_spec.rb": 100.1787781715393,
+ "qa/specs/features/browser_ui/3_create/repository/user_views_commit_diff_patch_spec.rb": 22.37237572669983,
+ "qa/specs/features/ee/browser_ui/1_manage/group/group_file_template_spec.rb": 69.36870694160461,
+ "qa/specs/features/browser_ui/3_create/web_ide/add_file_template_spec.rb": 69.17281556129456,
+ "qa/specs/features/api/3_create/merge_request/push_options_target_branch_spec.rb": 13.524356126785278,
+ "qa/specs/features/ee/browser_ui/1_manage/group/prevent_forking_outside_group_spec.rb": 37.17233395576477,
+ "qa/specs/features/api/2_plan/closes_issue_via_pushing_a_commit_spec.rb": 6.892294406890869,
+ "qa/specs/features/browser_ui/4_verify/pipeline/pass_dotenv_variables_to_downstream_via_bridge_spec.rb": 40.91694402694702,
+ "qa/specs/features/browser_ui/2_plan/issue_boards/focus_mode_spec.rb": 12.628767013549805,
+ "qa/specs/features/ee/browser_ui/secure/enable_sast_from_configuration_spec.rb": 86.38991785049438,
+ "qa/specs/features/ee/browser_ui/3_create/repository/push_rules_spec.rb": 79.2712254524231,
+ "qa/specs/features/ee/browser_ui/3_create/repository/file_locking_spec.rb": 161.1801998615265,
+ "qa/specs/features/ee/browser_ui/4_verify/pipeline_for_project_mirror_github_spec.rb": 12.684113502502441,
+ "qa/specs/features/browser_ui/3_create/snippet/copy_snippet_file_contents_spec.rb": 31.481987714767456,
+ "qa/specs/features/ee/browser_ui/secure/vulnerability_management_spec.rb": 80.21465563774109,
+ "qa/specs/features/browser_ui/1_manage/project/add_project_member_spec.rb": 12.836287260055542,
+ "qa/specs/features/browser_ui/1_manage/login/2fa_ssh_recovery_spec.rb": 38.852850675582886,
+ "qa/specs/features/ee/browser_ui/3_create/repository/assign_code_owners_spec.rb": 34.88499307632446,
+ "qa/specs/features/browser_ui/3_create/merge_request/revert/revert_commit_spec.rb": 35.340261459350586,
+ "qa/specs/features/browser_ui/2_plan/issue/custom_issue_template_spec.rb": 19.719850540161133,
+ "qa/specs/features/browser_ui/3_create/merge_request/view_merge_request_diff_patch_spec.rb": 38.779794216156006,
+ "qa/specs/features/api/4_verify/cancel_pipeline_when_block_user_spec.rb": 6.86094856262207,
+ "qa/specs/features/browser_ui/3_create/snippet/delete_file_from_snippet_spec.rb": 51.54451298713684,
+ "qa/specs/features/ee/browser_ui/3_create/merge_request/add_batch_comments_in_merge_request_spec.rb": 25.940913677215576,
+ "qa/specs/features/browser_ui/3_create/repository/branch_with_unusual_name_spec.rb": 18.586050033569336,
+ "qa/specs/features/browser_ui/3_create/web_ide/open_web_ide_from_diff_tab_spec.rb": 35.587294578552246,
+ "qa/specs/features/browser_ui/1_manage/project/view_project_activity_spec.rb": 14.01547122001648,
+ "qa/specs/features/browser_ui/4_verify/runner/register_runner_spec.rb": 20.370421409606934,
+ "qa/specs/features/browser_ui/3_create/wiki/project_based_directory_management_spec.rb": 15.297787427902222,
+ "qa/specs/features/browser_ui/3_create/snippet/add_comment_to_snippet_spec.rb": 42.507469177246094,
+ "qa/specs/features/ee/browser_ui/4_verify/pipeline_status_on_operation_dashboard_spec.rb": 46.77937316894531,
+ "qa/specs/features/ee/browser_ui/3_create/repository/merge_with_code_owner_in_root_group_spec.rb": 131.23758912086487,
+ "qa/specs/features/browser_ui/4_verify/pipeline/run_pipeline_via_web_only_spec.rb": 20.96509575843811,
+ "qa/specs/features/browser_ui/3_create/merge_request/cherry_pick/cherry_pick_a_merge_spec.rb": 44.40894651412964,
+ "qa/specs/features/browser_ui/3_create/snippet/create_personal_snippet_spec.rb": 12.62861156463623,
+ "qa/specs/features/browser_ui/3_create/merge_request/revert/reverting_merge_request_spec.rb": 49.85329723358154,
+ "qa/specs/features/browser_ui/1_manage/login/log_in_with_2fa_spec.rb": 84.63548684120178,
+ "qa/specs/features/browser_ui/3_create/repository/protocol_v2_push_http_spec.rb": 15.584527254104614,
+ "qa/specs/features/browser_ui/3_create/web_ide/review_merge_request_spec.rb": 30.72457480430603,
+ "qa/specs/features/api/3_create/merge_request/push_options_title_description_spec.rb": 10.70707631111145,
+ "qa/specs/features/ee/api/1_manage/user/minimal_access_user_spec.rb": 4.82462477684021,
+ "qa/specs/features/browser_ui/1_manage/project/project_access_token_spec.rb": 16.23528742790222,
+ "qa/specs/features/browser_ui/3_create/snippet/share_snippet_spec.rb": 32.49313712120056,
+ "qa/specs/features/browser_ui/3_create/wiki/project_based_list_spec.rb": 32.37481236457825,
+ "qa/specs/features/browser_ui/3_create/design_management/add_design_content_spec.rb": 15.82662057876587,
+ "qa/specs/features/browser_ui/2_plan/issue/filter_issue_comments_spec.rb": 16.573434114456177,
+ "qa/specs/features/browser_ui/3_create/repository/push_mirroring_over_http_spec.rb": 43.15674066543579,
+ "qa/specs/features/ee/browser_ui/secure/license_compliance_spec.rb": 31.000027179718018,
+ "qa/specs/features/ee/browser_ui/1_manage/project/project_audit_logs_spec.rb": 149.64519357681274,
+ "qa/specs/features/ee/browser_ui/1_manage/group/restrict_by_ip_address_spec.rb": 116.07316851615906,
+ "qa/specs/features/browser_ui/1_manage/login/register_spec.rb": 145.5431580543518,
+ "qa/specs/features/browser_ui/3_create/repository/file/create_file_via_web_spec.rb": 19.418848514556885,
+ "qa/specs/features/browser_ui/6_release/deploy_key/add_deploy_key_spec.rb": 18.54582905769348,
+ "qa/specs/features/browser_ui/3_create/merge_request/rebase_merge_request_spec.rb": 65.43303656578064,
+ "qa/specs/features/api/5_package/container_registry_spec.rb": 3.93778920173645,
+ "qa/specs/features/ee/browser_ui/3_create/repository/restrict_push_protected_branch_spec.rb": 148.70570707321167,
+ "qa/specs/features/ee/browser_ui/6_release/multi-project_pipelines_spec.rb": 52.770936250686646,
+ "qa/specs/features/ee/browser_ui/3_create/contribution_analytics_spec.rb": 45.81806302070618,
+ "qa/specs/features/browser_ui/4_verify/pipeline/include_local_config_file_paths_with_wildcard_spec.rb": 20.386794805526733
+}
diff --git a/qa/qa.rb b/qa/qa.rb
index 922b17391a7..5c1e68d101e 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -68,6 +68,7 @@ module QA
autoload :Sandbox, 'qa/resource/sandbox'
autoload :Group, 'qa/resource/group'
autoload :Issue, 'qa/resource/issue'
+ autoload :ProjectIssueNote, 'qa/resource/project_issue_note'
autoload :Project, 'qa/resource/project'
autoload :Label, 'qa/resource/label'
autoload :MergeRequest, 'qa/resource/merge_request'
@@ -415,6 +416,10 @@ module QA
end
end
+ module User
+ autoload :Show, 'qa/page/user/show'
+ end
+
module Issuable
autoload :New, 'qa/page/issuable/new'
end
diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/main/menu.rb
index 6c4c8b274e3..693f61ba97c 100644
--- a/qa/qa/page/main/menu.rb
+++ b/qa/qa/page/main/menu.rb
@@ -125,6 +125,12 @@ module QA
end
end
+ def click_user_profile_link
+ within_user_menu do
+ click_element(:user_profile_link)
+ end
+ end
+
def search_for(term)
fill_element :search_term_field, "#{term}\n"
end
diff --git a/qa/qa/page/user/show.rb b/qa/qa/page/user/show.rb
new file mode 100644
index 00000000000..ad2de331ad9
--- /dev/null
+++ b/qa/qa/page/user/show.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module QA
+ module Page
+ module User
+ class Show < Page::Base
+ view 'app/views/users/show.html.haml' do
+ element :follow_user_link
+ element :following_link
+ end
+
+ view 'app/views/shared/users/_user.html.haml' do
+ element :user_link
+ end
+
+ view 'app/views/users/_overview.html.haml' do
+ element :user_activity_content
+ end
+
+ def click_follow_user_link
+ click_element(:follow_user_link)
+ end
+
+ def click_following_link
+ click_element(:following_link)
+ end
+
+ def click_user_link(username)
+ click_element(:user_link, username: username)
+ end
+
+ def has_activity?(activity)
+ within_element(:user_activity_content) do
+ has_text?(activity)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/qa/qa/resource/project_issue_note.rb b/qa/qa/resource/project_issue_note.rb
new file mode 100644
index 00000000000..0eb34380332
--- /dev/null
+++ b/qa/qa/resource/project_issue_note.rb
@@ -0,0 +1,61 @@
+# frozen_string_literal: true
+
+require 'securerandom'
+
+module QA
+ module Resource
+ class ProjectIssueNote < Base
+ attr_writer :body
+
+ attribute :project do
+ Project.fabricate! do |resource|
+ resource.name = 'project-for-issue-notes'
+ resource.description = 'project for adding notes to issues'
+ end
+ end
+
+ attribute :issue do
+ Issue.fabricate! do |resource|
+ resource.project = project
+ resource.title = 'Issue for adding notes.'
+ resource.description = 'Issue for adding notes.'
+ end
+ end
+
+ attribute :id
+ attribute :body
+
+ def initialize
+ @body = "Issue note body #{SecureRandom.hex(8)}"
+ end
+
+ def fabricate!
+ issue.visit!
+
+ Page::Project::Issue::Show.perform do |show|
+ show.comment(@body)
+ end
+ end
+
+ def resource_web_url(resource)
+ super
+ rescue ResourceURLMissingError
+ # this particular resource does not expose a web_url property
+ end
+
+ def api_get_path
+ "/projects/#{project.id}/issues/#{issue.iid}/notes/#{id}"
+ end
+
+ def api_post_path
+ "/projects/#{project.id}/issues/#{issue.iid}/notes"
+ end
+
+ def api_post_body
+ {
+ body: body
+ }
+ end
+ end
+ end
+end
diff --git a/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb b/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb
new file mode 100644
index 00000000000..964cd453049
--- /dev/null
+++ b/qa/qa/specs/features/browser_ui/1_manage/user/follow_user_activity_spec.rb
@@ -0,0 +1,97 @@
+# frozen_string_literal: true
+
+module QA
+ RSpec.describe 'Manage' do
+ describe 'User', :requires_admin do
+ let(:admin_api_client) { Runtime::API::Client.as_admin }
+
+ let(:user) do
+ Resource::User.fabricate_via_api! do |user|
+ user.api_client = admin_api_client
+ end
+ end
+
+ let(:user_api_client) do
+ Runtime::API::Client.new(:gitlab, user: user)
+ end
+
+ let(:group) do
+ group = QA::Resource::Group.fabricate_via_api! do |group|
+ group.path = "group_for_follow_user_activity_#{SecureRandom.hex(8)}"
+ end
+ group.add_member(user)
+ group
+ end
+
+ let(:project) do
+ Resource::Project.fabricate_via_api! do |project|
+ project.name = 'project-for-tags'
+ project.initialize_with_readme = true
+ project.api_client = user_api_client
+ project.group = group
+ end
+ end
+
+ let(:merge_request) do
+ Resource::MergeRequest.fabricate_via_api! do |mr|
+ mr.project = project
+ mr.api_client = user_api_client
+ end
+ end
+
+ let(:issue) do
+ Resource::Issue.fabricate_via_api! do |issue|
+ issue.project = project
+ issue.api_client = user_api_client
+ end
+ end
+
+ let(:comment) do
+ Resource::ProjectIssueNote.fabricate_via_api! do |project_issue_note|
+ project_issue_note.project = project
+ project_issue_note.issue = issue
+ project_issue_note.body = 'This is a comment'
+ project_issue_note.api_client = user_api_client
+ end
+ end
+
+ before do
+ # Create both tokens before logging in the first time so that we don't need to log out in the middle of the test
+ admin_api_client.personal_access_token
+ user_api_client.personal_access_token
+ end
+
+ it 'can be followed and their activity seen', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/issues/1773' do
+ Flow::Login.sign_in
+ page.visit Runtime::Scenario.gitlab_address + "/#{user.username}"
+ Page::User::Show.perform(&:click_follow_user_link)
+
+ expect(page).to have_text("No activities found")
+
+ project
+ merge_request
+ issue
+ comment
+
+ Page::Main::Menu.perform(&:click_user_profile_link)
+ Page::User::Show.perform do |show|
+ show.click_following_link
+ show.click_user_link(user.username)
+
+ aggregate_failures do
+ expect(show).to have_activity('created project')
+ expect(show).to have_activity('opened merge request')
+ expect(show).to have_activity('opened issue')
+ expect(show).to have_activity('commented on issue')
+ end
+ end
+ end
+
+ after do
+ project.api_client = admin_api_client
+ project.remove_via_api!
+ user.remove_via_api!
+ end
+ end
+ end
+end
diff --git a/spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js b/spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js
index cfe6e45332e..77c19162747 100644
--- a/spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js
+++ b/spec/frontend/jobs/components/table/cells.vue/job_cell_spec.js
@@ -6,11 +6,13 @@ import { mockJobsInTable } from '../../../mock_data';
const mockJob = mockJobsInTable[0];
const mockJobCreatedByTag = mockJobsInTable[1];
+const mockJobLimitedAccess = mockJobsInTable[2];
describe('Job Cell', () => {
let wrapper;
- const findJobId = () => wrapper.findByTestId('job-id');
+ const findJobIdLink = () => wrapper.findByTestId('job-id-link');
+ const findJobIdNoLink = () => wrapper.findByTestId('job-id-limited-access');
const findJobRef = () => wrapper.findByTestId('job-ref');
const findJobSha = () => wrapper.findByTestId('job-sha');
const findLabelIcon = () => wrapper.findByTestId('label-icon');
@@ -34,15 +36,24 @@ describe('Job Cell', () => {
});
describe('Job Id', () => {
- beforeEach(() => {
+ it('displays the job id and links to the job', () => {
createComponent();
- });
- it('displays the job id and links to the job', () => {
const expectedJobId = `#${getIdFromGraphQLId(mockJob.id)}`;
- expect(findJobId().text()).toBe(expectedJobId);
- expect(findJobId().attributes('href')).toBe(mockJob.detailedStatus.detailsPath);
+ expect(findJobIdLink().text()).toBe(expectedJobId);
+ expect(findJobIdLink().attributes('href')).toBe(mockJob.detailedStatus.detailsPath);
+ expect(findJobIdNoLink().exists()).toBe(false);
+ });
+
+ it('display the job id with no link', () => {
+ createComponent(mockJobLimitedAccess);
+
+ const expectedJobId = `#${getIdFromGraphQLId(mockJobLimitedAccess.id)}`;
+
+ expect(findJobIdNoLink().text()).toBe(expectedJobId);
+ expect(findJobIdNoLink().exists()).toBe(true);
+ expect(findJobIdLink().exists()).toBe(false);
});
});
diff --git a/spec/frontend/jobs/mock_data.js b/spec/frontend/jobs/mock_data.js
index 85bdd87abc6..6d9a5b77f5a 100644
--- a/spec/frontend/jobs/mock_data.js
+++ b/spec/frontend/jobs/mock_data.js
@@ -1322,6 +1322,7 @@ export const mockJobsInTable = [
playable: true,
cancelable: false,
active: false,
+ userPermissions: { readBuild: true, __typename: 'JobPermissions' },
__typename: 'CiJob',
},
{
@@ -1360,6 +1361,7 @@ export const mockJobsInTable = [
playable: false,
cancelable: false,
active: false,
+ userPermissions: { readBuild: true, __typename: 'JobPermissions' },
__typename: 'CiJob',
},
{
@@ -1405,6 +1407,7 @@ export const mockJobsInTable = [
playable: false,
cancelable: false,
active: false,
+ userPermissions: { readBuild: false, __typename: 'JobPermissions' },
__typename: 'CiJob',
},
];
@@ -1492,6 +1495,7 @@ export const mockJobsQueryResponse = {
playable: false,
cancelable: false,
active: false,
+ userPermissions: { readBuild: true, __typename: 'JobPermissions' },
__typename: 'CiJob',
},
],
diff --git a/spec/models/concerns/bulk_insert_safe_spec.rb b/spec/models/concerns/bulk_insert_safe_spec.rb
index e40b0cf11ff..ca6df506ee8 100644
--- a/spec/models/concerns/bulk_insert_safe_spec.rb
+++ b/spec/models/concerns/bulk_insert_safe_spec.rb
@@ -5,6 +5,10 @@ require 'spec_helper'
RSpec.describe BulkInsertSafe do
before(:all) do
ActiveRecord::Schema.define do
+ create_table :bulk_insert_parent_items, force: true do |t|
+ t.string :name, null: false
+ end
+
create_table :bulk_insert_items, force: true do |t|
t.string :name, null: true
t.integer :enum_value, null: false
@@ -12,6 +16,7 @@ RSpec.describe BulkInsertSafe do
t.string :encrypted_secret_value_iv, null: false
t.binary :sha_value, null: false, limit: 20
t.jsonb :jsonb_value, null: false
+ t.belongs_to :bulk_insert_parent_item, foreign_key: true, null: true
t.index :name, unique: true
end
@@ -21,9 +26,23 @@ RSpec.describe BulkInsertSafe do
after(:all) do
ActiveRecord::Schema.define do
drop_table :bulk_insert_items, force: true
+ drop_table :bulk_insert_parent_items, force: true
end
end
+ BulkInsertParentItem = Class.new(ActiveRecord::Base) do
+ self.table_name = :bulk_insert_parent_items
+ self.inheritance_column = :_type_disabled
+
+ def self.name
+ table_name.singularize.camelcase
+ end
+ end
+
+ let_it_be(:bulk_insert_parent_item) do
+ BulkInsertParentItem.create!(name: 'parent')
+ end
+
let_it_be(:bulk_insert_item_class) do
Class.new(ActiveRecord::Base) do
self.table_name = 'bulk_insert_items'
@@ -33,6 +52,8 @@ RSpec.describe BulkInsertSafe do
validates :name, :enum_value, :secret_value, :sha_value, :jsonb_value, presence: true
+ belongs_to :bulk_insert_parent_item
+
sha_attribute :sha_value
enum enum_value: { case_1: 1 }
@@ -51,8 +72,8 @@ RSpec.describe BulkInsertSafe do
'BulkInsertItem'
end
- def self.valid_list(count)
- Array.new(count) { |n| new(name: "item-#{n}", secret_value: 'my-secret') }
+ def self.valid_list(count, bulk_insert_parent_item: nil)
+ Array.new(count) { |n| new(name: "item-#{n}", secret_value: 'my-secret', bulk_insert_parent_item: bulk_insert_parent_item) }
end
def self.invalid_list(count)
@@ -117,6 +138,14 @@ RSpec.describe BulkInsertSafe do
bulk_insert_item_class.bulk_insert!(items, batch_size: 5)
end
+ it 'inserts items with belongs_to association' do
+ items = bulk_insert_item_class.valid_list(10, bulk_insert_parent_item: bulk_insert_parent_item)
+
+ bulk_insert_item_class.bulk_insert!(items, batch_size: 5)
+
+ expect(bulk_insert_item_class.last(items.size).map(&:bulk_insert_parent_item)).to eq([bulk_insert_parent_item] * 10)
+ end
+
it 'items can be properly fetched from database' do
items = bulk_insert_item_class.valid_list(10)
@@ -129,8 +158,7 @@ RSpec.describe BulkInsertSafe do
it 'rolls back the transaction when any item is invalid' do
# second batch is bad
- all_items = bulk_insert_item_class.valid_list(10) +
- bulk_insert_item_class.invalid_list(10)
+ all_items = bulk_insert_item_class.valid_list(10) + bulk_insert_item_class.invalid_list(10)
expect do
bulk_insert_item_class.bulk_insert!(all_items, batch_size: 2) rescue nil
diff --git a/spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb b/spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb
index 3db5d7a8d7d..ec9756007f1 100644
--- a/spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb
+++ b/spec/support/shared_examples/models/concerns/bulk_insert_safe_shared_examples.rb
@@ -30,10 +30,6 @@ RSpec.shared_examples 'a BulkInsertSafe model' do |klass|
expect { target_class.set_callback(name) {} }.not_to raise_error
end
end
-
- it 'does not raise an error when the call is triggered by belongs_to' do
- expect { target_class.belongs_to(:other_record) }.not_to raise_error
- end
end
describe '.bulk_insert!' do
diff --git a/yarn.lock b/yarn.lock
index 722fc8f998b..976e85e13d6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3605,10 +3605,10 @@ core-js-pure@^3.0.0:
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813"
integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==
-core-js@^3.1.3, core-js@^3.11.3:
- version "3.11.3"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.11.3.tgz#2835b1f4d10f6d0400bf820cfe6fe64ad067dd3f"
- integrity sha512-DFEW9BllWw781Op5KdYGtXfj3s9Cmykzt16bY6elaVuqXHCUwF/5pv0H3IJ7/I3BGjK7OeU+GrjD1ChCkBJPuA==
+core-js@^3.1.3, core-js@^3.12.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.12.0.tgz#62bac86f7d7f087d40dba3e90a211c2c3c8559ea"
+ integrity sha512-SaMnchL//WwU2Ot1hhkPflE8gzo7uq1FGvUJ8GKmi3TOU7rGTHIU+eir1WGf6qOtTyxdfdcp10yPdGZ59sQ3hw==
core-js@~2.3.0:
version "2.3.0"