X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d10a66b66edc088d33bad52aebd7cac0a6e9ce49..964ab3dd90ff1508efc0c77378cde2b3a4da1029:/services/api/test/unit/arvados_model_test.rb diff --git a/services/api/test/unit/arvados_model_test.rb b/services/api/test/unit/arvados_model_test.rb index e47aa3b892..8c75764789 100644 --- a/services/api/test/unit/arvados_model_test.rb +++ b/services/api/test/unit/arvados_model_test.rb @@ -86,4 +86,27 @@ class ArvadosModelTest < ActiveSupport::TestCase properties: {'foo' => 'bar'}.with_indifferent_access) end end + + [['uuid', {unique: true}], + ['owner_uuid', {}]].each do |the_column, requires| + test "unique index on all models with #{the_column}" do + checked = 0 + ActiveRecord::Base.connection.tables.each do |table| + columns = ActiveRecord::Base.connection.columns(table) + + next unless columns.collect(&:name).include? the_column + + indexes = ActiveRecord::Base.connection.indexes(table).reject do |index| + requires.map do |key, val| + index.send(key) == val + end.include? false + end + assert_includes indexes.collect(&:columns), [the_column], 'no index' + checked += 1 + end + # Sanity check: make sure we didn't just systematically miss everything. + assert_operator(10, :<, checked, + "Only #{checked} tables have a #{the_column}?!") + end + end end