diff options
Diffstat (limited to 'spec/support/helpers/database/table_schema_helpers.rb')
-rw-r--r-- | spec/support/helpers/database/table_schema_helpers.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/spec/support/helpers/database/table_schema_helpers.rb b/spec/support/helpers/database/table_schema_helpers.rb index 48d33442110..472eaa45b4b 100644 --- a/spec/support/helpers/database/table_schema_helpers.rb +++ b/spec/support/helpers/database/table_schema_helpers.rb @@ -43,6 +43,14 @@ module Database expect(index_exists_by_name(name, schema: schema)).to be_nil end + def expect_foreign_key_to_exist(table_name, name, schema: nil) + expect(foreign_key_exists_by_name(table_name, name, schema: schema)).to eq(true) + end + + def expect_foreign_key_not_to_exist(table_name, name, schema: nil) + expect(foreign_key_exists_by_name(table_name, name, schema: schema)).to be_nil + end + def expect_check_constraint(table_name, name, definition, schema: nil) expect(check_constraint_definition(table_name, name, schema: schema)).to eq("CHECK ((#{definition}))") end @@ -133,6 +141,18 @@ module Database SQL end + def foreign_key_exists_by_name(table_name, foreign_key_name, schema: nil) + table_name = schema ? "#{schema}.#{table_name}" : table_name + + connection.select_value(<<~SQL) + SELECT true + FROM pg_catalog.pg_constraint + WHERE pg_constraint.conrelid = '#{table_name}'::regclass + AND pg_constraint.contype = 'f' + AND pg_constraint.conname = '#{foreign_key_name}' + SQL + end + def check_constraint_definition(table_name, constraint_name, schema: nil) table_name = schema ? "#{schema}.#{table_name}" : table_name |