Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
6f0447dba0
commit
14c866bb2f
2
Gemfile
2
Gemfile
|
@ -4,7 +4,7 @@ source 'https://rubygems.org'
|
|||
|
||||
gem 'rails', '~> 6.1.4.1'
|
||||
|
||||
gem 'bootsnap', '~> 1.4.6'
|
||||
gem 'bootsnap', '~> 1.9.1', require: false
|
||||
|
||||
# Responders respond_to and respond_with
|
||||
gem 'responders', '~> 3.0'
|
||||
|
|
|
@ -148,7 +148,7 @@ GEM
|
|||
rack (>= 0.9.0)
|
||||
bindata (2.4.10)
|
||||
binding_ninja (0.2.3)
|
||||
bootsnap (1.4.6)
|
||||
bootsnap (1.9.1)
|
||||
msgpack (~> 1.0)
|
||||
bootstrap_form (4.2.0)
|
||||
actionpack (>= 5.0)
|
||||
|
@ -1403,7 +1403,7 @@ DEPENDENCIES
|
|||
benchmark-ips (~> 2.3.0)
|
||||
benchmark-memory (~> 0.1)
|
||||
better_errors (~> 2.9.0)
|
||||
bootsnap (~> 1.4.6)
|
||||
bootsnap (~> 1.9.1)
|
||||
bootstrap_form (~> 4.2.0)
|
||||
browser (~> 4.2)
|
||||
bullet (~> 6.1.3)
|
||||
|
|
|
@ -13,5 +13,13 @@ module MergeRequestReviewerState
|
|||
validates :state,
|
||||
presence: true,
|
||||
inclusion: { in: self.states.keys }
|
||||
|
||||
after_initialize :set_state, unless: :persisted?
|
||||
|
||||
def set_state
|
||||
if Feature.enabled?(:mr_attention_requests, self.merge_request&.project, default_enabled: :yaml)
|
||||
self.state = :attention_required
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require_relative 'bundler_setup'
|
||||
require 'bootsnap/setup' if ENV['RAILS_ENV'] != 'production' || %w(1 yes true).include?(ENV['ENABLE_BOOTSNAP'])
|
||||
|
||||
enable_bootsnap_default_value = ENV['RAILS_ENV'] != 'production' ? '1' : '0'
|
||||
require 'bootsnap/setup' if %w(1 yes true).include?(ENV.fetch('ENABLE_BOOTSNAP', enable_bootsnap_default_value))
|
||||
|
|
|
@ -20,7 +20,7 @@ You can use the following environment variables to override certain values:
|
|||
| Variable | Type | Description |
|
||||
|--------------------------------------------|---------|---------------------------------------------------------------------------------------------------------|
|
||||
| `DATABASE_URL` | string | The database URL; is of the form: `postgresql://localhost/blog_development`. |
|
||||
| `ENABLE_BOOTSNAP` | string | Enables Bootsnap for speeding up initial Rails boot (`1` to enable). |
|
||||
| `ENABLE_BOOTSNAP` | string | Toggles [Bootsnap](https://github.com/Shopify/bootsnap) for speeding up initial Rails boot. Enabled by default for non-production environments. Set to `0` to disable. |
|
||||
| `EXTERNAL_URL` | string | Specify the external URL at the [time of installation](https://docs.gitlab.com/omnibus/settings/configuration.html#specifying-the-external-url-at-the-time-of-installation). |
|
||||
| `EXTERNAL_VALIDATION_SERVICE_TIMEOUT` | integer | Timeout, in seconds, for an [external CI/CD pipeline validation service](external_pipeline_validation.md). Default is `5`. |
|
||||
| `EXTERNAL_VALIDATION_SERVICE_URL` | string | URL to an [external CI/CD pipeline validation service](external_pipeline_validation.md). |
|
||||
|
|
|
@ -16,9 +16,15 @@ module QA
|
|||
end
|
||||
|
||||
before do
|
||||
praefect_manager.start_all_nodes
|
||||
praefect_manager.wait_for_replication(project.id)
|
||||
end
|
||||
|
||||
after do
|
||||
# Leave the cluster in a suitable state for subsequent tests
|
||||
praefect_manager.start_all_nodes
|
||||
end
|
||||
|
||||
it 'reads from each node', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/1264' do
|
||||
pre_read_data = praefect_manager.query_read_distribution
|
||||
|
||||
|
@ -42,9 +48,7 @@ module QA
|
|||
|
||||
after do
|
||||
# Leave the cluster in a suitable state for subsequent tests
|
||||
praefect_manager.start_secondary_node
|
||||
praefect_manager.wait_for_health_check_all_nodes
|
||||
praefect_manager.wait_for_reliable_connection
|
||||
praefect_manager.start_all_nodes
|
||||
end
|
||||
|
||||
it 'does not read from the unhealthy node', testcase: 'https://gitlab.com/gitlab-org/quality/testcases/-/quality/test_cases/1263' do
|
||||
|
|
|
@ -78,7 +78,7 @@ RSpec.describe GitlabSchema.types['UserMergeRequestInteraction'] do
|
|||
merge_request.reviewers << user
|
||||
end
|
||||
|
||||
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['UNREVIEWED'].value) }
|
||||
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['ATTENTION_REQUIRED'].value) }
|
||||
|
||||
it 'implies not reviewed' do
|
||||
expect(resolve(:reviewed)).to be false
|
||||
|
@ -87,7 +87,8 @@ RSpec.describe GitlabSchema.types['UserMergeRequestInteraction'] do
|
|||
|
||||
context 'when the user has provided a review' do
|
||||
before do
|
||||
merge_request.merge_request_reviewers.create!(reviewer: user, state: MergeRequestReviewer.states['reviewed'])
|
||||
reviewer = merge_request.merge_request_reviewers.create!(reviewer: user)
|
||||
reviewer.update!(state: MergeRequestReviewer.states['reviewed'])
|
||||
end
|
||||
|
||||
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['REVIEWED'].value) }
|
||||
|
|
|
@ -39,4 +39,6 @@ RSpec.describe MergeRequestAssignee do
|
|||
end
|
||||
|
||||
it_behaves_like 'having unique enum values'
|
||||
|
||||
it_behaves_like 'having reviewer state'
|
||||
end
|
||||
|
|
|
@ -9,6 +9,8 @@ RSpec.describe MergeRequestReviewer do
|
|||
|
||||
it_behaves_like 'having unique enum values'
|
||||
|
||||
it_behaves_like 'having reviewer state'
|
||||
|
||||
describe 'associations' do
|
||||
it { is_expected.to belong_to(:merge_request).class_name('MergeRequest') }
|
||||
it { is_expected.to belong_to(:reviewer).class_name('User').inverse_of(:merge_request_reviewers) }
|
||||
|
|
|
@ -61,7 +61,7 @@ RSpec.describe ::Users::MergeRequestInteraction do
|
|||
merge_request.reviewers << user
|
||||
end
|
||||
|
||||
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['UNREVIEWED'].value) }
|
||||
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['ATTENTION_REQUIRED'].value) }
|
||||
|
||||
it 'implies not reviewed' do
|
||||
expect(interaction).not_to be_reviewed
|
||||
|
@ -70,7 +70,8 @@ RSpec.describe ::Users::MergeRequestInteraction do
|
|||
|
||||
context 'when the user has provided a review' do
|
||||
before do
|
||||
merge_request.merge_request_reviewers.create!(reviewer: user, state: MergeRequestReviewer.states['reviewed'])
|
||||
reviewer = merge_request.merge_request_reviewers.create!(reviewer: user)
|
||||
reviewer.update!(state: MergeRequestReviewer.states['reviewed'])
|
||||
end
|
||||
|
||||
it { is_expected.to eq(Types::MergeRequestReviewStateEnum.values['REVIEWED'].value) }
|
||||
|
|
|
@ -347,7 +347,7 @@ RSpec.describe 'getting merge request information nested in a project' do
|
|||
expect(interaction_data).to contain_exactly a_hash_including(
|
||||
'canMerge' => false,
|
||||
'canUpdate' => can_update,
|
||||
'reviewState' => unreviewed,
|
||||
'reviewState' => attention_required,
|
||||
'reviewed' => false,
|
||||
'approved' => false
|
||||
)
|
||||
|
@ -380,8 +380,8 @@ RSpec.describe 'getting merge request information nested in a project' do
|
|||
describe 'scalability' do
|
||||
let_it_be(:other_users) { create_list(:user, 3) }
|
||||
|
||||
let(:unreviewed) do
|
||||
{ 'reviewState' => 'UNREVIEWED' }
|
||||
let(:attention_required) do
|
||||
{ 'reviewState' => 'ATTENTION_REQUIRED' }
|
||||
end
|
||||
|
||||
let(:reviewed) do
|
||||
|
@ -413,9 +413,9 @@ RSpec.describe 'getting merge request information nested in a project' do
|
|||
expect { post_graphql(query) }.not_to exceed_query_limit(baseline)
|
||||
|
||||
expect(interaction_data).to contain_exactly(
|
||||
include(unreviewed),
|
||||
include(unreviewed),
|
||||
include(unreviewed),
|
||||
include(attention_required),
|
||||
include(attention_required),
|
||||
include(attention_required),
|
||||
include(reviewed)
|
||||
)
|
||||
end
|
||||
|
@ -444,7 +444,7 @@ RSpec.describe 'getting merge request information nested in a project' do
|
|||
|
||||
it_behaves_like 'when requesting information about MR interactions' do
|
||||
let(:field) { :reviewers }
|
||||
let(:unreviewed) { 'UNREVIEWED' }
|
||||
let(:attention_required) { 'ATTENTION_REQUIRED' }
|
||||
let(:can_update) { false }
|
||||
|
||||
def assign_user(user)
|
||||
|
@ -454,7 +454,7 @@ RSpec.describe 'getting merge request information nested in a project' do
|
|||
|
||||
it_behaves_like 'when requesting information about MR interactions' do
|
||||
let(:field) { :assignees }
|
||||
let(:unreviewed) { nil }
|
||||
let(:attention_required) { nil }
|
||||
let(:can_update) { true } # assignees can update MRs
|
||||
|
||||
def assign_user(user)
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
RSpec.shared_examples 'having reviewer state' do
|
||||
describe 'mr_attention_requests feature flag is disabled' do
|
||||
before do
|
||||
stub_feature_flags(mr_attention_requests: false)
|
||||
end
|
||||
|
||||
it { is_expected.to have_attributes(state: 'unreviewed') }
|
||||
end
|
||||
|
||||
describe 'mr_attention_requests feature flag is enabled' do
|
||||
it { is_expected.to have_attributes(state: 'attention_required') }
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue