diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-23 18:10:47 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-23 18:10:47 +0300 |
commit | 5ff5047fdc2c614f347de5c388424b50a5460165 (patch) | |
tree | 4c6ca5c4cb1e822e4ac213b44b1334000c00fa7d /spec/lib | |
parent | 6cbe9eaeb3b69ff378e23eec3a5f33caf92b6d16 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/lib')
-rw-r--r-- | spec/lib/gitlab/ci/variables/collection/sort_spec.rb (renamed from spec/lib/gitlab/ci/variables/collection/sorted_spec.rb) | 16 | ||||
-rw-r--r-- | spec/lib/gitlab/ci/variables/collection_spec.rb | 45 | ||||
-rw-r--r-- | spec/lib/gitlab/database/bulk_update_spec.rb | 36 |
3 files changed, 69 insertions, 28 deletions
diff --git a/spec/lib/gitlab/ci/variables/collection/sorted_spec.rb b/spec/lib/gitlab/ci/variables/collection/sort_spec.rb index 8a93d43320a..6420798d6f5 100644 --- a/spec/lib/gitlab/ci/variables/collection/sorted_spec.rb +++ b/spec/lib/gitlab/ci/variables/collection/sort_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Gitlab::Ci::Variables::Collection::Sorted do +RSpec.describe Gitlab::Ci::Variables::Collection::Sort do describe '#initialize with non-Collection value' do let_it_be(:project_with_flag_disabled) { create(:project) } let_it_be(:project_with_flag_enabled) { create(:project) } @@ -12,7 +12,7 @@ RSpec.describe Gitlab::Ci::Variables::Collection::Sorted do end context 'when FF :variable_inside_variable is disabled' do - subject { Gitlab::Ci::Variables::Collection::Sorted.new([], project_with_flag_disabled) } + subject { Gitlab::Ci::Variables::Collection::Sort.new([], project_with_flag_disabled) } it 'raises ArgumentError' do expect { subject }.to raise_error(ArgumentError, /Collection object was expected/) @@ -20,7 +20,7 @@ RSpec.describe Gitlab::Ci::Variables::Collection::Sorted do end context 'when FF :variable_inside_variable is enabled' do - subject { Gitlab::Ci::Variables::Collection::Sorted.new([], project_with_flag_enabled) } + subject { Gitlab::Ci::Variables::Collection::Sort.new([], project_with_flag_enabled) } it 'raises ArgumentError' do expect { subject }.to raise_error(ArgumentError, /Collection object was expected/) @@ -83,7 +83,7 @@ RSpec.describe Gitlab::Ci::Variables::Collection::Sorted do with_them do let(:collection) { Gitlab::Ci::Variables::Collection.new(variables) } - subject { Gitlab::Ci::Variables::Collection::Sorted.new(collection, project_with_flag_disabled) } + subject { Gitlab::Ci::Variables::Collection::Sort.new(collection, project_with_flag_disabled) } it 'does not report error' do expect(subject.errors).to eq(nil) @@ -135,7 +135,7 @@ RSpec.describe Gitlab::Ci::Variables::Collection::Sorted do with_them do let(:collection) { Gitlab::Ci::Variables::Collection.new(variables) } - subject { Gitlab::Ci::Variables::Collection::Sorted.new(collection, project_with_flag_enabled) } + subject { Gitlab::Ci::Variables::Collection::Sort.new(collection, project_with_flag_enabled) } it 'errors matches expected validation result' do expect(subject.errors).to eq(validation_result) @@ -149,7 +149,7 @@ RSpec.describe Gitlab::Ci::Variables::Collection::Sorted do end end - describe '#sort' do + describe '#collection' do context 'when FF :variable_inside_variable is disabled' do before do stub_feature_flags(variable_inside_variable: false) @@ -202,7 +202,7 @@ RSpec.describe Gitlab::Ci::Variables::Collection::Sorted do let_it_be(:project) { create(:project) } let(:collection) { Gitlab::Ci::Variables::Collection.new(variables) } - subject { Gitlab::Ci::Variables::Collection::Sorted.new(collection, project).sort } + subject { Gitlab::Ci::Variables::Collection::Sort.new(collection, project).collection } it 'does not expand variables' do is_expected.to be(collection) @@ -280,7 +280,7 @@ RSpec.describe Gitlab::Ci::Variables::Collection::Sorted do let_it_be(:project) { create(:project) } let(:collection) { Gitlab::Ci::Variables::Collection.new(variables) } - subject { Gitlab::Ci::Variables::Collection::Sorted.new(collection, project).sort } + subject { Gitlab::Ci::Variables::Collection::Sort.new(collection, project).collection } it 'returns correctly sorted variables' do expect(subject.map { |var| var[:key] }).to eq(result) diff --git a/spec/lib/gitlab/ci/variables/collection_spec.rb b/spec/lib/gitlab/ci/variables/collection_spec.rb index ac84313ad9f..670d836b4e8 100644 --- a/spec/lib/gitlab/ci/variables/collection_spec.rb +++ b/spec/lib/gitlab/ci/variables/collection_spec.rb @@ -121,4 +121,49 @@ RSpec.describe Gitlab::Ci::Variables::Collection do expect(collection.to_hash).not_to include(TEST1: 'test-1') end end + + describe '#sorted_collection' do + let!(:project) { create(:project) } + + subject { collection.sorted_collection(project) } + + context 'when FF :variable_inside_variable is disabled' do + before do + stub_feature_flags(variable_inside_variable: false) + end + + let(:collection) do + described_class.new + .append(key: 'A', value: 'test-$B') + .append(key: 'B', value: 'test-$C') + .append(key: 'C', value: 'test') + end + + it { is_expected.to be(collection) } + end + + context 'when FF :variable_inside_variable is enabled' do + before do + stub_feature_flags(variable_inside_variable: [project]) + end + + let(:collection) do + described_class.new + .append(key: 'A', value: 'test-$B') + .append(key: 'B', value: 'test-$C') + .append(key: 'C', value: 'test') + end + + it { is_expected.to be_a(Gitlab::Ci::Variables::Collection) } + + it 'returns sorted collection' do + expect(subject.to_a).to eq( + [ + { key: 'C', value: 'test', masked: false, public: true }, + { key: 'B', value: 'test-$C', masked: false, public: true }, + { key: 'A', value: 'test-$B', masked: false, public: true } + ]) + end + end + end end diff --git a/spec/lib/gitlab/database/bulk_update_spec.rb b/spec/lib/gitlab/database/bulk_update_spec.rb index f2a7d6e69d8..dbafada26ca 100644 --- a/spec/lib/gitlab/database/bulk_update_spec.rb +++ b/spec/lib/gitlab/database/bulk_update_spec.rb @@ -13,8 +13,8 @@ RSpec.describe Gitlab::Database::BulkUpdate do i_a, i_b = create_list(:issue, 2) { - i_a => { title: 'Issue a' }, - i_b => { title: 'Issue b' } + i_a => { title: 'Issue a' }, + i_b => { title: 'Issue b' } } end @@ -51,7 +51,7 @@ RSpec.describe Gitlab::Database::BulkUpdate do it 'is possible to update all objects in a single query' do users = create_list(:user, 3) - mapping = users.zip(%w(foo bar baz)).to_h do |u, name| + mapping = users.zip(%w[foo bar baz]).to_h do |u, name| [u, { username: name, admin: true }] end @@ -61,13 +61,13 @@ RSpec.describe Gitlab::Database::BulkUpdate do # We have optimistically updated the values expect(users).to all(be_admin) - expect(users.map(&:username)).to eq(%w(foo bar baz)) + expect(users.map(&:username)).to eq(%w[foo bar baz]) users.each(&:reset) # The values are correct on reset expect(users).to all(be_admin) - expect(users.map(&:username)).to eq(%w(foo bar baz)) + expect(users.map(&:username)).to eq(%w[foo bar baz]) end it 'is possible to update heterogeneous sets' do @@ -79,8 +79,8 @@ RSpec.describe Gitlab::Database::BulkUpdate do mapping = { mr_a => { title: 'MR a' }, - i_a => { title: 'Issue a' }, - i_b => { title: 'Issue b' } + i_a => { title: 'Issue a' }, + i_b => { title: 'Issue b' } } expect do @@ -99,8 +99,8 @@ RSpec.describe Gitlab::Database::BulkUpdate do i_a, i_b = create_list(:issue, 2) mapping = { - i_a => { title: 'Issue a' }, - i_b => { title: 'Issue b' } + i_a => { title: 'Issue a' }, + i_b => { title: 'Issue b' } } described_class.execute(%i[title], mapping) @@ -113,23 +113,19 @@ RSpec.describe Gitlab::Database::BulkUpdate do include_examples 'basic functionality' context 'when prepared statements are configured differently to the normal test environment' do - # rubocop: disable RSpec/LeakyConstantDeclaration - # This cop is disabled because you cannot call establish_connection on - # an anonymous class. - class ActiveRecordBasePreparedStatementsInverted < ActiveRecord::Base - def self.abstract_class? - true # So it gets its own connection + before do + klass = Class.new(ActiveRecord::Base) do + def self.abstract_class? + true # So it gets its own connection + end end - end - # rubocop: enable RSpec/LeakyConstantDeclaration - before_all do + stub_const('ActiveRecordBasePreparedStatementsInverted', klass) + c = ActiveRecord::Base.connection.instance_variable_get(:@config) inverted = c.merge(prepared_statements: !ActiveRecord::Base.connection.prepared_statements) ActiveRecordBasePreparedStatementsInverted.establish_connection(inverted) - end - before do allow(ActiveRecord::Base).to receive(:connection_specification_name) .and_return(ActiveRecordBasePreparedStatementsInverted.connection_specification_name) end |