Browse Source

Fix test failures caused by faulty id generator in ChecksImport examples

Ryan Lue 6 years ago
parent
commit
85d6d78eea
1 changed files with 14 additions and 2 deletions
  1. 14 2
      spec/models/application_model/checks_import_examples.rb

+ 14 - 2
spec/models/application_model/checks_import_examples.rb

@@ -1,7 +1,19 @@
 RSpec.shared_examples 'ApplicationModel::ChecksImport' do
   describe '#id (for referential integrity during OTRS/Zendesk import)' do
-    subject { build(described_class.name.underscore, id: unused_id) }
-    let(:unused_id) { (described_class.pluck(:id).max || 1) * 2 }
+    subject { build(described_class.name.underscore, id: next_id + 1) }
+
+    let(:next_id) do
+      case ActiveRecord::Base.connection_config[:adapter]
+      when 'mysql2'
+        ActiveRecord::Base.connection.execute(<<~QUERY).first.first
+          SELECT max(auto_increment) FROM information_schema.tables WHERE table_name='#{described_class.table_name}'
+        QUERY
+      when 'postgresql'
+        ActiveRecord::Base.connection.execute(<<~QUERY).first['last_value'].next
+          SELECT last_value FROM #{described_class.table_name}_id_seq
+        QUERY
+      end
+    end
 
     context 'when Setting.get("system_init_done") is false (regardless of import_mode)' do
       before { Setting.set('system_init_done', false) }