automigration 0.2.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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!