diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2017-07-14 14:19:00 +0300 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2017-07-14 14:19:00 +0300 |
commit | a004f9ec8c66ea9dcce0e76e28b0a343437c0b16 (patch) | |
tree | c45a2964428e5eefa09be4c907deab3a5f59eb6f /spec/rubocop | |
parent | 7324d86fa9034e9f9da720075212cc13ac92094a (diff) |
Added cop to blacklist the use of hash indexes
These indexes are not recorded in the WAL (at least until PostgreSQL
10) and this isn't worth the minor performance improvement over btree
indexes.
Diffstat (limited to 'spec/rubocop')
-rw-r--r-- | spec/rubocop/cop/migration/hash_index_spec.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/rubocop/cop/migration/hash_index_spec.rb b/spec/rubocop/cop/migration/hash_index_spec.rb new file mode 100644 index 00000000000..9a8576a19e5 --- /dev/null +++ b/spec/rubocop/cop/migration/hash_index_spec.rb @@ -0,0 +1,53 @@ +require 'spec_helper' + +require 'rubocop' +require 'rubocop/rspec/support' + +require_relative '../../../../rubocop/cop/migration/hash_index' + +describe RuboCop::Cop::Migration::HashIndex do + include CopHelper + + subject(:cop) { described_class.new } + + context 'in migration' do + before do + allow(cop).to receive(:in_migration?).and_return(true) + end + + it 'registers an offense when creating a hash index' do + inspect_source(cop, 'def change; add_index :table, :column, using: :hash; end') + + aggregate_failures do + expect(cop.offenses.size).to eq(1) + expect(cop.offenses.map(&:line)).to eq([1]) + end + end + + it 'registers an offense when creating a concurrent hash index' do + inspect_source(cop, 'def change; add_concurrent_index :table, :column, using: :hash; end') + + aggregate_failures do + expect(cop.offenses.size).to eq(1) + expect(cop.offenses.map(&:line)).to eq([1]) + end + end + + it 'registers an offense when creating a hash index using t.index' do + inspect_source(cop, 'def change; t.index :table, :column, using: :hash; end') + + aggregate_failures do + expect(cop.offenses.size).to eq(1) + expect(cop.offenses.map(&:line)).to eq([1]) + end + end + end + + context 'outside of migration' do + it 'registers no offense' do + inspect_source(cop, 'def change; index :table, :column, using: :hash; end') + + expect(cop.offenses.size).to eq(0) + end + end +end |