mv-core 0.1.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 (38) hide show
  1. data/LICENSE.txt +20 -0
  2. data/README.rdoc +88 -0
  3. data/lib/migration_validators/active_record/base.rb +24 -0
  4. data/lib/migration_validators/active_record/connection_adapters/abstract_adapter.rb +36 -0
  5. data/lib/migration_validators/active_record/connection_adapters/native_adapter.rb +118 -0
  6. data/lib/migration_validators/active_record/connection_adapters/table.rb +15 -0
  7. data/lib/migration_validators/active_record/connection_adapters/table_definition.rb +24 -0
  8. data/lib/migration_validators/active_record/migration.rb +29 -0
  9. data/lib/migration_validators/active_record/schema.rb +31 -0
  10. data/lib/migration_validators/active_record/schema_dumper.rb +24 -0
  11. data/lib/migration_validators/adapters/base.rb +15 -0
  12. data/lib/migration_validators/adapters/containers.rb +102 -0
  13. data/lib/migration_validators/adapters/routing.rb +104 -0
  14. data/lib/migration_validators/adapters/syntax.rb +53 -0
  15. data/lib/migration_validators/adapters/validator_definitions.rb +131 -0
  16. data/lib/migration_validators/core/adapter_wrapper.rb +88 -0
  17. data/lib/migration_validators/core/db_validator.rb +178 -0
  18. data/lib/migration_validators/core/statement_builder.rb +60 -0
  19. data/lib/migration_validators/core/validator_container.rb +110 -0
  20. data/lib/migration_validators/core/validator_definition.rb +91 -0
  21. data/lib/migration_validators/core/validator_router.rb +45 -0
  22. data/lib/mv-core.rb +100 -0
  23. data/lib/options.rb +7 -0
  24. data/spec/migration_validators/active_record/connection_adapters/abstract_adapter_spec.rb +440 -0
  25. data/spec/migration_validators/active_record/connection_adapters/table_definition_spec.rb +4 -0
  26. data/spec/migration_validators/active_record/migration.rb +82 -0
  27. data/spec/migration_validators/active_record/schema_dumper_spec.rb +44 -0
  28. data/spec/migration_validators/adapters/base_spec.rb +89 -0
  29. data/spec/migration_validators/core/adapter_wrapper_spec.rb +168 -0
  30. data/spec/migration_validators/core/db_validator_spec.rb +347 -0
  31. data/spec/migration_validators/core/statement_builder_spec.rb +36 -0
  32. data/spec/migration_validators/core/validator_container_spec.rb +121 -0
  33. data/spec/migration_validators/core/validator_definition_spec.rb +131 -0
  34. data/spec/migration_validators/core/validator_router_spec.rb +60 -0
  35. data/spec/mv-core_spec.rb +4 -0
  36. data/spec/spec_helper.rb +15 -0
  37. data/spec/support/factories/db_validator.rb +43 -0
  38. metadata +152 -0
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe MigrationValidators::Core::StatementBuilder do
4
+ before :each do
5
+ @builder = MigrationValidators::Core::StatementBuilder.new "column"
6
+ end
7
+
8
+ it "returns initial string by default" do
9
+ @builder.to_s.should == "column"
10
+ end
11
+
12
+ it "allows to define additional action" do
13
+ @builder.operation(:and) {|stmt, value| "#{stmt} and #{value}" }
14
+
15
+ @builder.and("column_1").to_s.should == "column and column_1"
16
+ end
17
+
18
+ it "might be merged with another builder" do
19
+ @builder.operation(:and) {|stmt, value| "#{stmt} and #{value}" }
20
+
21
+ builder1 = MigrationValidators::Core::StatementBuilder.new ""
22
+ builder1.operation(:and) {|stmt, value| "#{stmt} and #{value} new" }
23
+
24
+ @builder.merge!(builder1)
25
+
26
+ @builder.and("column_1").to_s.should == "column and column_1 new"
27
+ end
28
+
29
+ it "migth be initialized by another (parent) builder" do
30
+ @builder.operation(:and) {|stmt, value| "#{stmt} and #{value}" }
31
+
32
+ builder1 = MigrationValidators::Core::StatementBuilder.new "column_2", @builder
33
+
34
+ builder1.and("column_1").to_s.should == "column_2 and column_1"
35
+ end
36
+ end
@@ -0,0 +1,121 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe MigrationValidators::Core::ValidatorContainer, :type => :mv_test do
4
+ before :all do
5
+ use_memory_db
6
+ db.initialize_schema_migrations_table
7
+ end
8
+
9
+ before :each do
10
+ MigrationValidators::Core::DbValidator.clear_all
11
+
12
+ db.drop_table :test_table if db.table_exists?(:test_table)
13
+ db.create_table :test_table do |t|
14
+ t.string :str_column
15
+ t.string :str_column_1
16
+ end
17
+
18
+ @builder = MigrationValidators::Core::StatementBuilder.new
19
+
20
+ @builder.operation :and do |stmt, value|
21
+ "#{stmt} AND #{value}"
22
+ end
23
+
24
+ @builder.operation :or do |stmt, value|
25
+ "#{stmt} OR #{value}"
26
+ end
27
+
28
+ @definition = MigrationValidators::Core::ValidatorDefinition.new @builder
29
+
30
+ @definition.property :property_name do |property_value|
31
+ column.and(property_value)
32
+ end
33
+
34
+ @container = MigrationValidators::Core::ValidatorContainer.new :container, :validator_name => @definition
35
+ @validator = Factory.build :db_validator,
36
+ :validator_name => :validator_name,
37
+ :column_name => :column_name,
38
+ :options => {:property_name => :property_value}
39
+
40
+ end
41
+
42
+ describe :remove_validators do
43
+ it "regenerates constraint without specified validators" do
44
+ end
45
+ end
46
+
47
+ describe :add_validators do
48
+ it "returns definition processing result by default" do
49
+ @container.add_validators([@validator]).should == ["column_name AND property_value"]
50
+ end
51
+
52
+ it "adds constraint name to processed validators constraint list" do
53
+ @container.constraint_name {|group_key| "constraint" }
54
+ @container.add_validators([@validator]).should == ["column_name AND property_value"]
55
+
56
+ @validator.in_constraint?("constraint").should be_true
57
+ end
58
+
59
+ it "joins specified validator to existing ones within the same constraint" do
60
+ @container.constraint_name {|group_key| "constraint" }
61
+
62
+ validator1 = Factory.create :db_validator,
63
+ :validator_name => :validator_name,
64
+ :table_name => :test_table,
65
+ :column_name => :str_column,
66
+ :options => {:property_name => :property_value_1},
67
+ :constraints => ["constraint"]
68
+
69
+ @container.add_validators([@validator]).should == ["column_name AND property_value JOIN str_column AND property_value_1"]
70
+ end
71
+
72
+ it "creates drop statement if defined" do
73
+ @container.constraint_name {|group_key| "constraint" }
74
+
75
+ @container.operation :drop do |stmt, constraint_name, group_name|
76
+ "DROP ENTITY #{constraint_name}"
77
+ end
78
+
79
+ validator1 = Factory.create :db_validator,
80
+ :validator_name => :validator_name,
81
+ :table_name => :test_table,
82
+ :column_name => :str_column,
83
+ :options => {:property_name => :property_value_1},
84
+ :constraints => ["constraint"]
85
+
86
+ @container.add_validators([@validator]).should == ["DROP ENTITY constraint", "column_name AND property_value JOIN str_column AND property_value_1"]
87
+ end
88
+
89
+ #it "do not creates drop statement if such constraint does not exist" do
90
+ # @container.constraint_name {|group_key| "constraint" }
91
+
92
+ # @container.operation :drop do |stmt, constraint_name, group_name|
93
+ # "DROP ENTITY #{constraint_name}"
94
+ # end
95
+
96
+ # @container.add_validators([@validator]).should == ["column_name AND property_value"]
97
+ #end
98
+ end
99
+
100
+ describe :remove_validators do
101
+ it "regenerates constraint without specified validators" do
102
+ @container.constraint_name {|group_key| "constraint" }
103
+
104
+ validator1 = Factory.create :db_validator,
105
+ :validator_name => :validator_name,
106
+ :table_name => :test_table,
107
+ :column_name => :str_column,
108
+ :options => {:property_name => :property_value_1},
109
+ :constraints => ["constraint"]
110
+
111
+ validator2 = Factory.create :db_validator,
112
+ :validator_name => :validator_name,
113
+ :table_name => :test_table,
114
+ :column_name => :str_column_1,
115
+ :options => {:property_name => :property_value_2},
116
+ :constraints => ["constraint"]
117
+
118
+ @container.remove_validators([validator2]).should == ["str_column AND property_value_1"]
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,131 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe MigrationValidators::Core::ValidatorDefinition, :type => :mv_test do
4
+ before :all do
5
+ use_memory_db
6
+ db.initialize_schema_migrations_table
7
+ end
8
+
9
+ before :each do
10
+ @definition = MigrationValidators::Core::ValidatorDefinition.new
11
+
12
+ @definition.operation :and do |stmt, value|
13
+ "#{stmt} AND #{value}"
14
+ end
15
+
16
+ @definition.operation :or do |stmt, value|
17
+ "#{stmt} OR #{value}"
18
+ end
19
+ end
20
+
21
+ it "might be initialized by db validator" do
22
+ validator = Factory.build :db_validator
23
+
24
+ @definition.validator = validator
25
+
26
+ @definition.to_s.should == validator.column_name
27
+ end
28
+
29
+ describe "with validator" do
30
+ before :each do
31
+ @validator = Factory.build :db_validator
32
+ @definition.validator = @validator
33
+ end
34
+
35
+ it "supports invariant column property" do
36
+ @definition.column.and(@definition.column).to_s.should == "#{@validator.column_name} AND #{@validator.column_name}"
37
+ end
38
+
39
+ describe :process do
40
+ before :each do
41
+ @validator.options = { :property_name => :property_value }
42
+ end
43
+
44
+ it "returns empty array by default" do
45
+ @definition.process(@validator).should == []
46
+ end
47
+
48
+ it "allows to define property handlers" do
49
+ @definition.property :property_name do |property_value|
50
+ "#{column.and(property_value)}"
51
+ end
52
+
53
+ @definition.process(@validator).should == ["#{@validator.column_name} AND property_value"]
54
+ end
55
+
56
+ it "allows to define post processors" do
57
+ @definition.property :property_name do |property_value|
58
+ "#{column.and(property_value)}"
59
+ end
60
+
61
+ @definition.post do
62
+ self.and("some_post_value")
63
+ end
64
+
65
+ @definition.post :property_name => :property_value do
66
+ self.and("some_post_value_1")
67
+ end
68
+
69
+ @definition.post "property_name" => :property_value do
70
+ self.and("some_post_value_1")
71
+ end
72
+
73
+ @definition.post :property_name => :wrong_property_value do
74
+ self.and("some_post_value_2")
75
+ end
76
+
77
+ @definition.process(@validator).should == ["#{@validator.column_name} AND property_value AND some_post_value AND some_post_value_1"]
78
+ end
79
+
80
+ it "allows to define default property handler" do
81
+ @validator.options = {}
82
+
83
+ @definition.property do |property_value|
84
+ "#{column}"
85
+ end
86
+
87
+ @definition.process(@validator).should == ["#{@validator.column_name}"]
88
+ end
89
+
90
+
91
+
92
+ describe :bind_to_error do
93
+ before :each do
94
+ @definition.operation :bind_to_error do |stmt, error|
95
+ "SHOW '#{error}' UNLESS (#{stmt})"
96
+ end
97
+ end
98
+
99
+ it "takes :message validator property as default" do
100
+ @validator.options[:message] = :default_message
101
+
102
+ @definition.property :property_name do |property_value|
103
+ "#{column.and(property_value)}"
104
+ end
105
+
106
+ @definition.process(@validator).should == ["SHOW 'default_message' UNLESS (#{@validator.column_name} AND property_value)"]
107
+ end
108
+
109
+ it "allows to define message mapping" do
110
+ @validator.options[:message] = :default_message
111
+ @validator.options[:specific_message] = :some_specific_message
112
+
113
+ @definition.property :property_name, :message => :specific_message do |property_value|
114
+ "#{column.and(property_value)}"
115
+ end
116
+
117
+ @definition.process(@validator).should == ["SHOW 'some_specific_message' UNLESS (#{@validator.column_name} AND property_value)"]
118
+ end
119
+ end
120
+
121
+ it "allows to define options filter" do
122
+ @validator.options[:property_name_1] = :property_value_1
123
+
124
+ @definition.property(:property_name) {|property_value| "#{column.and(property_value)}"}
125
+ @definition.property(:property_name_1) {|property_value| "#{column.and(property_value)}"}
126
+
127
+ @definition.process(@validator, [:property_name]).should == ["#{@validator.column_name} AND property_value"]
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,60 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe MigrationValidators::Core::ValidatorRouter, :type => :mv_test do
4
+ before :all do
5
+ use_memory_db
6
+ db.initialize_schema_migrations_table
7
+ end
8
+
9
+ before :each do
10
+ @builder = MigrationValidators::Core::StatementBuilder.new
11
+
12
+ @builder.operation :and do |stmt, value|
13
+ "#{stmt} AND #{value}"
14
+ end
15
+
16
+ @builder.operation :or do |stmt, value|
17
+ "#{stmt} OR #{value}"
18
+ end
19
+
20
+ @definition = MigrationValidators::Core::ValidatorDefinition.new @builder
21
+
22
+ @definition.property :property_name do |property_value|
23
+ column
24
+ end
25
+
26
+ @container = MigrationValidators::Core::ValidatorContainer.new :container, :validator_name => @definition, :validator_name_1 => @definition
27
+ @container.operation :create do |stmt, group_name|
28
+ "CREATE ENTITY #{group_name} BEGIN #{stmt} END"
29
+ end
30
+
31
+ @container_1 = MigrationValidators::Core::ValidatorContainer.new :container, :validator_name => @definition
32
+ @container_1.operation :create do |stmt, group_name|
33
+ "CREATE ENTITY_1 #{group_name} BEGIN #{stmt} END"
34
+ end
35
+
36
+ @router = MigrationValidators::Core::ValidatorRouter.new :container => @container, :container_1 => @container_1
37
+ end
38
+
39
+ it "routes validators according to their properties" do
40
+ validator1 = Factory.build :db_validator, :validator_name => :validator_name, :options => {:property_name => :property_value, :on => :create}
41
+ validator2 = Factory.build :db_validator, :validator_name => :validator_name, :options => {:property_name => :property_value, :on => :update}
42
+
43
+ @router.to :container, :if => {:on => :create}
44
+ @router.to :container_1, :if => {:on => :update}
45
+
46
+ @router.add_validators([validator1, validator2]).should == ["CREATE ENTITY #{validator1.name} BEGIN #{validator1.column_name} END",
47
+ "CREATE ENTITY_1 #{validator2.name} BEGIN #{validator2.column_name} END"]
48
+ end
49
+
50
+ it "merges routes to the same container" do
51
+ validator1 = Factory.build :db_validator, :table_name => :table_name, :validator_name => :validator_name, :options => {:property_name => :property_value, :on => :create}
52
+ validator2 = Factory.build :db_validator, :table_name => :table_name, :validator_name => :validator_name_1, :options => {:property_name => :property_value, :on => :create}
53
+
54
+ @container.group {|validator| validator.table_name}
55
+ @container.constraint_name {|group_name| "trigger_name" }
56
+ @router.to :container, :if => {:on => :create}
57
+
58
+ @router.add_validators([validator1, validator2]).should == ["CREATE ENTITY trigger_name BEGIN #{validator1.column_name} JOIN #{validator2.column_name} END"]
59
+ end
60
+ end
@@ -0,0 +1,4 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "MvCore" do
4
+ end
@@ -0,0 +1,15 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'mv-test'
5
+ require 'mv-core'
6
+ require 'shoulda'
7
+ require 'factory_girl'
8
+
9
+ # Requires supporting files with custom matchers and macros, etc,
10
+ # in ./support/ and its subdirectories.
11
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
12
+
13
+ RSpec.configure do |config|
14
+
15
+ end
@@ -0,0 +1,43 @@
1
+ Factory.sequence :validator_table_name do |n|
2
+ "table_#{n}"
3
+ end
4
+
5
+ Factory.sequence :validator_column_name do |n|
6
+ "column_name_#{n}"
7
+ end
8
+
9
+ Factory.define :db_validator, :class => MigrationValidators::Core::DbValidator do |validator|
10
+ validator.table_name { Factory.next(:validator_table_name) }
11
+ validator.column_name Factory.next(:validator_column_name)
12
+ validator.validator_name 'presense'
13
+ end
14
+
15
+ Factory.define :db_validator_base, :parent => :db_validator do |validator|
16
+ validator.table_name 'table_name'
17
+ validator.column_name 'column_name'
18
+ end
19
+
20
+ Factory.define :uniqueness, :parent => :db_validator_base do |validator|
21
+ validator.validator_name "uniqueness"
22
+ end
23
+
24
+ Factory.define :uniqueness_check, :parent => :uniqueness do |validator|
25
+ validator.options :as => :check
26
+ end
27
+
28
+ Factory.define :uniqueness_trigger, :parent => :uniqueness do |validator|
29
+ validator.options :as => :trigger
30
+ end
31
+
32
+ Factory.define :presense, :parent => :db_validator_base do |validator|
33
+ validator.validator_name "presense"
34
+ end
35
+
36
+ Factory.define :presense_check, :parent => :presense do |validator|
37
+ validator.options :as => :check
38
+ end
39
+
40
+ Factory.define :presense_trigger, :parent => :presense do |validator|
41
+ validator.options :as => :trigger
42
+ end
43
+
metadata ADDED
@@ -0,0 +1,152 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mv-core
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - Valeriy Prokopchuk
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-03-22 00:00:00 +02:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: activerecord
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.3.5
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: 1.0.0
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: jeweler
40
+ requirement: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.5.2
46
+ type: :development
47
+ prerelease: false
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: rcov
51
+ requirement: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: *id004
60
+ description: Migration Validators project core classes
61
+ email: vprokopchuk@gmail.com
62
+ executables: []
63
+
64
+ extensions: []
65
+
66
+ extra_rdoc_files:
67
+ - LICENSE.txt
68
+ - README.rdoc
69
+ files:
70
+ - lib/migration_validators/active_record/base.rb
71
+ - lib/migration_validators/active_record/connection_adapters/abstract_adapter.rb
72
+ - lib/migration_validators/active_record/connection_adapters/native_adapter.rb
73
+ - lib/migration_validators/active_record/connection_adapters/table.rb
74
+ - lib/migration_validators/active_record/connection_adapters/table_definition.rb
75
+ - lib/migration_validators/active_record/migration.rb
76
+ - lib/migration_validators/active_record/schema.rb
77
+ - lib/migration_validators/active_record/schema_dumper.rb
78
+ - lib/migration_validators/adapters/base.rb
79
+ - lib/migration_validators/adapters/containers.rb
80
+ - lib/migration_validators/adapters/routing.rb
81
+ - lib/migration_validators/adapters/syntax.rb
82
+ - lib/migration_validators/adapters/validator_definitions.rb
83
+ - lib/migration_validators/core/adapter_wrapper.rb
84
+ - lib/migration_validators/core/db_validator.rb
85
+ - lib/migration_validators/core/statement_builder.rb
86
+ - lib/migration_validators/core/validator_container.rb
87
+ - lib/migration_validators/core/validator_definition.rb
88
+ - lib/migration_validators/core/validator_router.rb
89
+ - lib/mv-core.rb
90
+ - lib/options.rb
91
+ - LICENSE.txt
92
+ - README.rdoc
93
+ - spec/migration_validators/active_record/connection_adapters/abstract_adapter_spec.rb
94
+ - spec/migration_validators/active_record/connection_adapters/table_definition_spec.rb
95
+ - spec/migration_validators/active_record/migration.rb
96
+ - spec/migration_validators/active_record/schema_dumper_spec.rb
97
+ - spec/migration_validators/adapters/base_spec.rb
98
+ - spec/migration_validators/core/adapter_wrapper_spec.rb
99
+ - spec/migration_validators/core/db_validator_spec.rb
100
+ - spec/migration_validators/core/statement_builder_spec.rb
101
+ - spec/migration_validators/core/validator_container_spec.rb
102
+ - spec/migration_validators/core/validator_definition_spec.rb
103
+ - spec/migration_validators/core/validator_router_spec.rb
104
+ - spec/mv-core_spec.rb
105
+ - spec/spec_helper.rb
106
+ - spec/support/factories/db_validator.rb
107
+ has_rdoc: true
108
+ homepage: http://github.com/vprokochuk256/mv-core
109
+ licenses:
110
+ - MIT
111
+ post_install_message:
112
+ rdoc_options: []
113
+
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 2707893248662521679
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: "0"
131
+ requirements: []
132
+
133
+ rubyforge_project:
134
+ rubygems_version: 1.6.2
135
+ signing_key:
136
+ specification_version: 3
137
+ summary: Migration Validators project core classes
138
+ test_files:
139
+ - spec/migration_validators/active_record/connection_adapters/abstract_adapter_spec.rb
140
+ - spec/migration_validators/active_record/connection_adapters/table_definition_spec.rb
141
+ - spec/migration_validators/active_record/migration.rb
142
+ - spec/migration_validators/active_record/schema_dumper_spec.rb
143
+ - spec/migration_validators/adapters/base_spec.rb
144
+ - spec/migration_validators/core/adapter_wrapper_spec.rb
145
+ - spec/migration_validators/core/db_validator_spec.rb
146
+ - spec/migration_validators/core/statement_builder_spec.rb
147
+ - spec/migration_validators/core/validator_container_spec.rb
148
+ - spec/migration_validators/core/validator_definition_spec.rb
149
+ - spec/migration_validators/core/validator_router_spec.rb
150
+ - spec/mv-core_spec.rb
151
+ - spec/spec_helper.rb
152
+ - spec/support/factories/db_validator.rb