thirdbase 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.travis.yml +24 -0
  4. data/.yardopts +1 -0
  5. data/Appraisals +19 -0
  6. data/CHANGELOG.md +37 -0
  7. data/Gemfile +2 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +191 -0
  10. data/Rakefile +24 -0
  11. data/VERSION +1 -0
  12. data/gemfiles/rails40.gemfile +8 -0
  13. data/gemfiles/rails41.gemfile +8 -0
  14. data/gemfiles/rails42.gemfile +8 -0
  15. data/gemfiles/rails50.gemfile +8 -0
  16. data/lib/rails/second_base/generators/migration_generator.rb +25 -0
  17. data/lib/third_base.rb +20 -0
  18. data/lib/third_base/base.rb +8 -0
  19. data/lib/third_base/databases.rake +121 -0
  20. data/lib/third_base/databases_rails_five.rake +22 -0
  21. data/lib/third_base/databases_rails_four.rake +22 -0
  22. data/lib/third_base/forced.rb +21 -0
  23. data/lib/third_base/on_base.rb +36 -0
  24. data/lib/third_base/railtie.rb +52 -0
  25. data/lib/third_base/test_help.rb +11 -0
  26. data/lib/third_base/version.rb +3 -0
  27. data/lib/thirdbase.rb +1 -0
  28. data/test/cases/dbtask_test.rb +248 -0
  29. data/test/cases/forced_test.rb +49 -0
  30. data/test/cases/generator_test.rb +64 -0
  31. data/test/cases/on_base_test.rb +35 -0
  32. data/test/cases/railtie_test.rb +31 -0
  33. data/test/cases/rake_test.rb +0 -0
  34. data/test/dummy_apps/rails_five/Rakefile +2 -0
  35. data/test/dummy_apps/rails_five/app/controllers/application_controller.rb +7 -0
  36. data/test/dummy_apps/rails_five/app/helpers/application_helper.rb +3 -0
  37. data/test/dummy_apps/rails_five/app/models/application_record.rb +3 -0
  38. data/test/dummy_apps/rails_five/app/models/comment.rb +6 -0
  39. data/test/dummy_apps/rails_five/app/models/comment_forced.rb +6 -0
  40. data/test/dummy_apps/rails_five/app/models/post.rb +7 -0
  41. data/test/dummy_apps/rails_five/app/models/user.rb +6 -0
  42. data/test/dummy_apps/rails_five/bin/rails +5 -0
  43. data/test/dummy_apps/rails_five/config/database.yml +13 -0
  44. data/test/dummy_apps/rails_five/config/routes.rb +3 -0
  45. data/test/dummy_apps/rails_five/db/migrate/20141209165002_create_users.rb +11 -0
  46. data/test/dummy_apps/rails_five/db/migrate/20141214142700_create_posts.rb +12 -0
  47. data/test/dummy_apps/rails_five/db/secondbase/migrate/20151202075826_create_comments.rb +11 -0
  48. data/test/dummy_apps/rails_five/init.rb +42 -0
  49. data/test/dummy_apps/rails_five/log/.keep +0 -0
  50. data/test/dummy_apps/rails_five/tmp/.keep +0 -0
  51. data/test/dummy_apps/rails_four/Rakefile +2 -0
  52. data/test/dummy_apps/rails_four/app/controllers/application_controller.rb +7 -0
  53. data/test/dummy_apps/rails_four/app/helpers/application_helper.rb +3 -0
  54. data/test/dummy_apps/rails_four/app/models/comment.rb +6 -0
  55. data/test/dummy_apps/rails_four/app/models/comment_forced.rb +6 -0
  56. data/test/dummy_apps/rails_four/app/models/post.rb +7 -0
  57. data/test/dummy_apps/rails_four/app/models/user.rb +6 -0
  58. data/test/dummy_apps/rails_four/bin/rails +5 -0
  59. data/test/dummy_apps/rails_four/config/database.yml +14 -0
  60. data/test/dummy_apps/rails_four/config/routes.rb +3 -0
  61. data/test/dummy_apps/rails_four/db/migrate/20141209165002_create_users.rb +11 -0
  62. data/test/dummy_apps/rails_four/db/migrate/20141214142700_create_posts.rb +12 -0
  63. data/test/dummy_apps/rails_four/db/secondbase/migrate/20151202075826_create_comments.rb +11 -0
  64. data/test/dummy_apps/rails_four/init.rb +42 -0
  65. data/test/dummy_apps/rails_four/log/.keep +0 -0
  66. data/test/dummy_apps/rails_four/tmp/.keep +0 -0
  67. data/test/test_helper.rb +46 -0
  68. data/test/test_helpers/dummy_app_helpers.rb +94 -0
  69. data/test/test_helpers/rails_version_helpers.rb +29 -0
  70. data/test/test_helpers/stream_helpers.rb +40 -0
  71. data/thirdbase.gemspec +25 -0
  72. metadata +247 -0
@@ -0,0 +1,8 @@
1
+ module ThirdBase
2
+ class Base < ActiveRecord::Base
3
+
4
+ self.abstract_class = true
5
+ establish_connection ThirdBase.config
6
+
7
+ end
8
+ end
@@ -0,0 +1,121 @@
1
+ namespace :db do
2
+ namespace :third_base do
3
+
4
+ namespace :create do
5
+ task :all do
6
+ ThirdBase.on_base { Rake::Task['db:create:all'].execute }
7
+ end
8
+ end
9
+
10
+ task :create do
11
+ ThirdBase.on_base { Rake::Task['db:create'].execute }
12
+ end
13
+
14
+ namespace :drop do
15
+ task :all do
16
+ ThirdBase.on_base { Rake::Task['db:drop:all'].execute }
17
+ end
18
+ end
19
+
20
+ namespace :purge do
21
+ task :all do
22
+ ThirdBase.on_base { Rake::Task['db:purge:all'].execute }
23
+ end
24
+ end
25
+
26
+ task :purge do
27
+ ThirdBase.on_base { Rake::Task['db:purge'].execute }
28
+ end
29
+
30
+ task :migrate do
31
+ ThirdBase.on_base { Rake::Task['db:migrate'].execute }
32
+ end
33
+
34
+ namespace :migrate do
35
+
36
+ task :redo => ['db:load_config'] do
37
+ ThirdBase.on_base { Rake::Task['db:migrate:redo'].execute }
38
+ end
39
+
40
+ task :up => ['db:load_config'] do
41
+ ThirdBase.on_base { Rake::Task['db:migrate:up'].execute }
42
+ end
43
+
44
+ task :down => ['db:load_config'] do
45
+ ThirdBase.on_base { Rake::Task['db:migrate:down'].execute }
46
+ end
47
+
48
+ task :status => ['db:load_config'] do
49
+ ThirdBase.on_base { Rake::Task['db:migrate:status'].execute }
50
+ end
51
+
52
+ end
53
+
54
+ task :rollback => ['db:load_config'] do
55
+ ThirdBase.on_base { Rake::Task['db:rollback'].execute }
56
+ end
57
+
58
+ task :forward => ['db:load_config'] do
59
+ ThirdBase.on_base { Rake::Task['db:forward'].execute }
60
+ end
61
+
62
+ task :abort_if_pending_migrations do
63
+ ThirdBase.on_base { Rake::Task['db:abort_if_pending_migrations'].execute }
64
+ end
65
+
66
+ task :version => ['db:load_config'] do
67
+ ThirdBase.on_base { Rake::Task['db:version'].execute }
68
+ end
69
+
70
+ namespace :schema do
71
+
72
+ task :load do
73
+ ThirdBase.on_base { Rake::Task['db:schema:load'].execute }
74
+ end
75
+
76
+ end
77
+
78
+ namespace :structure do
79
+
80
+ task :load do
81
+ ThirdBase.on_base { Rake::Task['db:structure:load'].execute }
82
+ end
83
+
84
+ end
85
+
86
+ namespace :test do
87
+
88
+ task :purge do
89
+ ThirdBase.on_base { Rake::Task['db:test:purge'].execute }
90
+ end
91
+
92
+ task :load_schema do
93
+ ThirdBase.on_base { Rake::Task['db:test:load_schema'].execute }
94
+ end
95
+
96
+ task :load_structure do
97
+ ThirdBase.on_base { Rake::Task['db:test:load_structure'].execute }
98
+ end
99
+
100
+ task :prepare do
101
+ ThirdBase.on_base { Rake::Task['db:test:prepare'].execute }
102
+ end
103
+
104
+ end
105
+
106
+ end
107
+ end
108
+
109
+ %w{
110
+ create:all create drop:all purge:all purge
111
+ migrate migrate:status abort_if_pending_migrations
112
+ schema:load structure:load
113
+ test:purge test:load_schema test:load_structure test:prepare
114
+ }.each do |name|
115
+ task = Rake::Task["db:#{name}"] rescue nil
116
+ next unless task && ThirdBase::Railtie.run_with_db_tasks?
117
+ task.enhance do
118
+ Rake::Task["db:load_config"].invoke
119
+ Rake::Task["db:third_base:#{name}"].invoke
120
+ end
121
+ end
@@ -0,0 +1,22 @@
1
+ namespace :db do
2
+ namespace :third_base do
3
+ task "drop:_unsafe" do
4
+ ThirdBase.on_base { Rake::Task['db:drop:_unsafe'].execute }
5
+ end
6
+
7
+ namespace :migrate do
8
+ task :reset => ['db:third_base:drop:_unsafe', 'db:third_base:create', 'db:third_base:migrate']
9
+ end
10
+ end
11
+ end
12
+
13
+ %w{
14
+ drop:_unsafe
15
+ }.each do |name|
16
+ task = Rake::Task["db:#{name}"] rescue nil
17
+ next unless task && ThirdBase::Railtie.run_with_db_tasks?
18
+ task.enhance do
19
+ Rake::Task["db:load_config"].invoke
20
+ Rake::Task["db:third_base:#{name}"].invoke
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ namespace :db do
2
+ namespace :third_base do
3
+ task :drop do
4
+ ThirdBase.on_base { Rake::Task['db:drop'].execute }
5
+ end
6
+
7
+ namespace :migrate do
8
+ task :reset => ['db:third_base:drop', 'db:third_base:create', 'db:third_base:migrate']
9
+ end
10
+ end
11
+ end
12
+
13
+ %w{
14
+ drop
15
+ }.each do |name|
16
+ task = Rake::Task["db:#{name}"] rescue nil
17
+ next unless task && ThirdBase::Railtie.run_with_db_tasks?
18
+ task.enhance do
19
+ Rake::Task["db:load_config"].invoke
20
+ Rake::Task["db:third_base:#{name}"].invoke
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ module ThirdBase
2
+ module Forced
3
+
4
+ def connection_pool
5
+ ThirdBase::Base.connection_pool
6
+ end
7
+
8
+ def retrieve_connection
9
+ ThirdBase::Base.retrieve_connection
10
+ end
11
+
12
+ def connected?
13
+ ThirdBase::Base.connected?
14
+ end
15
+
16
+ def remove_connection(klass = self)
17
+ ThirdBase::Base.remove_connection
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,36 @@
1
+ module ThirdBase
2
+
3
+ mattr_accessor :is_on_base, instance_accessor: false
4
+ self.is_on_base = false
5
+
6
+ def self.on_base
7
+ already_on_base = is_on_base
8
+ if already_on_base
9
+ yield
10
+ return
11
+ end
12
+ original_config = ActiveRecord::Tasks::DatabaseTasks.current_config
13
+ original_configurations = ActiveRecord::Base.configurations
14
+ original_migrations_path = ActiveRecord::Tasks::DatabaseTasks.migrations_paths
15
+ original_db_dir = ActiveRecord::Tasks::DatabaseTasks.db_dir
16
+ ActiveRecord::Tasks::DatabaseTasks.current_config = config
17
+ ActiveRecord::Base.configurations = original_configurations[Railtie.config_key]
18
+ ActiveRecord::Base.establish_connection(config)
19
+ ActiveRecord::Tasks::DatabaseTasks.migrations_paths = [ThirdBase::Railtie.fullpath('migrate')]
20
+ ActiveRecord::Tasks::DatabaseTasks.db_dir = ThirdBase::Railtie.fullpath
21
+ ActiveRecord::Migrator.migrations_paths = ActiveRecord::Tasks::DatabaseTasks.migrations_paths
22
+ self.is_on_base = true
23
+ yield
24
+ ensure
25
+ unless already_on_base
26
+ ActiveRecord::Base.configurations = original_configurations
27
+ ActiveRecord::Tasks::DatabaseTasks.migrations_paths = original_migrations_path
28
+ ActiveRecord::Tasks::DatabaseTasks.db_dir = original_db_dir
29
+ ActiveRecord::Migrator.migrations_paths = ActiveRecord::Tasks::DatabaseTasks.migrations_paths
30
+ ActiveRecord::Tasks::DatabaseTasks.current_config = original_config
31
+ ActiveRecord::Base.establish_connection(original_config)
32
+ self.is_on_base = false
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,52 @@
1
+ module ThirdBase
2
+ class Railtie < Rails::Railtie
3
+
4
+ config.third_base = ActiveSupport::OrderedOptions.new
5
+ config.third_base.path = 'db/thirdbase'
6
+ config.third_base.config_key = 'thirdbase'
7
+ config.third_base.run_with_db_tasks = true
8
+
9
+ config.after_initialize do |app|
10
+ thirdbase_dir = app.root.join(config.third_base.path)
11
+ FileUtils.mkdir(thirdbase_dir) unless File.directory?(thirdbase_dir)
12
+ end
13
+
14
+ rake_tasks do
15
+ load 'third_base/databases.rake'
16
+
17
+ if Rails.version.to_i == 4
18
+ load 'third_base/databases_rails_four.rake'
19
+ else
20
+ load 'third_base/databases_rails_five.rake'
21
+ end
22
+
23
+ end
24
+
25
+ generators do
26
+ require 'rails/third_base/generators/migration_generator'
27
+ end
28
+
29
+ initializer 'third_base.add_watchable_files' do |app|
30
+ thirdbase_dir = app.root.join(config.third_base.path)
31
+ config.watchable_files.concat ["#{thirdbase_dir}/schema.rb", "#{thirdbase_dir}/structure.sql"]
32
+ end
33
+
34
+ def config_path
35
+ config.third_base.path
36
+ end
37
+
38
+ def config_key
39
+ config.third_base.config_key
40
+ end
41
+
42
+ def run_with_db_tasks?
43
+ config.third_base.run_with_db_tasks
44
+ end
45
+
46
+ def fullpath(extra=nil)
47
+ path = Rails.root.join(config.third_base.path)
48
+ (extra ? path.join(path, extra) : path).to_s
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,11 @@
1
+ if defined?(ActiveRecord::Base)
2
+
3
+ # Support test schema sync for Rails 4.2.x and up.
4
+ if ActiveRecord::Migration.respond_to? :maintain_test_schema!
5
+ ThirdBase.on_base do
6
+ ActiveRecord::Migration.maintain_test_schema!
7
+ end
8
+ end
9
+
10
+
11
+ end
@@ -0,0 +1,3 @@
1
+ module ThirdBase
2
+ VERSION = File.read(File.expand_path("../../../VERSION", __FILE__)).chomp
3
+ end
data/lib/thirdbase.rb ADDED
@@ -0,0 +1 @@
1
+ require 'third_base'
@@ -0,0 +1,248 @@
1
+ require 'test_helper'
2
+
3
+ class DbTaskTest < ThirdBase::TestCase
4
+
5
+ def test_db_create
6
+ refute_dummy_databases
7
+ run_db :create
8
+ assert_dummy_databases
9
+ end
10
+
11
+ def test_db_create_all
12
+ refute_dummy_databases
13
+ run_db 'create:all'
14
+ assert_dummy_databases
15
+ end
16
+
17
+ def test_db_setup
18
+ run_db :create
19
+ run_db :migrate
20
+ assert_dummy_databases
21
+ run_db :drop
22
+ refute_dummy_databases
23
+ run_db :setup
24
+ assert_dummy_databases
25
+ end
26
+
27
+ def test_db_drop
28
+ run_db :create
29
+ run_db :drop
30
+ refute_dummy_databases
31
+ end
32
+
33
+ def test_db_drop_all
34
+ run_db :create
35
+ run_db 'drop:all'
36
+ refute_dummy_databases
37
+ end
38
+
39
+ def test_db_purge_all
40
+ skip 'Rails 4.2 & Up' unless rails_42_up?
41
+ run_db :create
42
+ run_db :migrate
43
+ assert_dummy_databases
44
+ run_db 'purge:all'
45
+ establish_connection
46
+ assert_no_tables
47
+ end
48
+
49
+ def test_db_purge
50
+ skip 'Rails 4.2 & Up' unless rails_42_up?
51
+ run_db :create
52
+ run_db :migrate
53
+ assert_dummy_databases
54
+ run_db :purge
55
+ establish_connection
56
+ assert_no_tables
57
+ end
58
+
59
+ def test_db_migrate
60
+ run_db :create
61
+ run_db :migrate
62
+ # First database and schema.
63
+ schema = File.read(dummy_schema)
64
+ assert_match %r{version: 20141214142700}, schema
65
+ assert_match %r{create_table "users"}, schema
66
+ assert_match %r{create_table "posts"}, schema
67
+ refute_match %r{create_table "comments"}, schema
68
+ assert_connection_tables ActiveRecord::Base, ['users', 'posts']
69
+ # Second database and schema.
70
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
71
+ assert_match %r{version: 20151202075826}, thirdbase_schema
72
+ refute_match %r{create_table "users"}, thirdbase_schema
73
+ refute_match %r{create_table "posts"}, thirdbase_schema
74
+ assert_match %r{create_table "comments"}, thirdbase_schema
75
+ assert_connection_tables ThirdBase::Base, ['comments']
76
+ end
77
+
78
+ def test_thirdbase_migrate_updown
79
+ run_db :create
80
+ run_db :migrate
81
+ assert_match(/no migration.*20151202075826/i, run_db('migrate:down VERSION=20151202075826', :stderr))
82
+ run_thirdbase 'migrate:down VERSION=20151202075826'
83
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
84
+ refute_match %r{version: 20151202075826}, thirdbase_schema
85
+ refute_match %r{create_table "comments"}, thirdbase_schema
86
+ assert_match(/no migration.*20151202075826/i, run_db('migrate:up VERSION=20151202075826', :stderr))
87
+ run_thirdbase 'migrate:up VERSION=20151202075826'
88
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
89
+ assert_match %r{version: 20151202075826}, thirdbase_schema
90
+ assert_match %r{create_table "comments"}, thirdbase_schema
91
+ end
92
+
93
+ def test_thirdbase_migrate_reset
94
+ run_db :create
95
+ run_db :migrate
96
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
97
+ assert_match %r{version: 20151202075826}, thirdbase_schema
98
+ assert_match %r{create_table "comments"}, thirdbase_schema
99
+ FileUtils.rm_rf dummy_thirdbase_schema
100
+ run_thirdbase 'migrate:reset'
101
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
102
+ assert_match %r{version: 20151202075826}, thirdbase_schema
103
+ assert_match %r{create_table "comments"}, thirdbase_schema
104
+ end
105
+
106
+ def test_thirdbase_migrate_redo
107
+ run_db :create
108
+ run_db :migrate
109
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
110
+ assert_match %r{version: 20151202075826}, thirdbase_schema
111
+ assert_match %r{create_table "comments"}, thirdbase_schema
112
+ FileUtils.rm_rf dummy_thirdbase_schema
113
+ run_thirdbase 'migrate:redo'
114
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
115
+ assert_match %r{version: 20151202075826}, thirdbase_schema
116
+ assert_match %r{create_table "comments"}, thirdbase_schema
117
+ # Can redo latest ThirdBase migration using previous VERSION env.
118
+ version = dummy_migration[:version]
119
+ run_db :migrate
120
+ assert_match %r{version: #{version}}, File.read(dummy_thirdbase_schema)
121
+ establish_connection
122
+ Comment.create! body: 'test', user_id: 420
123
+ run_thirdbase 'migrate:redo VERSION=20151202075826'
124
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
125
+ assert_match %r{version: #{version}}, thirdbase_schema
126
+ assert_match %r{create_table "comments"}, thirdbase_schema
127
+ establish_connection
128
+ assert_nil Comment.first
129
+ end
130
+
131
+ def test_thirdbase_migrate_status
132
+ run_db :create
133
+ stream = rails_42_up? ? :stderr : :stdout
134
+ assert_match %r{migrations table does not exist}, run_thirdbase('migrate:status', stream)
135
+ run_db :migrate
136
+ assert_match %r{up.*20151202075826}, run_thirdbase('migrate:status')
137
+ version = dummy_migration[:version]
138
+ status = run_thirdbase('migrate:status')
139
+ assert_match %r{up.*20151202075826}, status
140
+ assert_match %r{down.*#{version}}, status
141
+ end
142
+
143
+ def test_thirdbase_forward_and_rollback
144
+ run_db :create
145
+ run_db :migrate
146
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
147
+ assert_match %r{version: 20151202075826}, thirdbase_schema
148
+ refute_match %r{create_table "foos"}, thirdbase_schema
149
+ version = dummy_migration[:version] # ActiveRecord does not support start index 0.
150
+ run_thirdbase :forward
151
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
152
+ assert_match %r{version: #{version}}, thirdbase_schema
153
+ assert_match %r{create_table "foos"}, thirdbase_schema
154
+ run_thirdbase :rollback
155
+ thirdbase_schema = File.read(dummy_thirdbase_schema)
156
+ assert_match %r{version: 20151202075826}, thirdbase_schema
157
+ refute_match %r{create_table "foos"}, thirdbase_schema
158
+ end
159
+
160
+ def test_db_test_purge
161
+ run_db :create
162
+ assert_dummy_databases
163
+ run_db 'test:purge'
164
+ establish_connection
165
+ assert_no_tables
166
+ end
167
+
168
+ def test_db_test_load_schema
169
+ run_db :create
170
+ assert_dummy_databases
171
+ run_db 'test:purge'
172
+ run_db :migrate
173
+ Dir.chdir(dummy_root) { `rake db:test:load_schema` }
174
+ establish_connection
175
+ assert_connection_tables ActiveRecord::Base, ['users', 'posts']
176
+ assert_connection_tables ThirdBase::Base, ['comments']
177
+ end
178
+
179
+ def test_abort_if_pending
180
+ run_db :create
181
+ run_db :migrate
182
+ assert_equal "", run_db(:abort_if_pending_migrations, :stderr)
183
+ version = dummy_migration[:version]
184
+ capture(:stderr) do
185
+ stdout = run_db :abort_if_pending_migrations
186
+ assert_match(/1 pending migration/, stdout)
187
+ assert_match(/#{version}/, stdout)
188
+ end
189
+ end
190
+
191
+ def test_db_test_load_structure
192
+ run_db :create
193
+ assert_dummy_databases
194
+ run_db 'test:purge'
195
+ Dir.chdir(dummy_root) { `env SCHEMA_FORMAT=sql rake db:migrate` }
196
+ Dir.chdir(dummy_root) { `rake db:test:load_structure` }
197
+ establish_connection
198
+ assert_connection_tables ActiveRecord::Base, ['users', 'posts']
199
+ assert_connection_tables ThirdBase::Base, ['comments']
200
+ end
201
+
202
+ def test_thirdbase_version
203
+ run_db :create
204
+ assert_match(/version: 0/, run_thirdbase(:version))
205
+ run_db :migrate
206
+ assert_match(/version: 20141214142700/, run_db(:version))
207
+ assert_match(/version: 20151202075826/, run_thirdbase(:version))
208
+ end
209
+
210
+ def test_thirdbase_db_tasks_disabled
211
+ refute_dummy_databases
212
+ run_db :create, :stdout, false
213
+ assert_dummy_created_but_not_thirdbase
214
+ end
215
+
216
+ private
217
+
218
+ def assert_dummy_created_but_not_thirdbase
219
+ assert_equal 'base.sqlite3', dummy_database_sqlite
220
+ refute_match(/thirdbase_test/, `mysql -uroot -e "SHOW DATABASES"`)
221
+ end
222
+
223
+ def assert_no_tables
224
+ if ActiveRecord::Base.connection.respond_to? :data_sources
225
+ assert_equal [], ActiveRecord::Base.connection.data_sources
226
+ assert_equal [], ThirdBase::Base.connection.data_sources
227
+ else
228
+ assert_equal [], ActiveRecord::Base.connection.tables
229
+ assert_equal [], ThirdBase::Base.connection.tables
230
+ end
231
+ end
232
+
233
+ def assert_connection_tables(model, expected_tables)
234
+ establish_connection
235
+
236
+ if ActiveRecord::Base.connection.respond_to? :data_sources
237
+ tables = model.connection.data_sources
238
+ else
239
+ tables = model.connection.tables
240
+ end
241
+
242
+ expected_tables.each do |table|
243
+ message = "Expected #{model.name} tables #{tables.inspect} to include #{table.inspect}"
244
+ assert tables.include?(table), message
245
+ end
246
+ end
247
+
248
+ end