automigration 0.2.2 → 1.0.0
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.
- 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!
|