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.
Files changed (95) hide show
  1. data/.rspec +1 -0
  2. data/.travis.yml +1 -3
  3. data/CHANGELOG.md +13 -0
  4. data/README.md +44 -23
  5. data/Rakefile +10 -12
  6. data/automigration.gemspec +4 -0
  7. data/lib/automigration.rb +5 -38
  8. data/lib/automigration/active_record_ext.rb +17 -0
  9. data/lib/automigration/db_column.rb +32 -0
  10. data/lib/automigration/dsl.rb +29 -0
  11. data/lib/automigration/engine.rb +23 -0
  12. data/lib/automigration/field.rb +75 -0
  13. data/lib/automigration/fields_keeper.rb +85 -0
  14. data/lib/automigration/migrator.rb +38 -77
  15. data/lib/automigration/version.rb +1 -1
  16. data/spec/dummy/.gitignore +2 -0
  17. data/spec/dummy/README.rdoc +261 -0
  18. data/spec/dummy/Rakefile +7 -0
  19. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  20. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  21. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  22. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  23. data/{log → spec/dummy/app/mailers}/.gitkeep +0 -0
  24. data/spec/dummy/app/models/.gitkeep +0 -0
  25. data/spec/dummy/app/models/accessible_model.rb +6 -0
  26. data/spec/dummy/app/models/auto_migration1.rb +14 -0
  27. data/{test → spec/dummy/app}/models/auto_migration1a.rb +2 -2
  28. data/{test → spec/dummy/app}/models/auto_migration2.rb +2 -2
  29. data/spec/dummy/app/models/auto_migration3.rb +5 -0
  30. data/{test → spec/dummy/app}/models/belongs_to_model.rb +0 -0
  31. data/{test → spec/dummy/app}/models/boolean_model.rb +0 -0
  32. data/{test → spec/dummy/app}/models/form_field.rb +0 -0
  33. data/{test → spec/dummy/app}/models/form_field2.rb +1 -1
  34. data/{test → spec/dummy/app}/models/local_name.rb +0 -0
  35. data/{test → spec/dummy/app}/models/local_name2.rb +0 -0
  36. data/{test → spec/dummy/app}/models/not_automigrable.rb +0 -0
  37. data/{test → spec/dummy/app}/models/searchable.rb +0 -0
  38. data/{test → spec/dummy/app}/models/simple.rb +0 -0
  39. data/{test → spec/dummy/app}/models/user1.rb +0 -0
  40. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  41. data/spec/dummy/config.ru +4 -0
  42. data/spec/dummy/config/application.rb +56 -0
  43. data/spec/dummy/config/boot.rb +10 -0
  44. data/spec/dummy/config/database.yml +14 -0
  45. data/spec/dummy/config/environment.rb +5 -0
  46. data/spec/dummy/config/environments/development.rb +37 -0
  47. data/spec/dummy/config/environments/production.rb +67 -0
  48. data/spec/dummy/config/environments/test.rb +37 -0
  49. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  50. data/spec/dummy/config/initializers/inflections.rb +15 -0
  51. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  52. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  53. data/spec/dummy/config/initializers/session_store.rb +8 -0
  54. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  55. data/spec/dummy/config/locales/en.yml +5 -0
  56. data/spec/dummy/config/routes.rb +58 -0
  57. data/spec/dummy/db/.gitkeep +0 -0
  58. data/spec/dummy/lib/assets/.gitkeep +0 -0
  59. data/spec/dummy/log/.gitkeep +0 -0
  60. data/spec/dummy/public/404.html +26 -0
  61. data/spec/dummy/public/422.html +26 -0
  62. data/spec/dummy/public/500.html +25 -0
  63. data/spec/dummy/public/favicon.ico +0 -0
  64. data/spec/dummy/script/rails +6 -0
  65. data/spec/lib/accessible_spec.rb +13 -0
  66. data/spec/lib/auto_migration_spec.rb +155 -0
  67. data/spec/lib/belongs_to_spec.rb +38 -0
  68. data/spec/lib/db_column_spec.rb +21 -0
  69. data/spec/lib/fields_spec.rb +22 -0
  70. data/spec/spec_helper.rb +24 -0
  71. metadata +106 -47
  72. data/lib/automigration/base_extention.rb +0 -15
  73. data/lib/automigration/fields/belongs_to.rb +0 -29
  74. data/lib/automigration/fields/boolean.rb +0 -9
  75. data/lib/automigration/fields/date.rb +0 -9
  76. data/lib/automigration/fields/datetime.rb +0 -9
  77. data/lib/automigration/fields/float.rb +0 -9
  78. data/lib/automigration/fields/integer.rb +0 -9
  79. data/lib/automigration/fields/password.rb +0 -9
  80. data/lib/automigration/fields/string.rb +0 -9
  81. data/lib/automigration/fields/sys/base.rb +0 -95
  82. data/lib/automigration/fields/sys/db_column.rb +0 -36
  83. data/lib/automigration/fields/sys/keeper.rb +0 -113
  84. data/lib/automigration/fields/sys/slice_creater.rb +0 -32
  85. data/lib/automigration/fields/text.rb +0 -9
  86. data/lib/automigration/fields/time.rb +0 -9
  87. data/test/auto_migration_test.rb +0 -186
  88. data/test/belongs_to_test.rb +0 -51
  89. data/test/db_column_test.rb +0 -23
  90. data/test/fields/accessible_test.rb +0 -13
  91. data/test/fields_test.rb +0 -34
  92. data/test/models/accessible_model.rb +0 -6
  93. data/test/models/auto_migration1.rb +0 -14
  94. data/test/models/auto_migration3.rb +0 -5
  95. data/test/test_helper.rb +0 -35
@@ -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
@@ -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
@@ -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,6 +0,0 @@
1
- class AccessibleModel < ActiveRecord::Base
2
- has_fields do |f|
3
- f.integer :first, :default => 0
4
- f.integer :second, :default => 0, :accessible => false
5
- end
6
- 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
@@ -1,5 +0,0 @@
1
- class AutoMigration3 < ActiveRecord::Base
2
- has_fields :timestamps => false do |f|
3
- f.integer :integer_field
4
- end
5
- end
@@ -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!