datamapper 0.3.2 → 0.9.3

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