datamapper 0.3.2 → 0.9.3

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 (180) hide show
  1. data/History.txt +0 -0
  2. data/Manifest.txt +5 -0
  3. data/README.txt +11 -0
  4. data/Rakefile +70 -0
  5. data/lib/datamapper.rb +8 -0
  6. metadata +152 -319
  7. data/CHANGELOG +0 -145
  8. data/FAQ +0 -96
  9. data/MIT-LICENSE +0 -22
  10. data/QUICKLINKS +0 -12
  11. data/README +0 -105
  12. data/environment.rb +0 -62
  13. data/example.rb +0 -156
  14. data/lib/data_mapper.rb +0 -88
  15. data/lib/data_mapper/adapters/abstract_adapter.rb +0 -43
  16. data/lib/data_mapper/adapters/data_object_adapter.rb +0 -480
  17. data/lib/data_mapper/adapters/mysql_adapter.rb +0 -72
  18. data/lib/data_mapper/adapters/postgresql_adapter.rb +0 -258
  19. data/lib/data_mapper/adapters/sql/coersion.rb +0 -134
  20. data/lib/data_mapper/adapters/sql/commands/load_command.rb +0 -545
  21. data/lib/data_mapper/adapters/sql/mappings/associations_set.rb +0 -34
  22. data/lib/data_mapper/adapters/sql/mappings/column.rb +0 -279
  23. data/lib/data_mapper/adapters/sql/mappings/conditions.rb +0 -172
  24. data/lib/data_mapper/adapters/sql/mappings/schema.rb +0 -60
  25. data/lib/data_mapper/adapters/sql/mappings/table.rb +0 -459
  26. data/lib/data_mapper/adapters/sql/quoting.rb +0 -24
  27. data/lib/data_mapper/adapters/sqlite3_adapter.rb +0 -159
  28. data/lib/data_mapper/associations.rb +0 -106
  29. data/lib/data_mapper/associations/belongs_to_association.rb +0 -160
  30. data/lib/data_mapper/associations/has_and_belongs_to_many_association.rb +0 -437
  31. data/lib/data_mapper/associations/has_many_association.rb +0 -283
  32. data/lib/data_mapper/associations/has_n_association.rb +0 -143
  33. data/lib/data_mapper/associations/reference.rb +0 -47
  34. data/lib/data_mapper/attributes.rb +0 -73
  35. data/lib/data_mapper/auto_migrations.rb +0 -36
  36. data/lib/data_mapper/base.rb +0 -17
  37. data/lib/data_mapper/callbacks.rb +0 -107
  38. data/lib/data_mapper/context.rb +0 -112
  39. data/lib/data_mapper/database.rb +0 -234
  40. data/lib/data_mapper/dependency_queue.rb +0 -28
  41. data/lib/data_mapper/embedded_value.rb +0 -145
  42. data/lib/data_mapper/identity_map.rb +0 -47
  43. data/lib/data_mapper/is/tree.rb +0 -121
  44. data/lib/data_mapper/migration.rb +0 -155
  45. data/lib/data_mapper/persistence.rb +0 -852
  46. data/lib/data_mapper/property.rb +0 -310
  47. data/lib/data_mapper/query.rb +0 -164
  48. data/lib/data_mapper/support/blank.rb +0 -35
  49. data/lib/data_mapper/support/connection_pool.rb +0 -117
  50. data/lib/data_mapper/support/enumerable.rb +0 -35
  51. data/lib/data_mapper/support/errors.rb +0 -16
  52. data/lib/data_mapper/support/inflector.rb +0 -265
  53. data/lib/data_mapper/support/object.rb +0 -54
  54. data/lib/data_mapper/support/serialization.rb +0 -96
  55. data/lib/data_mapper/support/silence.rb +0 -10
  56. data/lib/data_mapper/support/string.rb +0 -72
  57. data/lib/data_mapper/support/struct.rb +0 -7
  58. data/lib/data_mapper/support/symbol.rb +0 -82
  59. data/lib/data_mapper/support/typed_set.rb +0 -65
  60. data/lib/data_mapper/types/base.rb +0 -44
  61. data/lib/data_mapper/types/string.rb +0 -34
  62. data/lib/data_mapper/validatable_extensions/errors.rb +0 -12
  63. data/lib/data_mapper/validatable_extensions/macros.rb +0 -7
  64. data/lib/data_mapper/validatable_extensions/validatable_instance_methods.rb +0 -62
  65. data/lib/data_mapper/validatable_extensions/validation_base.rb +0 -18
  66. data/lib/data_mapper/validatable_extensions/validations/formats/email.rb +0 -43
  67. data/lib/data_mapper/validatable_extensions/validations/validates_acceptance_of.rb +0 -7
  68. data/lib/data_mapper/validatable_extensions/validations/validates_confirmation_of.rb +0 -7
  69. data/lib/data_mapper/validatable_extensions/validations/validates_each.rb +0 -7
  70. data/lib/data_mapper/validatable_extensions/validations/validates_format_of.rb +0 -28
  71. data/lib/data_mapper/validatable_extensions/validations/validates_length_of.rb +0 -15
  72. data/lib/data_mapper/validatable_extensions/validations/validates_numericality_of.rb +0 -7
  73. data/lib/data_mapper/validatable_extensions/validations/validates_presence_of.rb +0 -7
  74. data/lib/data_mapper/validatable_extensions/validations/validates_true_for.rb +0 -7
  75. data/lib/data_mapper/validatable_extensions/validations/validates_uniqueness_of.rb +0 -40
  76. data/lib/data_mapper/validations.rb +0 -20
  77. data/lib/data_mapper/validations/number_validator.rb +0 -40
  78. data/lib/data_mapper/validations/string_validator.rb +0 -20
  79. data/lib/data_mapper/validations/validator.rb +0 -13
  80. data/performance.rb +0 -307
  81. data/plugins/can_has_sphinx/LICENSE +0 -23
  82. data/plugins/can_has_sphinx/README +0 -4
  83. data/plugins/can_has_sphinx/REVISION +0 -1
  84. data/plugins/can_has_sphinx/Rakefile +0 -22
  85. data/plugins/can_has_sphinx/init.rb +0 -1
  86. data/plugins/can_has_sphinx/install.rb +0 -1
  87. data/plugins/can_has_sphinx/lib/acts_as_sphinx.rb +0 -123
  88. data/plugins/can_has_sphinx/lib/sphinx.rb +0 -460
  89. data/plugins/can_has_sphinx/scripts/sphinx.sh +0 -47
  90. data/plugins/can_has_sphinx/tasks/acts_as_sphinx_tasks.rake +0 -41
  91. data/profile_data_mapper.rb +0 -40
  92. data/rakefile.rb +0 -159
  93. data/spec/acts_as_tree_spec.rb +0 -67
  94. data/spec/adapters/data_object_adapter_spec.rb +0 -31
  95. data/spec/associations/belongs_to_association_spec.rb +0 -98
  96. data/spec/associations/has_and_belongs_to_many_association_spec.rb +0 -377
  97. data/spec/associations/has_many_association_spec.rb +0 -337
  98. data/spec/attributes_spec.rb +0 -52
  99. data/spec/auto_migrations_spec.rb +0 -101
  100. data/spec/callbacks_spec.rb +0 -186
  101. data/spec/can_has_sphinx.rb +0 -5
  102. data/spec/coersion_spec.rb +0 -41
  103. data/spec/column_spec.rb +0 -114
  104. data/spec/count_command_spec.rb +0 -45
  105. data/spec/database_spec.rb +0 -18
  106. data/spec/dataobjects_spec.rb +0 -27
  107. data/spec/delete_command_spec.rb +0 -11
  108. data/spec/dependency_spec.rb +0 -29
  109. data/spec/embedded_value_spec.rb +0 -161
  110. data/spec/fixtures/animals.yaml +0 -33
  111. data/spec/fixtures/animals_exhibits.yaml +0 -2
  112. data/spec/fixtures/careers.yaml +0 -5
  113. data/spec/fixtures/comments.yaml +0 -1
  114. data/spec/fixtures/exhibits.yaml +0 -90
  115. data/spec/fixtures/fruit.yaml +0 -6
  116. data/spec/fixtures/people.yaml +0 -37
  117. data/spec/fixtures/posts.yaml +0 -3
  118. data/spec/fixtures/projects.yaml +0 -13
  119. data/spec/fixtures/sections.yaml +0 -5
  120. data/spec/fixtures/serializers.yaml +0 -6
  121. data/spec/fixtures/tasks.yaml +0 -6
  122. data/spec/fixtures/tasks_tasks.yaml +0 -2
  123. data/spec/fixtures/tomatoes.yaml +0 -1
  124. data/spec/fixtures/users.yaml +0 -1
  125. data/spec/fixtures/zoos.yaml +0 -24
  126. data/spec/is_a_tree_spec.rb +0 -149
  127. data/spec/legacy_spec.rb +0 -16
  128. data/spec/load_command_spec.rb +0 -322
  129. data/spec/magic_columns_spec.rb +0 -26
  130. data/spec/migration_spec.rb +0 -267
  131. data/spec/mock_adapter.rb +0 -20
  132. data/spec/models/animal.rb +0 -12
  133. data/spec/models/candidate.rb +0 -8
  134. data/spec/models/career.rb +0 -7
  135. data/spec/models/chain.rb +0 -8
  136. data/spec/models/comment.rb +0 -6
  137. data/spec/models/exhibit.rb +0 -14
  138. data/spec/models/fence.rb +0 -7
  139. data/spec/models/fruit.rb +0 -8
  140. data/spec/models/job.rb +0 -8
  141. data/spec/models/person.rb +0 -30
  142. data/spec/models/post.rb +0 -14
  143. data/spec/models/project.rb +0 -41
  144. data/spec/models/sales_person.rb +0 -5
  145. data/spec/models/section.rb +0 -8
  146. data/spec/models/serializer.rb +0 -5
  147. data/spec/models/task.rb +0 -9
  148. data/spec/models/tomato.rb +0 -27
  149. data/spec/models/user.rb +0 -12
  150. data/spec/models/zoo.rb +0 -13
  151. data/spec/natural_key_spec.rb +0 -36
  152. data/spec/paranoia_spec.rb +0 -38
  153. data/spec/persistence_spec.rb +0 -479
  154. data/spec/postgres_spec.rb +0 -96
  155. data/spec/property_spec.rb +0 -151
  156. data/spec/query_spec.rb +0 -77
  157. data/spec/save_command_spec.rb +0 -94
  158. data/spec/schema_spec.rb +0 -8
  159. data/spec/serialize_spec.rb +0 -19
  160. data/spec/single_table_inheritance_spec.rb +0 -43
  161. data/spec/spec_helper.rb +0 -45
  162. data/spec/support/blank_spec.rb +0 -8
  163. data/spec/support/inflector_spec.rb +0 -41
  164. data/spec/support/object_spec.rb +0 -9
  165. data/spec/support/serialization_spec.rb +0 -61
  166. data/spec/support/silence_spec.rb +0 -15
  167. data/spec/support/string_spec.rb +0 -7
  168. data/spec/support/struct_spec.rb +0 -12
  169. data/spec/support/typed_set_spec.rb +0 -66
  170. data/spec/symbolic_operators_spec.rb +0 -27
  171. data/spec/table_spec.rb +0 -79
  172. data/spec/types/string.rb +0 -81
  173. data/spec/validates_confirmation_of_spec.rb +0 -55
  174. data/spec/validates_format_of_spec.rb +0 -78
  175. data/spec/validates_length_of_spec.rb +0 -117
  176. data/spec/validates_uniqueness_of_spec.rb +0 -92
  177. data/spec/validations/number_validator.rb +0 -59
  178. data/spec/validations/string_validator.rb +0 -14
  179. data/spec/validations_spec.rb +0 -141
  180. data/tasks/fixtures.rb +0 -53
@@ -1,55 +0,0 @@
1
- require File.dirname(__FILE__) + "/spec_helper"
2
-
3
- describe Validatable::ValidatesConfirmationOf do
4
-
5
- before(:all) do
6
- class Cow
7
-
8
- include DataMapper::CallbacksHelper
9
- include DataMapper::Validations
10
-
11
- attr_accessor :name, :name_confirmation, :age
12
- end
13
- end
14
-
15
- it 'should pass validation' do
16
- class Cow
17
- validations.clear
18
- validates_confirmation_of :name, :event => :save
19
- end
20
-
21
- betsy = Cow.new
22
- betsy.valid?.should == true
23
-
24
- betsy.name = 'Betsy'
25
- betsy.name_confirmation = ''
26
- betsy.valid?(:save).should == false
27
- betsy.errors.full_messages.first.should == 'Name does not match the confirmation'
28
-
29
- betsy.name = ''
30
- betsy.name_confirmation = 'Betsy'
31
- betsy.valid?(:save).should == false
32
- betsy.errors.full_messages.first.should == 'Name does not match the confirmation'
33
-
34
- betsy.name = 'Betsy'
35
- betsy.name_confirmation = 'Betsy'
36
- betsy.valid?(:save).should == true
37
- end
38
-
39
- it 'should allow allow a custom error message' do
40
- class Cow
41
- validations.clear
42
- validates_confirmation_of :name, :event => :save, :message => 'You confirm name NOW or else.'
43
- end
44
-
45
- betsy = Cow.new
46
- betsy.valid?.should == true
47
-
48
- betsy.name = 'Betsy'
49
- betsy.name_confirmation = ''
50
- betsy.valid?(:save).should == false
51
-
52
- betsy.errors.full_messages.first.should == 'You confirm name NOW or else.'
53
- end
54
-
55
- end
@@ -1,78 +0,0 @@
1
- require File.dirname(__FILE__) + "/spec_helper"
2
-
3
- context Validatable::ValidatesFormatOf do
4
-
5
- before(:all) do
6
- class Employee
7
-
8
- include DataMapper::CallbacksHelper
9
- include DataMapper::Validations
10
-
11
- attr_accessor :email
12
- end
13
- end
14
-
15
- it 'must have a valid email address' do
16
- class Employee
17
- validations.clear
18
- validates_format_of :email, :with => :email_address, :on => :save
19
- end
20
-
21
- e = Employee.new
22
- e.valid?.should == true
23
-
24
- [
25
- 'test test@example.com', 'test@example', 'test#example.com',
26
- 'tester@exampl$.com', '[scizzle]@example.com', '.test@example.com'
27
- ].all? { |test_email|
28
- e.email = test_email
29
- puts "Email is: #{test_email}"
30
- e.valid?(:save).should == false
31
- e.errors.full_messages.first.should == "#{test_email} is not a valid email address"
32
- }
33
-
34
- e.email = 'test@example.com'
35
- e.valid?(:save).should == true
36
- end
37
-
38
- it 'must have a valid organization code' do
39
- class Employee
40
- validations.clear
41
-
42
- attr_accessor :organization_code
43
-
44
- # WARNING: contrived example
45
- # The organization code must be A#### or B######X12
46
- validates_format_of :organization_code, :on => :save, :with => /(A\d{4}|[B-Z]\d{6}X12)/
47
- end
48
-
49
- e = Employee.new
50
- e.valid?.should == true
51
-
52
- e.organization_code = 'BLAH :)'
53
- e.valid?(:save).should == false
54
- e.errors.full_messages.first.should == 'Organization code is invalid'
55
-
56
- e.organization_code = 'A1234'
57
- e.valid?(:save).should == true
58
-
59
- e.organization_code = 'B123456X12'
60
- e.valid?(:save).should == true
61
- end
62
-
63
-
64
- it 'should allow custom error messages' do
65
- class Employee
66
- validations.clear
67
- validates_format_of :email, :with => :email_address, :on => :save, :message => "Me needs good email, m'kay?"
68
- end
69
-
70
- e = Employee.new
71
- e.valid?.should == true
72
-
73
- e.valid?(:save).should == false
74
- e.errors.full_messages.first.should == "Me needs good email, m'kay?"
75
-
76
- end
77
-
78
- end
@@ -1,117 +0,0 @@
1
- require File.dirname(__FILE__) + "/spec_helper"
2
-
3
- describe Validatable::ValidatesLengthOf do
4
-
5
- before(:all) do
6
- class Cow
7
-
8
- include DataMapper::CallbacksHelper
9
- include DataMapper::Validations
10
-
11
- attr_accessor :name, :age
12
- end
13
- end
14
-
15
- it 'should not have a name shorter than 3 characters' do
16
- class Cow
17
- validations.clear
18
- validates_length_of :name, :minimum => 3, :event => :save
19
- end
20
-
21
- betsy = Cow.new
22
- betsy.valid?.should == true
23
-
24
- betsy.valid?(:save).should == false
25
- betsy.errors.full_messages.first.should == 'Name must be more than 2 characters long'
26
-
27
- betsy.name = 'Be'
28
- betsy.valid?(:save).should == false
29
- betsy.errors.full_messages.first.should == 'Name must be more than 2 characters long'
30
-
31
- betsy.name = 'Bet'
32
- betsy.valid?(:save).should == true
33
-
34
- betsy.name = 'Bets'
35
- betsy.valid?(:save).should == true
36
- end
37
-
38
-
39
- it 'should not have a name longer than 10 characters' do
40
- class Cow
41
- validations.clear
42
- validates_length_of :name, :maximum => 10, :event => :save
43
- end
44
-
45
- betsy = Cow.new
46
- betsy.valid?.should == true
47
- betsy.valid?(:save).should == true
48
-
49
- betsy.name = 'Testicular Fortitude'
50
- betsy.valid?(:save).should == false
51
- betsy.errors.full_messages.first.should == 'Name must be less than 11 characters long'
52
-
53
- betsy.name = 'Betsy'
54
- betsy.valid?(:save).should == true
55
- end
56
-
57
- it 'should have a name that is 8 characters long' do
58
- class Cow
59
- validations.clear
60
- validates_length_of :name, :is => 8, :event => :save
61
- end
62
-
63
- # Context is not save
64
- betsy = Cow.new
65
- betsy.valid?.should == true
66
-
67
- # Context is :save
68
- betsy.valid?(:save).should == false
69
-
70
- betsy.name = 'Testicular Fortitude'
71
- betsy.valid?(:save).should == false
72
- betsy.errors.full_messages.first.should == 'Name must be 8 characters long'
73
-
74
- betsy.name = 'Samooela'
75
- betsy.valid?(:save).should == true
76
- end
77
-
78
- it 'should have a name that is between 10 and 15 characters long' do
79
- class Cow
80
- validations.clear
81
- validates_length_of :name, :within => (10..15), :event => :save
82
- end
83
-
84
- # Context is not save
85
- betsy = Cow.new
86
- betsy.valid?.should == true
87
-
88
- # Context is :save
89
- betsy.valid?(:save)
90
- betsy.errors.full_messages.first
91
-
92
- betsy.valid?(:save).should == false
93
- betsy.errors.full_messages.first.should == 'Name must be between 10 and 15 characters long'
94
-
95
- betsy.name = 'Smoooooot'
96
- betsy.valid?(:save).should == false
97
-
98
- betsy.name = 'Smooooooooooooooooooot'
99
- betsy.valid?(:save).should == false
100
-
101
- betsy.name = 'Smootenstein'
102
- betsy.valid?(:save).should == true
103
- end
104
-
105
- it 'should allow custom error messages' do
106
- class Cow
107
- validations.clear
108
- validates_length_of :name, :is => 8, :event => :save, :message => '8 letters, no more, no less.'
109
- end
110
-
111
- betsy = Cow.new
112
- betsy.valid?.should == true
113
-
114
- betsy.valid?(:save).should == false
115
- betsy.errors.full_messages.first.should == '8 letters, no more, no less.'
116
- end
117
- end
@@ -1,92 +0,0 @@
1
- require File.dirname(__FILE__) + "/spec_helper"
2
-
3
- describe Validatable::ValidatesUniquenessOf do
4
-
5
- before(:all) do
6
- fixtures('people')
7
- end
8
-
9
- it 'must have a unique name' do
10
- class Animal
11
- validations.clear
12
- validates_uniqueness_of :name, :event => :save
13
- end
14
-
15
- bugaboo = Animal.new
16
- bugaboo.valid?.should == true
17
-
18
- bugaboo.name = 'Bear'
19
- bugaboo.valid?(:save).should == false
20
- bugaboo.errors.full_messages.first.should == 'Name has already been taken'
21
-
22
- bugaboo.name = 'Bugaboo'
23
- bugaboo.valid?(:save).should == true
24
- end
25
-
26
- it 'must have a unique name for their occupation' do
27
- class Person
28
- validations.clear
29
- validates_uniqueness_of :name, :event => :save, :scope => :occupation
30
- end
31
-
32
- new_programmer_scott = Person.new(:name => 'Scott', :age => 29, :occupation => 'Programmer')
33
- garbage_man_scott = Person.new(:name => 'Scott', :age => 25, :occupation => 'Garbage Man')
34
-
35
- # Should be valid even though there is another 'Scott' already in the database
36
- garbage_man_scott.valid?(:save).should == true
37
-
38
- # Should NOT be valid, there is already a Programmer names Scott, adding one more
39
- # would destroy the universe or something
40
- new_programmer_scott.valid?(:save).should == false
41
- new_programmer_scott.errors.full_messages.first.should == "Name has already been taken"
42
- end
43
-
44
- it 'must have a unique name for their occupation and career_name' do
45
- class Person
46
- validations.clear
47
- validates_uniqueness_of :name, :event => :save, :scope => [:occupation, :career_name]
48
- end
49
-
50
- new_programmer_scott = Person.new(:name => 'Scott', :age => 29, :occupation => 'Programmer', :career_name => 'Programmer')
51
- junior_programmer_scott = Person.new(:name => 'Scott', :age => 25, :occupation => 'Programmer', :career_name => 'Junior Programmer')
52
-
53
- # Should be valid even though there is another 'Scott' already in the database
54
- junior_programmer_scott.valid?(:save).should == true
55
-
56
- # Should NOT be valid, there is already a Programmer names Scott, adding one more
57
- # would destroy the universe or something
58
- new_programmer_scott.valid?(:save).should == false
59
- new_programmer_scott.errors.full_messages.first.should == "Name has already been taken"
60
- end
61
-
62
- it "should allow custom error messages" do
63
- class Animal
64
- validations.clear
65
- validates_uniqueness_of :name, :event => :save, :message => 'You try to steal my name? I kill you!'
66
- end
67
-
68
- bugaboo = Animal.new
69
- bugaboo.valid?.should == true
70
-
71
- bugaboo.name = 'Bear'
72
- bugaboo.valid?(:save).should == false
73
- bugaboo.errors.full_messages.first.should == 'You try to steal my name? I kill you!'
74
- end
75
-
76
- it "should not interfere with the destruction of an object" do
77
- pending "see: http://wm.lighthouseapp.com/projects/4819-datamapper/tickets/139"
78
-
79
- ## creating two dups so that we have invalid records in the db
80
- Project.create(:title => 'Dup')
81
- Project.create(:title => 'Dup')
82
-
83
- class Project
84
- validations.clear
85
- validates_uniqueness_of :title, :message => 'You try to steal my title? I kill you!'
86
- end
87
-
88
- project = Project.first(:title => 'Dup')
89
- project.destroy!.should == true
90
-
91
- end
92
- end
@@ -1,59 +0,0 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
2
-
3
- describe DataMapper::Validations::NumberValidator do
4
- before(:each) do
5
- @v = DataMapper::Validations::NumberValidator.new
6
- end
7
-
8
- it "should validate 'less than'" do
9
- @v < 10
10
-
11
- @v.errors_for(11).should_not be_empty
12
- @v.errors_for(10).should_not be_empty
13
- @v.errors_for(9).should be_empty
14
- end
15
-
16
- it "should validate 'less than or equals'" do
17
- @v <= 10
18
-
19
- @v.errors_for(11).should_not be_empty
20
- @v.errors_for(10).should be_empty
21
- @v.errors_for(9).should be_empty
22
- end
23
-
24
- it "should validate 'greater than'" do
25
- @v > 10
26
-
27
- @v.errors_for(11).should be_empty
28
- @v.errors_for(10).should_not be_empty
29
- @v.errors_for(9).should_not be_empty
30
- end
31
-
32
- it "should validate 'greater than or equals'" do
33
- @v >= 10
34
-
35
- @v.errors_for(11).should be_empty
36
- @v.errors_for(10).should be_empty
37
- @v.errors_for(9).should_not be_empty
38
- end
39
-
40
- it "should validate 'between' (inclusive)" do
41
- @v.between(1 .. 10)
42
-
43
- @v.errors_for(11).should_not be_empty
44
- @v.errors_for(0).should_not be_empty
45
- @v.errors_for(10).should be_empty
46
- @v.errors_for(1).should be_empty
47
- @v.errors_for(5).should be_empty
48
- end
49
-
50
- it "should validate 'between' (exclusive)" do
51
- @v.between(1 ... 10)
52
-
53
- @v.errors_for(11).should_not be_empty
54
- @v.errors_for(0).should_not be_empty
55
- @v.errors_for(10).should_not be_empty
56
- @v.errors_for(1).should be_empty
57
- @v.errors_for(5).should be_empty
58
- end
59
- end
@@ -1,14 +0,0 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
2
-
3
- describe DataMapper::Validations::StringValidator do
4
- before(:each) do
5
- @v = DataMapper::Validations::StringValidator.new
6
- end
7
-
8
- it "should validate 'matches'" do
9
- @v.matches /aabb/
10
-
11
- @v.errors_for("cde").should_not be_empty
12
- @v.errors_for("aabbb").should be_empty
13
- end
14
- end
@@ -1,141 +0,0 @@
1
- require File.dirname(__FILE__) + "/spec_helper"
2
-
3
- describe Validatable do
4
-
5
- before(:all) do
6
- class Cow
7
-
8
- include DataMapper::CallbacksHelper
9
- include DataMapper::Validations
10
-
11
- attr_accessor :name, :age
12
- end
13
- end
14
-
15
- it 'should allow you to specify not-null fields for different events' do
16
- class Cow
17
- validations.clear
18
- validates_presence_of :name, :event => :save
19
- end
20
-
21
- betsy = Cow.new
22
- betsy.valid?.should == true
23
-
24
- betsy.valid?(:save).should == false
25
- betsy.errors.full_messages.first.should == 'Name must not be blank'
26
-
27
- betsy.name = 'Betsy'
28
- betsy.valid?(:save).should == true
29
- end
30
-
31
- it 'should be able to use ":on" for an event alias' do
32
- class Cow
33
- validations.clear
34
- validates_presence_of :name, :age, :on => :create
35
- end
36
-
37
- maggie = Cow.new
38
- maggie.valid?.should == true
39
-
40
- maggie.valid?(:create).should == false
41
- maggie.errors.full_messages.should include('Age must not be blank')
42
- maggie.errors.full_messages.should include('Name must not be blank')
43
-
44
- maggie.name = 'Maggie'
45
- maggie.age = 29
46
- maggie.valid?(:create).should == true
47
- end
48
-
49
- it 'should default to a general event if unspecified' do
50
- class Cow
51
- validations.clear
52
- validates_presence_of :name, :age
53
- end
54
-
55
- rhonda = Cow.new
56
- rhonda.valid?.should == false
57
- rhonda.errors.should have(2).full_messages
58
-
59
- rhonda.errors.full_messages.should include('Age must not be blank')
60
- rhonda.errors.full_messages.should include('Name must not be blank')
61
-
62
- rhonda.name = 'Rhonda'
63
- rhonda.age = 44
64
- rhonda.valid?.should == true
65
- end
66
-
67
- it "should always run validations without a specific event" do
68
- class Cow
69
- validations.clear
70
- validates_presence_of :name
71
- validates_presence_of :age, :on => :save
72
- end
73
-
74
- isabel = Cow.new
75
- isabel.valid?.should == false
76
- isabel.errors.should have(1).full_messages
77
- isabel.errors.full_messages.should include('Name must not be blank')
78
- isabel.errors.on(:name).should == ['Name must not be blank']
79
-
80
- isabel.valid?(:save).should == false
81
- isabel.errors.should have(2).full_messages
82
-
83
- isabel.errors.full_messages.should include('Age must not be blank')
84
- isabel.errors.full_messages.should include('Name must not be blank')
85
- isabel.errors.on(:name).should == ['Name must not be blank']
86
-
87
- end
88
-
89
- it 'should have 1 validation error' do
90
- class VPOTest
91
-
92
- include DataMapper::CallbacksHelper
93
- include DataMapper::Validations
94
-
95
- attr_accessor :name, :whatever
96
-
97
- validates_presence_of :name
98
- end
99
-
100
- o = VPOTest.new
101
- o.should_not be_valid
102
- o.errors.should have(1).full_messages
103
- end
104
-
105
- it 'should translate error messages' do
106
- String::translations["%s must not be blank"] = "%s should not be blank!"
107
-
108
- beth = Cow.new
109
- beth.age = 30
110
-
111
- beth.should_not be_valid
112
-
113
- beth.errors.full_messages.should include('Name should not be blank!')
114
-
115
- String::translations.delete("%s must not be blank")
116
- end
117
-
118
- it 'should be able to find specific error message' do
119
- class Cow
120
- validations.clear
121
- validates_presence_of :name
122
- end
123
-
124
- gertie = Cow.new
125
- gertie.should_not be_valid
126
- gertie.errors.on(:name).should == ['Name must not be blank']
127
- gertie.errors.on(:age).should == nil
128
- end
129
-
130
- it "should be able to specify custom error messages" do
131
- class Cow
132
- validations.clear
133
- validates_presence_of :name, :message => 'Give me a name, bub!'
134
- end
135
-
136
- gertie = Cow.new
137
- gertie.should_not be_valid
138
- gertie.errors.on(:name).should == ['Give me a name, bub!']
139
- end
140
-
141
- end