ros-apartment 2.3.0.alpha2 → 2.6.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 (151) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/.rubocop-linter.yml +22 -0
  3. data/.pryrc +5 -3
  4. data/.rubocop.yml +21 -0
  5. data/.rubocop_todo.yml +29 -0
  6. data/.story_branch.yml +4 -0
  7. data/.travis.yml +15 -36
  8. data/Appraisals +16 -29
  9. data/Gemfile +4 -1
  10. data/Guardfile +3 -1
  11. data/HISTORY.md +7 -0
  12. data/README.md +80 -39
  13. data/Rakefile +45 -23
  14. data/apartment.gemspec +33 -25
  15. data/gemfiles/rails_4_2.gemfile +12 -10
  16. data/gemfiles/rails_5_0.gemfile +2 -1
  17. data/gemfiles/rails_5_1.gemfile +2 -1
  18. data/gemfiles/rails_5_2.gemfile +2 -1
  19. data/gemfiles/rails_6_0.gemfile +6 -5
  20. data/gemfiles/rails_master.gemfile +2 -1
  21. data/lib/apartment.rb +36 -11
  22. data/lib/apartment/active_record/connection_handling.rb +17 -0
  23. data/lib/apartment/active_record/internal_metadata.rb +11 -0
  24. data/lib/apartment/active_record/schema_migration.rb +13 -0
  25. data/lib/apartment/adapters/abstract_adapter.rb +50 -45
  26. data/lib/apartment/adapters/abstract_jdbc_adapter.rb +4 -3
  27. data/lib/apartment/adapters/jdbc_mysql_adapter.rb +3 -3
  28. data/lib/apartment/adapters/jdbc_postgresql_adapter.rb +20 -13
  29. data/lib/apartment/adapters/mysql2_adapter.rb +10 -9
  30. data/lib/apartment/adapters/postgis_adapter.rb +3 -2
  31. data/lib/apartment/adapters/postgresql_adapter.rb +55 -27
  32. data/lib/apartment/adapters/sqlite3_adapter.rb +18 -8
  33. data/lib/apartment/console.rb +35 -3
  34. data/lib/apartment/custom_console.rb +42 -0
  35. data/lib/apartment/deprecation.rb +2 -1
  36. data/lib/apartment/elevators/domain.rb +4 -3
  37. data/lib/apartment/elevators/first_subdomain.rb +3 -2
  38. data/lib/apartment/elevators/generic.rb +4 -3
  39. data/lib/apartment/elevators/host.rb +6 -1
  40. data/lib/apartment/elevators/host_hash.rb +6 -2
  41. data/lib/apartment/elevators/subdomain.rb +9 -5
  42. data/lib/apartment/migrator.rb +4 -3
  43. data/lib/apartment/model.rb +27 -0
  44. data/lib/apartment/railtie.rb +26 -15
  45. data/lib/apartment/reloader.rb +2 -1
  46. data/lib/apartment/tasks/enhancements.rb +4 -6
  47. data/lib/apartment/tenant.rb +19 -9
  48. data/lib/apartment/version.rb +3 -1
  49. data/lib/generators/apartment/install/install_generator.rb +4 -3
  50. data/lib/generators/apartment/install/templates/apartment.rb +3 -2
  51. data/lib/tasks/apartment.rake +24 -19
  52. metadata +79 -256
  53. data/spec/adapters/jdbc_mysql_adapter_spec.rb +0 -19
  54. data/spec/adapters/jdbc_postgresql_adapter_spec.rb +0 -41
  55. data/spec/adapters/mysql2_adapter_spec.rb +0 -59
  56. data/spec/adapters/postgresql_adapter_spec.rb +0 -61
  57. data/spec/adapters/sqlite3_adapter_spec.rb +0 -83
  58. data/spec/apartment_spec.rb +0 -11
  59. data/spec/config/database.yml.sample +0 -49
  60. data/spec/dummy/Rakefile +0 -7
  61. data/spec/dummy/app/controllers/application_controller.rb +0 -6
  62. data/spec/dummy/app/helpers/application_helper.rb +0 -2
  63. data/spec/dummy/app/models/company.rb +0 -3
  64. data/spec/dummy/app/models/user.rb +0 -3
  65. data/spec/dummy/app/views/application/index.html.erb +0 -1
  66. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  67. data/spec/dummy/config.ru +0 -4
  68. data/spec/dummy/config/application.rb +0 -49
  69. data/spec/dummy/config/boot.rb +0 -11
  70. data/spec/dummy/config/database.yml.sample +0 -44
  71. data/spec/dummy/config/environment.rb +0 -5
  72. data/spec/dummy/config/environments/development.rb +0 -28
  73. data/spec/dummy/config/environments/production.rb +0 -51
  74. data/spec/dummy/config/environments/test.rb +0 -34
  75. data/spec/dummy/config/initializers/apartment.rb +0 -4
  76. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  77. data/spec/dummy/config/initializers/inflections.rb +0 -10
  78. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  79. data/spec/dummy/config/initializers/secret_token.rb +0 -7
  80. data/spec/dummy/config/initializers/session_store.rb +0 -8
  81. data/spec/dummy/config/locales/en.yml +0 -5
  82. data/spec/dummy/config/routes.rb +0 -3
  83. data/spec/dummy/db/migrate/20110613152810_create_dummy_models.rb +0 -39
  84. data/spec/dummy/db/migrate/20111202022214_create_table_books.rb +0 -14
  85. data/spec/dummy/db/migrate/20180415260934_create_public_tokens.rb +0 -13
  86. data/spec/dummy/db/schema.rb +0 -55
  87. data/spec/dummy/db/seeds.rb +0 -5
  88. data/spec/dummy/db/seeds/import.rb +0 -5
  89. data/spec/dummy/public/404.html +0 -26
  90. data/spec/dummy/public/422.html +0 -26
  91. data/spec/dummy/public/500.html +0 -26
  92. data/spec/dummy/public/favicon.ico +0 -0
  93. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  94. data/spec/dummy/script/rails +0 -6
  95. data/spec/dummy_engine/.gitignore +0 -8
  96. data/spec/dummy_engine/Gemfile +0 -15
  97. data/spec/dummy_engine/Rakefile +0 -34
  98. data/spec/dummy_engine/bin/rails +0 -12
  99. data/spec/dummy_engine/config/initializers/apartment.rb +0 -51
  100. data/spec/dummy_engine/dummy_engine.gemspec +0 -24
  101. data/spec/dummy_engine/lib/dummy_engine.rb +0 -4
  102. data/spec/dummy_engine/lib/dummy_engine/engine.rb +0 -4
  103. data/spec/dummy_engine/lib/dummy_engine/version.rb +0 -3
  104. data/spec/dummy_engine/test/dummy/Rakefile +0 -6
  105. data/spec/dummy_engine/test/dummy/config.ru +0 -4
  106. data/spec/dummy_engine/test/dummy/config/application.rb +0 -22
  107. data/spec/dummy_engine/test/dummy/config/boot.rb +0 -5
  108. data/spec/dummy_engine/test/dummy/config/database.yml +0 -25
  109. data/spec/dummy_engine/test/dummy/config/environment.rb +0 -5
  110. data/spec/dummy_engine/test/dummy/config/environments/development.rb +0 -37
  111. data/spec/dummy_engine/test/dummy/config/environments/production.rb +0 -78
  112. data/spec/dummy_engine/test/dummy/config/environments/test.rb +0 -39
  113. data/spec/dummy_engine/test/dummy/config/initializers/assets.rb +0 -8
  114. data/spec/dummy_engine/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  115. data/spec/dummy_engine/test/dummy/config/initializers/cookies_serializer.rb +0 -3
  116. data/spec/dummy_engine/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  117. data/spec/dummy_engine/test/dummy/config/initializers/inflections.rb +0 -16
  118. data/spec/dummy_engine/test/dummy/config/initializers/mime_types.rb +0 -4
  119. data/spec/dummy_engine/test/dummy/config/initializers/session_store.rb +0 -3
  120. data/spec/dummy_engine/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  121. data/spec/dummy_engine/test/dummy/config/locales/en.yml +0 -23
  122. data/spec/dummy_engine/test/dummy/config/routes.rb +0 -56
  123. data/spec/dummy_engine/test/dummy/config/secrets.yml +0 -22
  124. data/spec/examples/connection_adapter_examples.rb +0 -42
  125. data/spec/examples/generic_adapter_custom_configuration_example.rb +0 -95
  126. data/spec/examples/generic_adapter_examples.rb +0 -163
  127. data/spec/examples/schema_adapter_examples.rb +0 -234
  128. data/spec/integration/apartment_rake_integration_spec.rb +0 -107
  129. data/spec/integration/query_caching_spec.rb +0 -81
  130. data/spec/integration/use_within_an_engine_spec.rb +0 -28
  131. data/spec/schemas/v1.rb +0 -16
  132. data/spec/schemas/v2.rb +0 -43
  133. data/spec/schemas/v3.rb +0 -49
  134. data/spec/spec_helper.rb +0 -61
  135. data/spec/support/apartment_helpers.rb +0 -43
  136. data/spec/support/capybara_sessions.rb +0 -15
  137. data/spec/support/config.rb +0 -10
  138. data/spec/support/contexts.rb +0 -52
  139. data/spec/support/requirements.rb +0 -35
  140. data/spec/support/setup.rb +0 -46
  141. data/spec/tasks/apartment_rake_spec.rb +0 -129
  142. data/spec/tenant_spec.rb +0 -190
  143. data/spec/unit/config_spec.rb +0 -112
  144. data/spec/unit/elevators/domain_spec.rb +0 -32
  145. data/spec/unit/elevators/first_subdomain_spec.rb +0 -24
  146. data/spec/unit/elevators/generic_spec.rb +0 -54
  147. data/spec/unit/elevators/host_hash_spec.rb +0 -32
  148. data/spec/unit/elevators/host_spec.rb +0 -89
  149. data/spec/unit/elevators/subdomain_spec.rb +0 -76
  150. data/spec/unit/migrator_spec.rb +0 -77
  151. data/spec/unit/reloader_spec.rb +0 -24
@@ -1,234 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples_for "a schema based apartment adapter" do
4
- include Apartment::Spec::AdapterRequirements
5
-
6
- let(:schema1){ db1 }
7
- let(:schema2){ db2 }
8
- let(:public_schema){ default_tenant }
9
-
10
- describe "#init" do
11
-
12
- before do
13
- Apartment.configure do |config|
14
- config.excluded_models = ["Company"]
15
- end
16
- end
17
-
18
- after do
19
- # Apartment::Tenant.init creates per model connection.
20
- # Remove the connection after testing not to unintentionally keep the connection across tests.
21
- Apartment.excluded_models.each do |excluded_model|
22
- excluded_model.constantize.remove_connection
23
- end
24
- end
25
-
26
- it "should process model exclusions" do
27
- Apartment::Tenant.init
28
-
29
- expect(Company.table_name).to eq("public.companies")
30
- end
31
-
32
- context "with a default_schema", :default_schema => true do
33
-
34
- it "should set the proper table_name on excluded_models" do
35
- Apartment::Tenant.init
36
-
37
- expect(Company.table_name).to eq("#{default_schema}.companies")
38
- end
39
-
40
- it 'sets the search_path correctly' do
41
- Apartment::Tenant.init
42
-
43
- expect(User.connection.schema_search_path).to match(%r|#{default_schema}|)
44
- end
45
- end
46
-
47
- context "persistent_schemas", :persistent_schemas => true do
48
- it "sets the persistent schemas in the schema_search_path" do
49
- Apartment::Tenant.init
50
- expect(connection.schema_search_path).to end_with persistent_schemas.map { |schema| %{"#{schema}"} }.join(', ')
51
- end
52
- end
53
- end
54
-
55
- #
56
- # Creates happen already in our before_filter
57
- #
58
- describe "#create" do
59
-
60
- it "should load schema.rb to new schema" do
61
- connection.schema_search_path = schema1
62
- expect(connection.tables).to include('companies')
63
- end
64
-
65
- it "should yield to block if passed and reset" do
66
- subject.drop(schema2) # so we don't get errors on creation
67
-
68
- @count = 0 # set our variable so its visible in and outside of blocks
69
-
70
- subject.create(schema2) do
71
- @count = User.count
72
- expect(connection.schema_search_path).to start_with %{"#{schema2}"}
73
- User.create
74
- end
75
-
76
- expect(connection.schema_search_path).not_to start_with %{"#{schema2}"}
77
-
78
- subject.switch(schema2){ expect(User.count).to eq(@count + 1) }
79
- end
80
-
81
- context "numeric database names" do
82
- let(:db){ 1234 }
83
- it "should allow them" do
84
- expect {
85
- subject.create(db)
86
- }.to_not raise_error
87
- expect(tenant_names).to include(db.to_s)
88
- end
89
-
90
- after{ subject.drop(db) }
91
- end
92
-
93
- end
94
-
95
- describe "#drop" do
96
- it "should raise an error for unknown database" do
97
- expect {
98
- subject.drop "unknown_database"
99
- }.to raise_error(Apartment::TenantNotFound)
100
- end
101
-
102
- context "numeric database names" do
103
- let(:db){ 1234 }
104
-
105
- it "should be able to drop them" do
106
- subject.create(db)
107
- expect {
108
- subject.drop(db)
109
- }.to_not raise_error
110
- expect(tenant_names).not_to include(db.to_s)
111
- end
112
-
113
- after { subject.drop(db) rescue nil }
114
- end
115
- end
116
-
117
- describe "#switch" do
118
- it "connects and resets" do
119
- subject.switch(schema1) do
120
- expect(connection.schema_search_path).to start_with %{"#{schema1}"}
121
- end
122
-
123
- expect(connection.schema_search_path).to start_with %{"#{public_schema}"}
124
- end
125
- end
126
-
127
- describe "#reset" do
128
- it "should reset connection" do
129
- subject.switch!(schema1)
130
- subject.reset
131
- expect(connection.schema_search_path).to start_with %{"#{public_schema}"}
132
- end
133
-
134
- context "with default_schema", :default_schema => true do
135
- it "should reset to the default schema" do
136
- subject.switch!(schema1)
137
- subject.reset
138
- expect(connection.schema_search_path).to start_with %{"#{default_schema}"}
139
- end
140
- end
141
-
142
- context "persistent_schemas", :persistent_schemas => true do
143
- before do
144
- subject.switch!(schema1)
145
- subject.reset
146
- end
147
-
148
- it "maintains the persistent schemas in the schema_search_path" do
149
- expect(connection.schema_search_path).to end_with persistent_schemas.map { |schema| %{"#{schema}"} }.join(', ')
150
- end
151
-
152
- context "with default_schema", :default_schema => true do
153
- it "prioritizes the switched schema to front of schema_search_path" do
154
- subject.reset # need to re-call this as the default_schema wasn't set at the time that the above reset ran
155
- expect(connection.schema_search_path).to start_with %{"#{default_schema}"}
156
- end
157
- end
158
- end
159
- end
160
-
161
- describe "#switch!" do
162
- it "should connect to new schema" do
163
- subject.switch!(schema1)
164
- expect(connection.schema_search_path).to start_with %{"#{schema1}"}
165
- end
166
-
167
- it "should reset connection if database is nil" do
168
- subject.switch!
169
- expect(connection.schema_search_path).to eq(%{"#{public_schema}"})
170
- end
171
-
172
- it "should raise an error if schema is invalid" do
173
- expect {
174
- subject.switch! 'unknown_schema'
175
- }.to raise_error(Apartment::TenantNotFound)
176
- end
177
-
178
- context "numeric databases" do
179
- let(:db){ 1234 }
180
-
181
- it "should connect to them" do
182
- subject.create(db)
183
- expect {
184
- subject.switch!(db)
185
- }.to_not raise_error
186
-
187
- expect(connection.schema_search_path).to start_with %{"#{db.to_s}"}
188
- end
189
-
190
- after{ subject.drop(db) }
191
- end
192
-
193
- describe "with default_schema specified", :default_schema => true do
194
- before do
195
- subject.switch!(schema1)
196
- end
197
-
198
- it "should switch out the default schema rather than public" do
199
- expect(connection.schema_search_path).not_to include default_schema
200
- end
201
-
202
- it "should still switch to the switched schema" do
203
- expect(connection.schema_search_path).to start_with %{"#{schema1}"}
204
- end
205
- end
206
-
207
- context "persistent_schemas", :persistent_schemas => true do
208
-
209
- before{ subject.switch!(schema1) }
210
-
211
- it "maintains the persistent schemas in the schema_search_path" do
212
- expect(connection.schema_search_path).to end_with persistent_schemas.map { |schema| %{"#{schema}"} }.join(', ')
213
- end
214
-
215
- it "prioritizes the switched schema to front of schema_search_path" do
216
- expect(connection.schema_search_path).to start_with %{"#{schema1}"}
217
- end
218
- end
219
- end
220
-
221
- describe "#current" do
222
- it "should return the current schema name" do
223
- subject.switch!(schema1)
224
- expect(subject.current).to eq(schema1)
225
- end
226
-
227
- context "persistent_schemas", :persistent_schemas => true do
228
- it "should exlude persistent_schemas" do
229
- subject.switch!(schema1)
230
- expect(subject.current).to eq(schema1)
231
- end
232
- end
233
- end
234
- end
@@ -1,107 +0,0 @@
1
- require 'spec_helper'
2
- require 'rake'
3
-
4
- describe "apartment rake tasks", database: :postgresql do
5
-
6
- before do
7
- @rake = Rake::Application.new
8
- Rake.application = @rake
9
- Dummy::Application.load_tasks
10
-
11
- # rails tasks running F up the schema...
12
- Rake::Task.define_task('db:migrate')
13
- Rake::Task.define_task('db:seed')
14
- Rake::Task.define_task('db:rollback')
15
- Rake::Task.define_task('db:migrate:up')
16
- Rake::Task.define_task('db:migrate:down')
17
- Rake::Task.define_task('db:migrate:redo')
18
-
19
- Apartment.configure do |config|
20
- config.use_schemas = true
21
- config.excluded_models = ["Company"]
22
- config.tenant_names = lambda{ Company.pluck(:database) }
23
- end
24
- Apartment::Tenant.reload!(config)
25
-
26
- # fix up table name of shared/excluded models
27
- Company.table_name = 'public.companies'
28
- end
29
-
30
- after { Rake.application = nil }
31
-
32
- context "with x number of databases" do
33
-
34
- let(:x){ 1 + rand(5) } # random number of dbs to create
35
- let(:db_names){ x.times.map{ Apartment::Test.next_db } }
36
- let!(:company_count){ db_names.length }
37
-
38
- before do
39
- db_names.collect do |db_name|
40
- Apartment::Tenant.create(db_name)
41
- Company.create :database => db_name
42
- end
43
- end
44
-
45
- after do
46
- db_names.each{ |db| Apartment::Tenant.drop(db) }
47
- Company.delete_all
48
- end
49
-
50
- context "with ActiveRecord below 5.2.0" do
51
- before do
52
- allow(ActiveRecord::Migrator).to receive(:migrations_paths) { %w(spec/dummy/db/migrate) }
53
- allow(Apartment::Migrator).to receive(:activerecord_below_5_2?) { true }
54
- end
55
-
56
- describe "#migrate" do
57
- it "should migrate all databases" do
58
- expect(ActiveRecord::Migrator).to receive(:migrate).exactly(company_count).times
59
-
60
- @rake['apartment:migrate'].invoke
61
- end
62
- end
63
-
64
- describe "#rollback" do
65
- it "should rollback all dbs" do
66
- expect(ActiveRecord::Migrator).to receive(:rollback).exactly(company_count).times
67
-
68
- @rake['apartment:rollback'].invoke
69
- end
70
- end
71
- end
72
-
73
- context "with ActiveRecord above or equal to 5.2.0" do
74
- let(:migration_context_double) { double(:migration_context) }
75
-
76
- before do
77
- allow(Apartment::Migrator).to receive(:activerecord_below_5_2?) { false }
78
- end
79
-
80
- describe "#migrate" do
81
- it "should migrate all databases" do
82
- allow(ActiveRecord::Base.connection).to receive(:migration_context) { migration_context_double }
83
- expect(migration_context_double).to receive(:migrate).exactly(company_count).times
84
-
85
- @rake['apartment:migrate'].invoke
86
- end
87
- end
88
-
89
- describe "#rollback" do
90
- it "should rollback all dbs" do
91
- allow(ActiveRecord::Base.connection).to receive(:migration_context) { migration_context_double }
92
- expect(migration_context_double).to receive(:rollback).exactly(company_count).times
93
-
94
- @rake['apartment:rollback'].invoke
95
- end
96
- end
97
- end
98
-
99
- describe "apartment:seed" do
100
- it "should seed all databases" do
101
- expect(Apartment::Tenant).to receive(:seed).exactly(company_count).times
102
-
103
- @rake['apartment:seed'].invoke
104
- end
105
- end
106
- end
107
- end
@@ -1,81 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe 'query caching' do
4
- describe 'when use_schemas = true' do
5
- let(:db_names) { [db1, db2] }
6
-
7
- before do
8
- Apartment.configure do |config|
9
- config.excluded_models = ["Company"]
10
- config.tenant_names = lambda{ Company.pluck(:database) }
11
- config.use_schemas = true
12
- end
13
-
14
- Apartment::Tenant.reload!(config)
15
-
16
- db_names.each do |db_name|
17
- Apartment::Tenant.create(db_name)
18
- Company.create database: db_name
19
- end
20
- end
21
-
22
- after do
23
- db_names.each{ |db| Apartment::Tenant.drop(db) }
24
- Apartment::Tenant.reset
25
- Company.delete_all
26
- end
27
-
28
- it 'clears the ActiveRecord::QueryCache after switching databases' do
29
- db_names.each do |db_name|
30
- Apartment::Tenant.switch! db_name
31
- User.create! name: db_name
32
- end
33
-
34
- ActiveRecord::Base.connection.enable_query_cache!
35
-
36
- Apartment::Tenant.switch! db_names.first
37
- expect(User.find_by_name(db_names.first).name).to eq(db_names.first)
38
-
39
- Apartment::Tenant.switch! db_names.last
40
- expect(User.find_by_name(db_names.first)).to be_nil
41
- end
42
- end
43
-
44
- describe 'when use_schemas = false' do
45
- let(:db_name) { db1 }
46
-
47
- before do
48
- Apartment.configure do |config|
49
- config.excluded_models = ["Company"]
50
- config.tenant_names = lambda{ Company.pluck(:database) }
51
- config.use_schemas = false
52
- end
53
-
54
- Apartment::Tenant.reload!(config)
55
-
56
- Apartment::Tenant.create(db_name)
57
- Company.create database: db_name
58
- end
59
-
60
- after do
61
- # Avoid cannot drop the currently open database. Maybe there is a better way to handle this.
62
- Apartment::Tenant.switch! 'template1'
63
-
64
- Apartment::Tenant.drop(db_name)
65
- Apartment::Tenant.reset
66
- Company.delete_all
67
- end
68
-
69
- it "configuration value is kept after switching databases" do
70
- ActiveRecord::Base.connection.enable_query_cache!
71
-
72
- Apartment::Tenant.switch! db_name
73
- expect(Apartment.connection.query_cache_enabled).to be true
74
-
75
- ActiveRecord::Base.connection.disable_query_cache!
76
-
77
- Apartment::Tenant.switch! db_name
78
- expect(Apartment.connection.query_cache_enabled).to be false
79
- end
80
- end
81
- end
@@ -1,28 +0,0 @@
1
- describe 'using apartment within an engine' do
2
-
3
- before do
4
- engine_path = Pathname.new(File.expand_path('../../dummy_engine', __FILE__))
5
- require engine_path.join('test/dummy/config/application')
6
- @rake = Rake::Application.new
7
- Rake.application = @rake
8
- stub_const 'APP_RAKEFILE', engine_path.join('test/dummy/Rakefile')
9
- load 'rails/tasks/engine.rake'
10
- end
11
-
12
- it 'sucessfully runs rake db:migrate in the engine root' do
13
- expect{ Rake::Task['db:migrate'].invoke }.to_not raise_error
14
- end
15
-
16
- it 'sucessfully runs rake app:db:migrate in the engine root' do
17
- expect{ Rake::Task['app:db:migrate'].invoke }.to_not raise_error
18
- end
19
-
20
- context 'when Apartment.db_migrate_tenants is false' do
21
- it 'should not enhance tasks' do
22
- Apartment.db_migrate_tenants = false
23
- expect(Apartment::RakeTaskEnhancer).to_not receive(:enhance_task).with('db:migrate')
24
- Rake::Task['db:migrate'].invoke
25
- end
26
- end
27
-
28
- end