Skip to content

Commit

Permalink
Add a test expecting *_id columns to be bigint type
Browse files Browse the repository at this point in the history
  • Loading branch information
bdunne committed Aug 9, 2018
1 parent 332cd7c commit 264b7d0
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions spec/automated_review/id_columns_are_bigint_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
require 'set'
describe "*_id columns" do
EXCEPTIONS_LIST = Set.new(
[
"authentications.ldap_id",
"authentications.rhsm_pool_id",
"cloud_networks.provider_segmentation_id",
"container_volumes.common_volume_id",
"miq_queue.task_id",
"network_ports.binding_host_id",
"scan_histories.task_id",
"sessions.session_id"
]
).freeze

it "should be type bigint" do
ActiveRecord::Base.connection.tables.each do |table|
next if ManageIQ::Schema::SYSTEM_TABLES.include?(table)
DatabaseHelper.columns_for_table(table).each do |column|
next unless column.name.end_with?("_id")
if "#{table}.#{column.name}".in?(EXCEPTIONS_LIST)
expect(column.sql_type).not_to eq("bigint"), "Thanks for fixing technical debt!!! Please remove '#{table}.#{column.name}' from EXCEPTIONS_LIST in #{__FILE__}"
else
expect(column.sql_type).to eq("bigint"), "Expected foreign key column #{table}.#{column.name} to be type 'bigint', got: '#{column.sql_type}'"
end
end
end
end
end

0 comments on commit 264b7d0

Please sign in to comment.