automigration 0.2.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/.travis.yml +1 -3
- data/CHANGELOG.md +13 -0
- data/README.md +44 -23
- data/Rakefile +10 -12
- data/automigration.gemspec +4 -0
- data/lib/automigration.rb +5 -38
- data/lib/automigration/active_record_ext.rb +17 -0
- data/lib/automigration/db_column.rb +32 -0
- data/lib/automigration/dsl.rb +29 -0
- data/lib/automigration/engine.rb +23 -0
- data/lib/automigration/field.rb +75 -0
- data/lib/automigration/fields_keeper.rb +85 -0
- data/lib/automigration/migrator.rb +38 -77
- data/lib/automigration/version.rb +1 -1
- data/spec/dummy/.gitignore +2 -0
- data/spec/dummy/README.rdoc +261 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/{log → spec/dummy/app/mailers}/.gitkeep +0 -0
- data/spec/dummy/app/models/.gitkeep +0 -0
- data/spec/dummy/app/models/accessible_model.rb +6 -0
- data/spec/dummy/app/models/auto_migration1.rb +14 -0
- data/{test → spec/dummy/app}/models/auto_migration1a.rb +2 -2
- data/{test → spec/dummy/app}/models/auto_migration2.rb +2 -2
- data/spec/dummy/app/models/auto_migration3.rb +5 -0
- data/{test → spec/dummy/app}/models/belongs_to_model.rb +0 -0
- data/{test → spec/dummy/app}/models/boolean_model.rb +0 -0
- data/{test → spec/dummy/app}/models/form_field.rb +0 -0
- data/{test → spec/dummy/app}/models/form_field2.rb +1 -1
- data/{test → spec/dummy/app}/models/local_name.rb +0 -0
- data/{test → spec/dummy/app}/models/local_name2.rb +0 -0
- data/{test → spec/dummy/app}/models/not_automigrable.rb +0 -0
- data/{test → spec/dummy/app}/models/searchable.rb +0 -0
- data/{test → spec/dummy/app}/models/simple.rb +0 -0
- data/{test → spec/dummy/app}/models/user1.rb +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +56 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +14 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +37 -0
- data/spec/dummy/config/environments/production.rb +67 -0
- data/spec/dummy/config/environments/test.rb +37 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/inflections.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +5 -0
- data/spec/dummy/config/routes.rb +58 -0
- data/spec/dummy/db/.gitkeep +0 -0
- data/spec/dummy/lib/assets/.gitkeep +0 -0
- data/spec/dummy/log/.gitkeep +0 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/lib/accessible_spec.rb +13 -0
- data/spec/lib/auto_migration_spec.rb +155 -0
- data/spec/lib/belongs_to_spec.rb +38 -0
- data/spec/lib/db_column_spec.rb +21 -0
- data/spec/lib/fields_spec.rb +22 -0
- data/spec/spec_helper.rb +24 -0
- metadata +106 -47
- data/lib/automigration/base_extention.rb +0 -15
- data/lib/automigration/fields/belongs_to.rb +0 -29
- data/lib/automigration/fields/boolean.rb +0 -9
- data/lib/automigration/fields/date.rb +0 -9
- data/lib/automigration/fields/datetime.rb +0 -9
- data/lib/automigration/fields/float.rb +0 -9
- data/lib/automigration/fields/integer.rb +0 -9
- data/lib/automigration/fields/password.rb +0 -9
- data/lib/automigration/fields/string.rb +0 -9
- data/lib/automigration/fields/sys/base.rb +0 -95
- data/lib/automigration/fields/sys/db_column.rb +0 -36
- data/lib/automigration/fields/sys/keeper.rb +0 -113
- data/lib/automigration/fields/sys/slice_creater.rb +0 -32
- data/lib/automigration/fields/text.rb +0 -9
- data/lib/automigration/fields/time.rb +0 -9
- data/test/auto_migration_test.rb +0 -186
- data/test/belongs_to_test.rb +0 -51
- data/test/db_column_test.rb +0 -23
- data/test/fields/accessible_test.rb +0 -13
- data/test/fields_test.rb +0 -34
- data/test/models/accessible_model.rb +0 -6
- data/test/models/auto_migration1.rb +0 -14
- data/test/models/auto_migration3.rb +0 -5
- data/test/test_helper.rb +0 -35
data/test/belongs_to_test.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Automigration
|
4
|
-
class BelongsTest < ActiveSupport::TestCase
|
5
|
-
include ActionDispatch::Assertions::SelectorAssertions
|
6
|
-
|
7
|
-
setup do
|
8
|
-
@simple = Simple.create
|
9
|
-
@obj = BelongsToModel.create
|
10
|
-
end
|
11
|
-
|
12
|
-
teardown do
|
13
|
-
Simple.destroy_all
|
14
|
-
end
|
15
|
-
|
16
|
-
test "properties" do
|
17
|
-
assert_nil @obj.simple
|
18
|
-
assert_nil @obj.simple_id
|
19
|
-
end
|
20
|
-
|
21
|
-
test "mass assignment by object" do
|
22
|
-
@obj.update_attributes(:simple => @simple)
|
23
|
-
assert_equal @simple.id, @obj.simple_id
|
24
|
-
end
|
25
|
-
|
26
|
-
test "mass assignment by id" do
|
27
|
-
@obj.update_attributes(:simple_id => @simple.id)
|
28
|
-
assert_equal @simple.id, @obj.simple_id
|
29
|
-
end
|
30
|
-
|
31
|
-
test "use different class name" do
|
32
|
-
@obj.update_attributes(:some => @simple)
|
33
|
-
assert_equal @simple, @obj.some
|
34
|
-
end
|
35
|
-
|
36
|
-
test "raise if wrong name" do
|
37
|
-
assert_raise RuntimeError do
|
38
|
-
Fields::Sys::Base.from_meta(
|
39
|
-
:as => :belongs_to,
|
40
|
-
:name => "simple_id"
|
41
|
-
)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
test "parent and children" do
|
46
|
-
child = BelongsToModel.find(BelongsToModel.create(:parent => @obj).id)
|
47
|
-
assert_equal @obj, child.parent
|
48
|
-
assert_equal @obj.id, child.parent_id
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
data/test/db_column_test.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Automigration
|
4
|
-
class DbColumnTest < ActiveSupport::TestCase
|
5
|
-
def test_the_same
|
6
|
-
a = Fields::Sys::DbColumn.new('field', 'integer',
|
7
|
-
:default => 3,
|
8
|
-
:null => true,
|
9
|
-
:limit => 3,
|
10
|
-
:scale => 1,
|
11
|
-
:precision => 2)
|
12
|
-
|
13
|
-
b = Fields::Sys::DbColumn.new('field', 'integer',
|
14
|
-
:default => 3,
|
15
|
-
:null => true,
|
16
|
-
:limit => 3,
|
17
|
-
:scale => 1,
|
18
|
-
:precision => 2)
|
19
|
-
|
20
|
-
assert a.the_same?(b)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Automigration
|
4
|
-
module Fields
|
5
|
-
class AccessbileTest < ActiveSupport::TestCase
|
6
|
-
test "mass assignment deny" do
|
7
|
-
obj = AccessibleModel.create(:first => 123, :second => 345)
|
8
|
-
assert_equal 123, obj.first
|
9
|
-
assert_equal 0, obj.second
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
data/test/fields_test.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module Automigration
|
4
|
-
class FieldsTest < ActiveSupport::TestCase
|
5
|
-
def test_kind_of_field
|
6
|
-
assert_equal :boolean, Fields::Boolean.kind
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_automigrable_model
|
10
|
-
assert Simple.fields_keeper.auto_migrable?
|
11
|
-
assert !NotAutomigrable.fields_keeper.auto_migrable?
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_migrations_attrs
|
15
|
-
assert_equal [], AutoMigration1.fields_keeper.migration_attrs
|
16
|
-
|
17
|
-
assert_equal ['some_attr1', 'some_attr2' , 'some_attr3'],
|
18
|
-
AutoMigration2.fields_keeper.migration_attrs
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_boolean_column_false_by_default
|
22
|
-
assert_equal false, AutoMigration1.new.boolean_field
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_from_meta
|
26
|
-
assert_equal Fields::Boolean, Fields::Sys::Base.from_meta(:as => :boolean, :name => 'some').class
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_attributes_accessible
|
30
|
-
obj = AutoMigration1.create(:integer_field => 123)
|
31
|
-
assert_equal 123, obj.integer_field
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
class AutoMigration1 < ActiveRecord::Base
|
2
|
-
has_fields do |f|
|
3
|
-
f.integer :integer_field
|
4
|
-
f.float :float_field
|
5
|
-
f.boolean :boolean_field
|
6
|
-
f.string :string_field
|
7
|
-
f.text :text_field
|
8
|
-
f.datetime :datetime_field
|
9
|
-
f.date :date_field
|
10
|
-
f.time :time_field
|
11
|
-
end
|
12
|
-
|
13
|
-
add_field :integer, :additional_field
|
14
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler/setup'
|
3
|
-
require 'automigration'
|
4
|
-
require 'test/unit'
|
5
|
-
require 'rails'
|
6
|
-
require 'action_controller/railtie'
|
7
|
-
require 'active_record'
|
8
|
-
|
9
|
-
# fake rails application
|
10
|
-
class AutomigrateApplication < Rails::Application
|
11
|
-
config.active_support.deprecation = :log
|
12
|
-
end
|
13
|
-
AutomigrateApplication.initialize!
|
14
|
-
|
15
|
-
# AR connection
|
16
|
-
ActiveRecord::Base.establish_connection(
|
17
|
-
:adapter => 'postgresql',
|
18
|
-
:database => 'automigration_test',
|
19
|
-
:user => ENV['PG_USER']
|
20
|
-
)
|
21
|
-
|
22
|
-
# whitelist attributes
|
23
|
-
ActiveRecord::Base.attr_accessible nil
|
24
|
-
|
25
|
-
# load test models
|
26
|
-
Dir[File.expand_path("../models/*.rb", __FILE__)].each do |file|
|
27
|
-
require file
|
28
|
-
end
|
29
|
-
|
30
|
-
# prepare tables for test models
|
31
|
-
Automigration::Migrator.set_models_load_path([File.expand_path("../models", __FILE__)])
|
32
|
-
Automigration::Migrator.all_tables.each do |table|
|
33
|
-
ActiveRecord::Base.connection.drop_table(table)
|
34
|
-
end
|
35
|
-
Automigration::Migrator.new(:skip_output => true).update_schema!
|