fourthbase 2.1.2
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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.travis.yml +24 -0
- data/.yardopts +1 -0
- data/Appraisals +19 -0
- data/CHANGELOG.md +37 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +21 -0
- data/README.md +191 -0
- data/Rakefile +24 -0
- data/VERSION +1 -0
- data/fourthbase.gemspec +25 -0
- data/gemfiles/rails40.gemfile +8 -0
- data/gemfiles/rails41.gemfile +8 -0
- data/gemfiles/rails42.gemfile +8 -0
- data/gemfiles/rails50.gemfile +8 -0
- data/lib/fourth_base.rb +20 -0
- data/lib/fourth_base/base.rb +8 -0
- data/lib/fourth_base/databases.rake +121 -0
- data/lib/fourth_base/databases_rails_five.rake +22 -0
- data/lib/fourth_base/databases_rails_four.rake +22 -0
- data/lib/fourth_base/forced.rb +21 -0
- data/lib/fourth_base/on_base.rb +36 -0
- data/lib/fourth_base/railtie.rb +52 -0
- data/lib/fourth_base/test_help.rb +11 -0
- data/lib/fourth_base/version.rb +3 -0
- data/lib/fourthbase.rb +1 -0
- data/lib/rails/fourth_base/generators/migration_generator.rb +25 -0
- data/test/cases/dbtask_test.rb +248 -0
- data/test/cases/forced_test.rb +49 -0
- data/test/cases/generator_test.rb +64 -0
- data/test/cases/on_base_test.rb +35 -0
- data/test/cases/railtie_test.rb +31 -0
- data/test/cases/rake_test.rb +0 -0
- data/test/dummy_apps/rails_five/Rakefile +2 -0
- data/test/dummy_apps/rails_five/app/controllers/application_controller.rb +7 -0
- data/test/dummy_apps/rails_five/app/helpers/application_helper.rb +3 -0
- data/test/dummy_apps/rails_five/app/models/application_record.rb +3 -0
- data/test/dummy_apps/rails_five/app/models/comment.rb +6 -0
- data/test/dummy_apps/rails_five/app/models/comment_forced.rb +6 -0
- data/test/dummy_apps/rails_five/app/models/post.rb +7 -0
- data/test/dummy_apps/rails_five/app/models/user.rb +6 -0
- data/test/dummy_apps/rails_five/bin/rails +5 -0
- data/test/dummy_apps/rails_five/config/database.yml +13 -0
- data/test/dummy_apps/rails_five/config/routes.rb +3 -0
- data/test/dummy_apps/rails_five/db/migrate/20141209165002_create_users.rb +11 -0
- data/test/dummy_apps/rails_five/db/migrate/20141214142700_create_posts.rb +12 -0
- data/test/dummy_apps/rails_five/db/secondbase/migrate/20151202075826_create_comments.rb +11 -0
- data/test/dummy_apps/rails_five/init.rb +42 -0
- data/test/dummy_apps/rails_five/log/.keep +0 -0
- data/test/dummy_apps/rails_five/tmp/.keep +0 -0
- data/test/dummy_apps/rails_four/Rakefile +2 -0
- data/test/dummy_apps/rails_four/app/controllers/application_controller.rb +7 -0
- data/test/dummy_apps/rails_four/app/helpers/application_helper.rb +3 -0
- data/test/dummy_apps/rails_four/app/models/comment.rb +6 -0
- data/test/dummy_apps/rails_four/app/models/comment_forced.rb +6 -0
- data/test/dummy_apps/rails_four/app/models/post.rb +7 -0
- data/test/dummy_apps/rails_four/app/models/user.rb +6 -0
- data/test/dummy_apps/rails_four/bin/rails +5 -0
- data/test/dummy_apps/rails_four/config/database.yml +14 -0
- data/test/dummy_apps/rails_four/config/routes.rb +3 -0
- data/test/dummy_apps/rails_four/db/migrate/20141209165002_create_users.rb +11 -0
- data/test/dummy_apps/rails_four/db/migrate/20141214142700_create_posts.rb +12 -0
- data/test/dummy_apps/rails_four/db/secondbase/migrate/20151202075826_create_comments.rb +11 -0
- data/test/dummy_apps/rails_four/init.rb +42 -0
- data/test/dummy_apps/rails_four/log/.keep +0 -0
- data/test/dummy_apps/rails_four/tmp/.keep +0 -0
- data/test/test_helper.rb +46 -0
- data/test/test_helpers/dummy_app_helpers.rb +94 -0
- data/test/test_helpers/rails_version_helpers.rb +29 -0
- data/test/test_helpers/stream_helpers.rb +40 -0
- data/thirdbase-2.1.1.gem +0 -0
- data/thirdbase-2.1.2.gem +0 -0
- metadata +206 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ForcedTest < FourthBase::TestCase
|
4
|
+
|
5
|
+
setup do
|
6
|
+
run_db :create
|
7
|
+
run_db :migrate
|
8
|
+
establish_connection
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_shared_pool
|
12
|
+
assert_equal FourthBase::Base.connection_pool.object_id,
|
13
|
+
CommentForced.connection_pool.object_id
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_shared_connection
|
17
|
+
assert_equal FourthBase::Base.connection.raw_connection.object_id,
|
18
|
+
CommentForced.connection.raw_connection.object_id
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_shared_new_connection_in_a_different_thread
|
22
|
+
current_base_connection_id = FourthBase::Base.connection.raw_connection.object_id
|
23
|
+
new_base_connection_id, new_forced_connection_id = Thread.new {
|
24
|
+
[ FourthBase::Base.connection.raw_connection.object_id,
|
25
|
+
CommentForced.connection.raw_connection.object_id ]
|
26
|
+
}.value
|
27
|
+
refute_equal new_base_connection_id, current_base_connection_id
|
28
|
+
assert_equal new_base_connection_id, new_forced_connection_id
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_shared_connected_query
|
32
|
+
assert FourthBase::Base.connected?
|
33
|
+
assert CommentForced.connected?
|
34
|
+
CommentForced.clear_all_connections!
|
35
|
+
refute FourthBase::Base.connected?
|
36
|
+
refute CommentForced.connected?
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_can_remove_connection_properly
|
40
|
+
base_connection = FourthBase::Base.connection
|
41
|
+
forced_connection = CommentForced.connection
|
42
|
+
assert base_connection.active?
|
43
|
+
assert forced_connection.active?
|
44
|
+
CommentForced.remove_connection
|
45
|
+
refute base_connection.active?
|
46
|
+
refute forced_connection.active?
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class GeneratorTest < FourthBase::TestCase
|
4
|
+
|
5
|
+
teardown do
|
6
|
+
generated_migration_delete
|
7
|
+
generated_migration_base_delete
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_initialization_via_help
|
11
|
+
output = Dir.chdir(dummy_root) { `rails g -h` }
|
12
|
+
assert_match(/fourth_base\:migration/, output)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_description_uses_rails_base
|
16
|
+
output = Dir.chdir(dummy_root) { `rails g fourth_base:migration -h` }
|
17
|
+
assert_match %r{db/migrate/20080514090912_add_ssl_flag\.rb}, output
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_migration
|
21
|
+
output = Dir.chdir(dummy_root) { `rails g fourth_base:migration CreateFavorites post_id:integer count:integer` }
|
22
|
+
assert_match %r{create.*db/fourthbase/migrate/.*create_favorites\.rb}, output
|
23
|
+
migration = generated_migration_data
|
24
|
+
assert_match %r{create_table :favorites}, migration
|
25
|
+
assert_match %r{t.integer :post_id}, migration
|
26
|
+
assert_match %r{t.integer :count}, migration
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_base_migration_generator
|
30
|
+
output = Dir.chdir(dummy_root) { `rails g migration AddBaseColumn` }
|
31
|
+
assert_match %r{create.*db/migrate/.*add_base_column\.rb}, output
|
32
|
+
migration = generated_migration_base_data
|
33
|
+
assert_match %r{class AddBaseColumn}, migration
|
34
|
+
assert_match %r{def change}, migration
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def generated_migration
|
41
|
+
Dir["#{dummy_db}/fourthbase/migrate/*favorites.{rb}"].first
|
42
|
+
end
|
43
|
+
|
44
|
+
def generated_migration_data
|
45
|
+
generated_migration ? File.read(generated_migration) : ''
|
46
|
+
end
|
47
|
+
|
48
|
+
def generated_migration_delete
|
49
|
+
FileUtils.rm_rf(generated_migration) if generated_migration
|
50
|
+
end
|
51
|
+
|
52
|
+
def generated_migration_base
|
53
|
+
Dir["#{dummy_db}/migrate/*add_base*.{rb}"].first
|
54
|
+
end
|
55
|
+
|
56
|
+
def generated_migration_base_data
|
57
|
+
generated_migration_base ? File.read(generated_migration_base) : ''
|
58
|
+
end
|
59
|
+
|
60
|
+
def generated_migration_base_delete
|
61
|
+
FileUtils.rm_rf(generated_migration_base) if generated_migration_base
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class OnBaseTest < FourthBase::TestCase
|
4
|
+
|
5
|
+
setup do
|
6
|
+
run_db :create
|
7
|
+
run_db :migrate
|
8
|
+
establish_connection
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_on_base
|
12
|
+
refute FourthBase.is_on_base
|
13
|
+
FourthBase.on_base do
|
14
|
+
assert FourthBase.is_on_base
|
15
|
+
assert_equal FourthBase::Base.connection.class, ActiveRecord::Base.connection.class
|
16
|
+
assert_equal [FourthBase::Railtie.fullpath('migrate')], ActiveRecord::Tasks::DatabaseTasks.migrations_paths
|
17
|
+
assert_equal FourthBase::Railtie.fullpath, ActiveRecord::Tasks::DatabaseTasks.db_dir
|
18
|
+
end
|
19
|
+
refute FourthBase.is_on_base
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_on_base_nested
|
23
|
+
refute FourthBase.is_on_base
|
24
|
+
FourthBase.on_base do
|
25
|
+
assert FourthBase.is_on_base
|
26
|
+
FourthBase.on_base do
|
27
|
+
assert FourthBase.is_on_base
|
28
|
+
end
|
29
|
+
assert FourthBase.is_on_base
|
30
|
+
end
|
31
|
+
refute FourthBase.is_on_base
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RailtieTest < FourthBase::TestCase
|
4
|
+
|
5
|
+
def test_config
|
6
|
+
expected_path = 'db/fourthbase'
|
7
|
+
assert_equal expected_path, railtie_inst.config.fourth_base.path
|
8
|
+
assert_equal expected_path, railtie_klass.config.fourth_base.path
|
9
|
+
expected_config_key = 'fourthbase'
|
10
|
+
assert_equal expected_config_key, railtie_inst.config.fourth_base.config_key
|
11
|
+
assert_equal expected_config_key, railtie_klass.config.fourth_base.config_key
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_fullpath
|
15
|
+
expected = dummy_db.join('fourthbase').to_s
|
16
|
+
assert_equal expected, railtie_inst.fullpath
|
17
|
+
assert_equal expected, railtie_klass.fullpath
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def railtie_inst
|
24
|
+
dummy_app.railties.grep(railtie_klass).first
|
25
|
+
end
|
26
|
+
|
27
|
+
def railtie_klass
|
28
|
+
FourthBase::Railtie
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
File without changes
|
@@ -0,0 +1,42 @@
|
|
1
|
+
ENV['RAILS_ENV'] ||= 'test'
|
2
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __FILE__)
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'rails/all'
|
5
|
+
Bundler.require(:default, Rails.env)
|
6
|
+
|
7
|
+
module Dummy
|
8
|
+
class Application < ::Rails::Application
|
9
|
+
|
10
|
+
# Basic Engine
|
11
|
+
config.root = File.join __FILE__, '..'
|
12
|
+
config.cache_store = :memory_store
|
13
|
+
config.assets.enabled = false
|
14
|
+
config.secret_token = '012345678901234567890123456789'
|
15
|
+
config.active_support.test_order = :random
|
16
|
+
|
17
|
+
# Mimic Test Environment Config.
|
18
|
+
config.consider_all_requests_local = true
|
19
|
+
config.action_controller.perform_caching = false
|
20
|
+
config.action_dispatch.show_exceptions = false
|
21
|
+
config.action_controller.allow_forgery_protection = false
|
22
|
+
config.action_mailer.delivery_method = :test
|
23
|
+
config.active_support.deprecation = :stderr
|
24
|
+
config.allow_concurrency = true
|
25
|
+
config.cache_classes = true
|
26
|
+
config.dependency_loading = true
|
27
|
+
config.preload_frameworks = true
|
28
|
+
config.eager_load = true
|
29
|
+
config.secret_key_base = '012345678901234567890123456789'
|
30
|
+
|
31
|
+
# Keep pending test:prepare via pending migrations from running.
|
32
|
+
config.active_record.maintain_test_schema = false if ActiveRecord::Base.respond_to?(:maintain_test_schema)
|
33
|
+
|
34
|
+
config.active_record.schema_format = ENV['SCHEMA_FORMAT'] ? :sql : :ruby
|
35
|
+
|
36
|
+
if ENV['WITH_FOURTHBASE_TASKS'].present?
|
37
|
+
config.fourth_base.run_with_db_tasks = ENV['WITH_FOURTHBASE_TASKS'] == 'true'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
Dummy::Application.initialize!
|
File without changes
|
File without changes
|