diff options
Diffstat (limited to 'spec/rubocop/cop/usage_data')
-rw-r--r-- | spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb | 42 | ||||
-rw-r--r-- | spec/rubocop/cop/usage_data/large_table_spec.rb | 56 |
2 files changed, 41 insertions, 57 deletions
diff --git a/spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb b/spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb index 1c90df798a5..b6711effe9e 100644 --- a/spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb +++ b/spec/rubocop/cop/usage_data/distinct_count_by_large_foreign_key_spec.rb @@ -1,17 +1,13 @@ # frozen_string_literal: true require 'fast_spec_helper' - require 'rubocop' -require 'rubocop/rspec/support' require_relative '../../../../rubocop/cop/usage_data/distinct_count_by_large_foreign_key' RSpec.describe RuboCop::Cop::UsageData::DistinctCountByLargeForeignKey do - include CopHelper - let(:allowed_foreign_keys) { [:author_id, :user_id, :'merge_requests.target_project_id'] } - + let(:msg) { 'Avoid doing `distinct_count` on foreign keys for large tables having above 100 million rows.' } let(:config) do RuboCop::Config.new('UsageData/DistinctCountByLargeForeignKey' => { 'AllowedForeignKeys' => allowed_foreign_keys @@ -21,36 +17,32 @@ RSpec.describe RuboCop::Cop::UsageData::DistinctCountByLargeForeignKey do subject(:cop) { described_class.new(config) } context 'when counting by disallowed key' do - it 'registers an offence' do - inspect_source('distinct_count(Issue, :creator_id)') - - expect(cop.offenses.size).to eq(1) + it 'registers an offense' do + expect_offense(<<~CODE) + distinct_count(Issue, :creator_id) + ^^^^^^^^^^^^^^ #{msg} + CODE end - it 'does not register an offence when batch is false' do - inspect_source('distinct_count(Issue, :creator_id, batch: false)') - - expect(cop.offenses).to be_empty + it 'does not register an offense when batch is false' do + expect_no_offenses('distinct_count(Issue, :creator_id, batch: false)') end - it 'register an offence when batch is true' do - inspect_source('distinct_count(Issue, :creator_id, batch: true)') - - expect(cop.offenses.size).to eq(1) + it 'registers an offense when batch is true' do + expect_offense(<<~CODE) + distinct_count(Issue, :creator_id, batch: true) + ^^^^^^^^^^^^^^ #{msg} + CODE end end context 'when calling by allowed key' do - it 'does not register an offence with symbol' do - inspect_source('distinct_count(Issue, :author_id)') - - expect(cop.offenses).to be_empty + it 'does not register an offense with symbol' do + expect_no_offenses('distinct_count(Issue, :author_id)') end - it 'does not register an offence with string' do - inspect_source("distinct_count(Issue, 'merge_requests.target_project_id')") - - expect(cop.offenses).to be_empty + it 'does not register an offense with string' do + expect_no_offenses("distinct_count(Issue, 'merge_requests.target_project_id')") end end end diff --git a/spec/rubocop/cop/usage_data/large_table_spec.rb b/spec/rubocop/cop/usage_data/large_table_spec.rb index 638e8c67dc8..26bd4e61625 100644 --- a/spec/rubocop/cop/usage_data/large_table_spec.rb +++ b/spec/rubocop/cop/usage_data/large_table_spec.rb @@ -1,18 +1,15 @@ # frozen_string_literal: true require 'fast_spec_helper' - require 'rubocop' -require 'rubocop/rspec/support' require_relative '../../../../rubocop/cop/usage_data/large_table' RSpec.describe RuboCop::Cop::UsageData::LargeTable do - include CopHelper - let(:large_tables) { %i[Rails Time] } let(:count_methods) { %i[count distinct_count] } let(:allowed_methods) { %i[minimum maximum] } + let(:msg) { 'Use one of the count, distinct_count methods for counting on' } let(:config) do RuboCop::Config.new('UsageData/LargeTable' => { @@ -31,59 +28,54 @@ RSpec.describe RuboCop::Cop::UsageData::LargeTable do context 'with large tables' do context 'when calling Issue.count' do - it 'register an offence' do - inspect_source('Issue.count') - - expect(cop.offenses.size).to eq(1) + it 'registers an offense' do + expect_offense(<<~CODE) + Issue.count + ^^^^^^^^^^^ #{msg} Issue + CODE end end context 'when calling Issue.active.count' do - it 'register an offence' do - inspect_source('Issue.active.count') - - expect(cop.offenses.size).to eq(1) + it 'registers an offense' do + expect_offense(<<~CODE) + Issue.active.count + ^^^^^^^^^^^^ #{msg} Issue + CODE end end context 'when calling count(Issue)' do - it 'does not register an offence' do - inspect_source('count(Issue)') - - expect(cop.offenses).to be_empty + it 'does not register an offense' do + expect_no_offenses('count(Issue)') end end context 'when calling count(Ci::Build.active)' do - it 'does not register an offence' do - inspect_source('count(Ci::Build.active)') - - expect(cop.offenses).to be_empty + it 'does not register an offense' do + expect_no_offenses('count(Ci::Build.active)') end end context 'when calling Ci::Build.active.count' do - it 'register an offence' do - inspect_source('Ci::Build.active.count') - - expect(cop.offenses.size).to eq(1) + it 'registers an offense' do + expect_offense(<<~CODE) + Ci::Build.active.count + ^^^^^^^^^^^^^^^^ #{msg} Ci::Build + CODE end end context 'when using allowed methods' do - it 'does not register an offence' do - inspect_source('Issue.minimum') - - expect(cop.offenses).to be_empty + it 'does not register an offense' do + expect_no_offenses('Issue.minimum') end end end context 'with non related class' do - it 'does not register an offence' do - inspect_source('Rails.count') - - expect(cop.offenses).to be_empty + it 'does not register an offense' do + expect_no_offenses('Rails.count') end end end |