sbf-dm-validations 1.3.0.beta
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.
- checksums.yaml +7 -0
- data/.gitignore +38 -0
- data/.rspec +1 -0
- data/.rubocop.yml +468 -0
- data/.travis.yml +51 -0
- data/Gemfile +60 -0
- data/LICENSE +21 -0
- data/README.rdoc +122 -0
- data/Rakefile +4 -0
- data/dm-validations.gemspec +20 -0
- data/lib/data_mapper/core.rb +1 -0
- data/lib/data_mapper/support/assertions.rb +1 -0
- data/lib/data_mapper/support/equalizer.rb +1 -0
- data/lib/data_mapper/support/ordered_set.rb +2 -0
- data/lib/data_mapper/validation/backward.rb +205 -0
- data/lib/data_mapper/validation/context.rb +57 -0
- data/lib/data_mapper/validation/contextual_rule_set.rb +210 -0
- data/lib/data_mapper/validation/exceptions.rb +7 -0
- data/lib/data_mapper/validation/inferred.rb +264 -0
- data/lib/data_mapper/validation/macros.rb +449 -0
- data/lib/data_mapper/validation/message_transformer.rb +111 -0
- data/lib/data_mapper/validation/model_extensions.rb +17 -0
- data/lib/data_mapper/validation/resource_extensions.rb +131 -0
- data/lib/data_mapper/validation/rule/absence.rb +31 -0
- data/lib/data_mapper/validation/rule/acceptance.rb +49 -0
- data/lib/data_mapper/validation/rule/block.rb +37 -0
- data/lib/data_mapper/validation/rule/confirmation.rb +47 -0
- data/lib/data_mapper/validation/rule/format/proc.rb +34 -0
- data/lib/data_mapper/validation/rule/format/regexp.rb +51 -0
- data/lib/data_mapper/validation/rule/format.rb +86 -0
- data/lib/data_mapper/validation/rule/formats/email.rb +54 -0
- data/lib/data_mapper/validation/rule/formats/url.rb +13 -0
- data/lib/data_mapper/validation/rule/length/equal.rb +48 -0
- data/lib/data_mapper/validation/rule/length/maximum.rb +50 -0
- data/lib/data_mapper/validation/rule/length/minimum.rb +50 -0
- data/lib/data_mapper/validation/rule/length/range.rb +50 -0
- data/lib/data_mapper/validation/rule/length.rb +96 -0
- data/lib/data_mapper/validation/rule/method.rb +42 -0
- data/lib/data_mapper/validation/rule/numericalness/equal.rb +34 -0
- data/lib/data_mapper/validation/rule/numericalness/greater_than.rb +34 -0
- data/lib/data_mapper/validation/rule/numericalness/greater_than_or_equal.rb +34 -0
- data/lib/data_mapper/validation/rule/numericalness/integer.rb +41 -0
- data/lib/data_mapper/validation/rule/numericalness/less_than.rb +34 -0
- data/lib/data_mapper/validation/rule/numericalness/less_than_or_equal.rb +34 -0
- data/lib/data_mapper/validation/rule/numericalness/not_equal.rb +34 -0
- data/lib/data_mapper/validation/rule/numericalness/numeric.rb +68 -0
- data/lib/data_mapper/validation/rule/numericalness.rb +91 -0
- data/lib/data_mapper/validation/rule/presence.rb +52 -0
- data/lib/data_mapper/validation/rule/primitive_type.rb +32 -0
- data/lib/data_mapper/validation/rule/uniqueness.rb +64 -0
- data/lib/data_mapper/validation/rule/within/range/bounded.rb +29 -0
- data/lib/data_mapper/validation/rule/within/range/unbounded_begin.rb +29 -0
- data/lib/data_mapper/validation/rule/within/range/unbounded_end.rb +29 -0
- data/lib/data_mapper/validation/rule/within/range.rb +55 -0
- data/lib/data_mapper/validation/rule/within/set.rb +45 -0
- data/lib/data_mapper/validation/rule/within.rb +32 -0
- data/lib/data_mapper/validation/rule.rb +232 -0
- data/lib/data_mapper/validation/rule_set.rb +157 -0
- data/lib/data_mapper/validation/support/object.rb +19 -0
- data/lib/data_mapper/validation/support/ordered_hash.rb +434 -0
- data/lib/data_mapper/validation/version.rb +5 -0
- data/lib/data_mapper/validation/violation.rb +136 -0
- data/lib/data_mapper/validation/violation_set.rb +115 -0
- data/lib/data_mapper/validation.rb +105 -0
- data/lib/dm-validations.rb +24 -0
- data/spec/data_mapper/validation/resource_extensions/save_spec.rb +56 -0
- data/spec/data_mapper/validation/resource_extensions/validate_spec.rb +103 -0
- data/spec/fixtures/barcode.rb +40 -0
- data/spec/fixtures/basketball_court.rb +58 -0
- data/spec/fixtures/basketball_player.rb +34 -0
- data/spec/fixtures/beta_tester_account.rb +33 -0
- data/spec/fixtures/bill_of_landing.rb +47 -0
- data/spec/fixtures/boat_dock.rb +26 -0
- data/spec/fixtures/city.rb +24 -0
- data/spec/fixtures/company.rb +93 -0
- data/spec/fixtures/corporate_world.rb +39 -0
- data/spec/fixtures/country.rb +24 -0
- data/spec/fixtures/ethernet_frame.rb +56 -0
- data/spec/fixtures/event.rb +44 -0
- data/spec/fixtures/g3_concert.rb +57 -0
- data/spec/fixtures/integer_dumped_as_string_property.rb +24 -0
- data/spec/fixtures/jabberwock.rb +27 -0
- data/spec/fixtures/kayak.rb +28 -0
- data/spec/fixtures/lernean_hydra.rb +39 -0
- data/spec/fixtures/llama_spaceship.rb +15 -0
- data/spec/fixtures/mathematical_function.rb +34 -0
- data/spec/fixtures/memory_object.rb +35 -0
- data/spec/fixtures/mittelschnauzer.rb +39 -0
- data/spec/fixtures/motor_launch.rb +21 -0
- data/spec/fixtures/multibyte.rb +16 -0
- data/spec/fixtures/page.rb +32 -0
- data/spec/fixtures/phone_number.rb +28 -0
- data/spec/fixtures/pirogue.rb +28 -0
- data/spec/fixtures/programming_language.rb +83 -0
- data/spec/fixtures/reservation.rb +38 -0
- data/spec/fixtures/scm_operation.rb +56 -0
- data/spec/fixtures/sms_message.rb +22 -0
- data/spec/fixtures/udp_packet.rb +49 -0
- data/spec/integration/absent_field_validator/absent_field_validator_spec.rb +90 -0
- data/spec/integration/absent_field_validator/spec_helper.rb +7 -0
- data/spec/integration/acceptance_validator/acceptance_validator_spec.rb +196 -0
- data/spec/integration/acceptance_validator/spec_helper.rb +7 -0
- data/spec/integration/automatic_validation/custom_messages_for_inferred_validation_spec.rb +57 -0
- data/spec/integration/automatic_validation/disabling_inferred_validation_spec.rb +49 -0
- data/spec/integration/automatic_validation/inferred_boolean_properties_validation_spec.rb +100 -0
- data/spec/integration/automatic_validation/inferred_float_property_validation_spec.rb +45 -0
- data/spec/integration/automatic_validation/inferred_format_validation_spec.rb +35 -0
- data/spec/integration/automatic_validation/inferred_integer_properties_validation_spec.rb +70 -0
- data/spec/integration/automatic_validation/inferred_length_validation_spec.rb +142 -0
- data/spec/integration/automatic_validation/inferred_presence_validation_spec.rb +45 -0
- data/spec/integration/automatic_validation/inferred_primitive_validation_spec.rb +22 -0
- data/spec/integration/automatic_validation/inferred_uniqueness_validation_spec.rb +48 -0
- data/spec/integration/automatic_validation/inferred_within_validation_spec.rb +35 -0
- data/spec/integration/automatic_validation/spec_helper.rb +57 -0
- data/spec/integration/block_validator/spec_helper.rb +5 -0
- data/spec/integration/conditional_validation/if_condition_spec.rb +63 -0
- data/spec/integration/conditional_validation/spec_helper.rb +5 -0
- data/spec/integration/confirmation_validator/confirmation_validator_spec.rb +76 -0
- data/spec/integration/confirmation_validator/spec_helper.rb +5 -0
- data/spec/integration/datamapper_models/association_validation_spec.rb +29 -0
- data/spec/integration/datamapper_models/inheritance_spec.rb +82 -0
- data/spec/integration/dirty_attributes/dirty_attributes_spec.rb +13 -0
- data/spec/integration/duplicated_validations/duplicated_validations_spec.rb +24 -0
- data/spec/integration/duplicated_validations/spec_helper.rb +5 -0
- data/spec/integration/format_validator/email_format_validator_spec.rb +139 -0
- data/spec/integration/format_validator/format_validator_spec.rb +64 -0
- data/spec/integration/format_validator/regexp_validator_spec.rb +33 -0
- data/spec/integration/format_validator/spec_helper.rb +5 -0
- data/spec/integration/format_validator/url_format_validator_spec.rb +91 -0
- data/spec/integration/length_validator/default_value_spec.rb +14 -0
- data/spec/integration/length_validator/equality_spec.rb +83 -0
- data/spec/integration/length_validator/error_message_spec.rb +22 -0
- data/spec/integration/length_validator/maximum_spec.rb +47 -0
- data/spec/integration/length_validator/minimum_spec.rb +54 -0
- data/spec/integration/length_validator/range_spec.rb +87 -0
- data/spec/integration/length_validator/spec_helper.rb +7 -0
- data/spec/integration/method_validator/method_validator_spec.rb +243 -0
- data/spec/integration/method_validator/spec_helper.rb +5 -0
- data/spec/integration/numeric_validator/equality_with_float_type_spec.rb +65 -0
- data/spec/integration/numeric_validator/equality_with_integer_type_spec.rb +41 -0
- data/spec/integration/numeric_validator/float_type_spec.rb +90 -0
- data/spec/integration/numeric_validator/gt_with_float_type_spec.rb +37 -0
- data/spec/integration/numeric_validator/gte_with_float_type_spec.rb +36 -0
- data/spec/integration/numeric_validator/integer_only_true_spec.rb +91 -0
- data/spec/integration/numeric_validator/integer_type_spec.rb +86 -0
- data/spec/integration/numeric_validator/lt_with_float_type_spec.rb +37 -0
- data/spec/integration/numeric_validator/lte_with_float_type_spec.rb +37 -0
- data/spec/integration/numeric_validator/spec_helper.rb +5 -0
- data/spec/integration/primitive_validator/primitive_validator_spec.rb +112 -0
- data/spec/integration/primitive_validator/spec_helper.rb +5 -0
- data/spec/integration/pure_ruby_objects/plain_old_ruby_object_validation_spec.rb +118 -0
- data/spec/integration/required_field_validator/association_spec.rb +69 -0
- data/spec/integration/required_field_validator/boolean_type_value_spec.rb +164 -0
- data/spec/integration/required_field_validator/date_type_value_spec.rb +127 -0
- data/spec/integration/required_field_validator/datetime_type_value_spec.rb +127 -0
- data/spec/integration/required_field_validator/float_type_value_spec.rb +131 -0
- data/spec/integration/required_field_validator/integer_type_value_spec.rb +99 -0
- data/spec/integration/required_field_validator/plain_old_ruby_object_spec.rb +35 -0
- data/spec/integration/required_field_validator/shared_examples.rb +27 -0
- data/spec/integration/required_field_validator/spec_helper.rb +7 -0
- data/spec/integration/required_field_validator/string_type_value_spec.rb +167 -0
- data/spec/integration/required_field_validator/text_type_value_spec.rb +49 -0
- data/spec/integration/shared/default_validation_context.rb +13 -0
- data/spec/integration/shared/valid_and_invalid_model.rb +35 -0
- data/spec/integration/uniqueness_validator/spec_helper.rb +5 -0
- data/spec/integration/uniqueness_validator/uniqueness_validator_spec.rb +116 -0
- data/spec/integration/within_validator/spec_helper.rb +5 -0
- data/spec/integration/within_validator/within_validator_spec.rb +168 -0
- data/spec/public/resource_spec.rb +113 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/unit/contextual_validators/emptiness_spec.rb +50 -0
- data/spec/unit/contextual_validators/execution_spec.rb +48 -0
- data/spec/unit/contextual_validators/spec_helper.rb +37 -0
- data/spec/unit/generic_validator/equality_operator_spec.rb +26 -0
- data/spec/unit/generic_validator/optional_spec.rb +54 -0
- data/spec/unit/validators/within_validator_spec.rb +23 -0
- data/spec/unit/violation_set/adding_spec.rb +54 -0
- data/spec/unit/violation_set/emptiness_spec.rb +38 -0
- data/spec/unit/violation_set/enumerable_spec.rb +32 -0
- data/spec/unit/violation_set/reading_spec.rb +35 -0
- data/spec/unit/violation_set/respond_to_spec.rb +15 -0
- data/tasks/spec.rake +21 -0
- data/tasks/yard.rake +9 -0
- data/tasks/yardstick.rake +19 -0
- metadata +245 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
module DataMapper
|
|
4
|
+
module Validation
|
|
5
|
+
module Fixtures
|
|
6
|
+
class BillOfLading
|
|
7
|
+
#
|
|
8
|
+
# Behaviors
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
include DataMapper::Resource
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Properties
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
property :id, Serial
|
|
18
|
+
|
|
19
|
+
property :doc_no, String, :auto_validation => false
|
|
20
|
+
property :email, String, :auto_validation => false
|
|
21
|
+
property :username, String, :auto_validation => false
|
|
22
|
+
property :url, String, :auto_validation => false
|
|
23
|
+
property :bank_url, URI, :auto_validation => false
|
|
24
|
+
property :code, String, :auto_validation => false, :default => "123456"
|
|
25
|
+
|
|
26
|
+
#
|
|
27
|
+
# Validations
|
|
28
|
+
#
|
|
29
|
+
|
|
30
|
+
# this is a trivial example
|
|
31
|
+
validates_format_of :doc_no, :with => lambda { |code|
|
|
32
|
+
code =~ /\AA\d{4}\z/ || code =~ /\A[B-Z]\d{6}X12\z/
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
validates_format_of :email, :as => :email_address
|
|
36
|
+
validates_format_of :url, :as => :url, :allow_nil => false, :allow_blank => false
|
|
37
|
+
|
|
38
|
+
validates_format_of :username, :with => /[a-z]/, :message => 'Username must have at least one letter', :allow_nil => true
|
|
39
|
+
validates_format_of :code, :with => /\d{5,6}/, :message => 'Code format is invalid'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
class SurrenderBillOfLading < BillOfLading
|
|
43
|
+
validates_format_of :bank_url, :as => :url, :allow_nil => false, :allow_blank => false
|
|
44
|
+
end
|
|
45
|
+
end # Fixtures
|
|
46
|
+
end # Validations
|
|
47
|
+
end # DataMapper
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module DataMapper
|
|
2
|
+
module Validation
|
|
3
|
+
module Fixtures
|
|
4
|
+
class BoatDock
|
|
5
|
+
#
|
|
6
|
+
# Behaviors
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
include DataMapper::Resource
|
|
10
|
+
|
|
11
|
+
#
|
|
12
|
+
# Properties
|
|
13
|
+
#
|
|
14
|
+
|
|
15
|
+
property :id, Serial
|
|
16
|
+
property :name, String, :auto_validation => false, :default => "I'm a long string"
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# Validations
|
|
20
|
+
#
|
|
21
|
+
|
|
22
|
+
validates_length_of :name, :min => 3
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
class City
|
|
4
|
+
#
|
|
5
|
+
# Behaviors
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
include DataMapper::Resource
|
|
9
|
+
|
|
10
|
+
#
|
|
11
|
+
# Properties
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
property :id, Serial
|
|
15
|
+
property :name, String
|
|
16
|
+
|
|
17
|
+
property :founded_in, Integer, :auto_validation => false
|
|
18
|
+
|
|
19
|
+
#
|
|
20
|
+
# Validations
|
|
21
|
+
#
|
|
22
|
+
|
|
23
|
+
validates_numericality_of :founded_in, :message => "Foundation year must be an integer"
|
|
24
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
module DataMapper
|
|
4
|
+
module Validation
|
|
5
|
+
module Fixtures
|
|
6
|
+
class Company
|
|
7
|
+
#
|
|
8
|
+
# Behaviors
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
include DataMapper::Resource
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Properties
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
property :id, Serial
|
|
18
|
+
property :title, String
|
|
19
|
+
property :type, Discriminator
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#
|
|
23
|
+
# Validations
|
|
24
|
+
#
|
|
25
|
+
|
|
26
|
+
validates_presence_of :title, :message => "Company name is a required field"
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
class ServiceCompany < Company
|
|
31
|
+
|
|
32
|
+
#
|
|
33
|
+
# Properties
|
|
34
|
+
#
|
|
35
|
+
|
|
36
|
+
without_auto_validations do
|
|
37
|
+
property :area_of_expertise, String, :length => (1..60)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
#
|
|
41
|
+
# Validations
|
|
42
|
+
#
|
|
43
|
+
|
|
44
|
+
validates_presence_of :area_of_expertise
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
class ProductCompany < Company
|
|
48
|
+
|
|
49
|
+
#
|
|
50
|
+
# Properties
|
|
51
|
+
#
|
|
52
|
+
|
|
53
|
+
without_auto_validations do
|
|
54
|
+
property :flagship_product, String, :length => (1..60)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
#
|
|
58
|
+
# Validations
|
|
59
|
+
#
|
|
60
|
+
|
|
61
|
+
validates_presence_of :title, :message => "Product company must have a name"
|
|
62
|
+
validates_presence_of :flagship_product
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
class Product
|
|
66
|
+
#
|
|
67
|
+
# Behaviors
|
|
68
|
+
#
|
|
69
|
+
|
|
70
|
+
include DataMapper::Resource
|
|
71
|
+
|
|
72
|
+
#
|
|
73
|
+
# Properties
|
|
74
|
+
#
|
|
75
|
+
|
|
76
|
+
property :id, Serial
|
|
77
|
+
property :name, String, :required => true
|
|
78
|
+
|
|
79
|
+
#
|
|
80
|
+
# Associations
|
|
81
|
+
#
|
|
82
|
+
|
|
83
|
+
belongs_to :company, :model => DataMapper::Validations::Fixtures::ProductCompany
|
|
84
|
+
|
|
85
|
+
#
|
|
86
|
+
# Validations
|
|
87
|
+
#
|
|
88
|
+
|
|
89
|
+
validates_presence_of :company
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
module DataMapper
|
|
4
|
+
module Validation
|
|
5
|
+
module Fixtures
|
|
6
|
+
class Organisation
|
|
7
|
+
include DataMapper::Resource
|
|
8
|
+
|
|
9
|
+
property :id, Serial
|
|
10
|
+
property :name, String
|
|
11
|
+
property :domain, String, :unique_index => true
|
|
12
|
+
|
|
13
|
+
validates_uniqueness_of :domain, :allow_nil => true
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class Department
|
|
17
|
+
include DataMapper::Resource
|
|
18
|
+
|
|
19
|
+
property :id, Serial
|
|
20
|
+
property :name, String, :unique_index => true
|
|
21
|
+
|
|
22
|
+
validates_uniqueness_of :name
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class User
|
|
26
|
+
include DataMapper::Resource
|
|
27
|
+
|
|
28
|
+
property :id, Serial
|
|
29
|
+
property :user_name, String
|
|
30
|
+
|
|
31
|
+
belongs_to :organisation
|
|
32
|
+
belongs_to :department
|
|
33
|
+
|
|
34
|
+
validates_uniqueness_of :user_name, :when => :signing_up_for_department_account, :scope => [:department]
|
|
35
|
+
validates_uniqueness_of :user_name, :when => :signing_up_for_organization_account, :scope => [:organisation]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
class Country
|
|
4
|
+
#
|
|
5
|
+
# Behaviors
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
include DataMapper::Resource
|
|
9
|
+
|
|
10
|
+
#
|
|
11
|
+
# Properties
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
property :id, Serial
|
|
15
|
+
property :name, String
|
|
16
|
+
|
|
17
|
+
property :area, Integer
|
|
18
|
+
|
|
19
|
+
#
|
|
20
|
+
# Validations
|
|
21
|
+
#
|
|
22
|
+
|
|
23
|
+
validates_numericality_of :area, :message => "Please use integers to specify area"
|
|
24
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
module DataMapper
|
|
2
|
+
module Validation
|
|
3
|
+
module Fixtures
|
|
4
|
+
|
|
5
|
+
# for pedants: we refer to DIX Ethernet here
|
|
6
|
+
class EthernetFrame
|
|
7
|
+
|
|
8
|
+
#
|
|
9
|
+
# Behaviors
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
include DataMapper::Resource
|
|
13
|
+
|
|
14
|
+
#
|
|
15
|
+
# Properties
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
attr_accessor :link_support_fragmentation
|
|
19
|
+
|
|
20
|
+
# we have to have a key in a DM resource
|
|
21
|
+
property :id, Serial
|
|
22
|
+
|
|
23
|
+
without_auto_validations do
|
|
24
|
+
property :destination_mac, String
|
|
25
|
+
property :source_mac, String
|
|
26
|
+
property :ether_type, String
|
|
27
|
+
property :payload, Text
|
|
28
|
+
property :crc, String
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
#
|
|
32
|
+
# Validations
|
|
33
|
+
#
|
|
34
|
+
|
|
35
|
+
validates_length_of :destination_mac, :source_mac, :equals => 6
|
|
36
|
+
validates_length_of :ether_type, :equals => 2
|
|
37
|
+
validates_length_of :payload, :min => 46, :max => 1500, :unless => :link_support_fragmentation
|
|
38
|
+
# :is is alias for :equal
|
|
39
|
+
validates_length_of :crc, :is => 4
|
|
40
|
+
|
|
41
|
+
def self.valid_instance
|
|
42
|
+
# these are obvisouly not bits, and not in hexadecimal
|
|
43
|
+
# format either, but give fixture models some slack
|
|
44
|
+
attributes = {
|
|
45
|
+
:destination_mac => "7b7d93",
|
|
46
|
+
:source_mac => "abe763",
|
|
47
|
+
:ether_type => "88",
|
|
48
|
+
:payload => "Imagine yourself a beautiful bag full of bits here",
|
|
49
|
+
:crc => "4132"
|
|
50
|
+
}
|
|
51
|
+
new(attributes)
|
|
52
|
+
end
|
|
53
|
+
end # EthernetFrame
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
module DataMapper
|
|
4
|
+
module Validation
|
|
5
|
+
module Fixtures
|
|
6
|
+
|
|
7
|
+
class Event
|
|
8
|
+
#
|
|
9
|
+
# Behaviors
|
|
10
|
+
#
|
|
11
|
+
|
|
12
|
+
include ::DataMapper::Resource
|
|
13
|
+
|
|
14
|
+
#
|
|
15
|
+
# Properties
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
property :id, Serial
|
|
19
|
+
property :name, String, :required => true
|
|
20
|
+
|
|
21
|
+
property :starts_at, DateTime
|
|
22
|
+
property :ends_at, DateTime
|
|
23
|
+
|
|
24
|
+
#
|
|
25
|
+
# Validations
|
|
26
|
+
#
|
|
27
|
+
|
|
28
|
+
validates_with_method :starts_at, :method => :ensure_dates_order_is_correct
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
# API
|
|
32
|
+
#
|
|
33
|
+
|
|
34
|
+
def ensure_dates_order_is_correct
|
|
35
|
+
if starts_at && ends_at && (starts_at <= ends_at)
|
|
36
|
+
true
|
|
37
|
+
else
|
|
38
|
+
[false, "Start time cannot be after end time"]
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end # Event
|
|
42
|
+
end # Fixtures
|
|
43
|
+
end # Validations
|
|
44
|
+
end # DataMapper
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
module DataMapper
|
|
4
|
+
module Validation
|
|
5
|
+
module Fixtures
|
|
6
|
+
class G3Concert
|
|
7
|
+
#
|
|
8
|
+
# Bahaviors
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
include ::DataMapper::Validations
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Attributes
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
attr_accessor :year, :participants, :city, :planned
|
|
18
|
+
|
|
19
|
+
#
|
|
20
|
+
# Validations
|
|
21
|
+
#
|
|
22
|
+
|
|
23
|
+
validates_with_block :participants, :unless => :planned do
|
|
24
|
+
if self.class.known_performances.any? { |perf| perf == self }
|
|
25
|
+
true
|
|
26
|
+
else
|
|
27
|
+
[false, "this G3 is probably yet to take place"]
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
#
|
|
32
|
+
# API
|
|
33
|
+
#
|
|
34
|
+
|
|
35
|
+
def initialize(attributes = {})
|
|
36
|
+
attributes.each do |key, value|
|
|
37
|
+
self.send("#{key}=", value)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def ==(other)
|
|
42
|
+
other.year == self.year && other.participants == self.participants && other.city == self.city
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# obvisouly this is intentionally shortened list ;)
|
|
46
|
+
def self.known_performances
|
|
47
|
+
[
|
|
48
|
+
new(:year => 2004, :participants => "Joe Satriani, Steve Vai, Yngwie Malmsteen", :city => "Denver"),
|
|
49
|
+
new(:year => 1996, :participants => "Joe Satriani, Steve Vai, Eric Johnson", :city => "San Francisco"),
|
|
50
|
+
new(:year => 2001, :participants => "Joe Satriani, Steve Vai, John Petrucci", :city => "Los Angeles"),
|
|
51
|
+
new(:year => 2002, :participants => "Joe Satriani, Steve Vai, John Petrucci", :city => "Los Angeles")
|
|
52
|
+
]
|
|
53
|
+
end
|
|
54
|
+
end # G3Concert
|
|
55
|
+
end # Fixtures
|
|
56
|
+
end # Validations
|
|
57
|
+
end # DataMapper
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Property to test dumped_as != loaded_as behaviour
|
|
2
|
+
module DataMapper
|
|
3
|
+
class Property
|
|
4
|
+
class IntegerDumpedAsStringProperty < DataMapper::Property::Object
|
|
5
|
+
load_as ::Integer
|
|
6
|
+
dump_as ::String
|
|
7
|
+
|
|
8
|
+
accept_options :length
|
|
9
|
+
|
|
10
|
+
DEFAULT_LENGTH = 50
|
|
11
|
+
length(DEFAULT_LENGTH)
|
|
12
|
+
|
|
13
|
+
attr_reader :length
|
|
14
|
+
|
|
15
|
+
def dump(value)
|
|
16
|
+
value.nil? ? nil : value.to_s
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def load(value)
|
|
20
|
+
value.nil? ? nil : value.to_i
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module DataMapper
|
|
2
|
+
module Validation
|
|
3
|
+
module Fixtures
|
|
4
|
+
|
|
5
|
+
class Jabberwock
|
|
6
|
+
#
|
|
7
|
+
# Behaviors
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
include DataMapper::Resource
|
|
11
|
+
|
|
12
|
+
#
|
|
13
|
+
# Properties
|
|
14
|
+
#
|
|
15
|
+
|
|
16
|
+
property :id, Serial
|
|
17
|
+
property :snickersnack, String
|
|
18
|
+
|
|
19
|
+
#
|
|
20
|
+
# Validations
|
|
21
|
+
#
|
|
22
|
+
|
|
23
|
+
validates_length_of :snickersnack, :within => 3..40, :message => "worble warble"
|
|
24
|
+
end # Jabberwock
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
module DataMapper
|
|
4
|
+
module Validation
|
|
5
|
+
module Fixtures
|
|
6
|
+
class Kayak
|
|
7
|
+
#
|
|
8
|
+
# Behaviors
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
include ::DataMapper::Resource
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Properties
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
property :id, Serial
|
|
18
|
+
property :salesman, String, :auto_validation => false
|
|
19
|
+
|
|
20
|
+
#
|
|
21
|
+
# Validations
|
|
22
|
+
#
|
|
23
|
+
|
|
24
|
+
validates_absence_of :salesman, :on => :sale
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
module DataMapper
|
|
4
|
+
module Validation
|
|
5
|
+
module Fixtures
|
|
6
|
+
class LerneanHydra
|
|
7
|
+
#
|
|
8
|
+
# Behaviors
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
include DataMapper::Resource
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Properties
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
property :id, Serial
|
|
18
|
+
|
|
19
|
+
without_auto_validations do
|
|
20
|
+
property :head_count, Float
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
#
|
|
24
|
+
# Validations
|
|
25
|
+
#
|
|
26
|
+
|
|
27
|
+
validates_numericality_of :head_count, :eq => 9, :message => "Lernean hydra is said to have exactly 9 heads"
|
|
28
|
+
|
|
29
|
+
def self.valid_instance(overrides = {})
|
|
30
|
+
defaults = {
|
|
31
|
+
:head_count => 9
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
new(defaults.merge(overrides))
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end # Fixtures
|
|
38
|
+
end # Validations
|
|
39
|
+
end # DataMapper
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module DataMapper
|
|
2
|
+
module Validations
|
|
3
|
+
module Fixtures
|
|
4
|
+
class LlamaSpaceship
|
|
5
|
+
include DataMapper::Resource
|
|
6
|
+
|
|
7
|
+
property :id, Serial
|
|
8
|
+
property :type, String
|
|
9
|
+
property :color, String
|
|
10
|
+
|
|
11
|
+
validates_format_of :color, :with => /^red|black$/, :if => Proc.new { |spaceship| spaceship.type == "standard" }
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
module DataMapper
|
|
4
|
+
module Validation
|
|
5
|
+
module Fixtures
|
|
6
|
+
class MathematicalFunction
|
|
7
|
+
#
|
|
8
|
+
# Behaviors
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
include ::DataMapper::Resource
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Properties
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
property :id, Serial
|
|
18
|
+
property :input, Float, :auto_validation => false
|
|
19
|
+
property :output, Float, :auto_validation => false
|
|
20
|
+
|
|
21
|
+
#
|
|
22
|
+
# Validations
|
|
23
|
+
#
|
|
24
|
+
|
|
25
|
+
# function domain
|
|
26
|
+
# don't ask me what function that is
|
|
27
|
+
validates_within :input, :set => (1..n)
|
|
28
|
+
|
|
29
|
+
# function range
|
|
30
|
+
validates_within :output, :set => (-n..0), :message => "Negative values or zero only, please"
|
|
31
|
+
end # MathematicalFunction
|
|
32
|
+
end # Fixtures
|
|
33
|
+
end # Validations
|
|
34
|
+
end # DataMapper
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
require File.join(File.dirname(__FILE__),'integer_dumped_as_string_property')
|
|
4
|
+
|
|
5
|
+
module DataMapper
|
|
6
|
+
module Validation
|
|
7
|
+
module Fixtures
|
|
8
|
+
class MemoryObject
|
|
9
|
+
#
|
|
10
|
+
# Behaviors
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
include ::DataMapper::Resource
|
|
14
|
+
|
|
15
|
+
#
|
|
16
|
+
# Properties
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
property :id, Serial
|
|
20
|
+
property :marked, Boolean, :auto_validation => false
|
|
21
|
+
property :color, String, :auto_validation => false
|
|
22
|
+
|
|
23
|
+
property :stupid_integer, IntegerDumpedAsStringProperty, :auto_validation => false
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Validations
|
|
27
|
+
#
|
|
28
|
+
|
|
29
|
+
validates_primitive_type_of :marked
|
|
30
|
+
validates_primitive_type_of :color
|
|
31
|
+
validates_primitive_type_of :stupid_integer
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module DataMapper
|
|
2
|
+
module Validation
|
|
3
|
+
module Fixtures
|
|
4
|
+
# Mittelschauzer is a type of dog. The More You Know.
|
|
5
|
+
class Mittelschnauzer
|
|
6
|
+
|
|
7
|
+
#
|
|
8
|
+
# Behaviors
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
include DataMapper::Resource
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Properties
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
without_auto_validations do
|
|
18
|
+
property :name, String, :key => true
|
|
19
|
+
property :height, Float
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attr_accessor :owner
|
|
23
|
+
|
|
24
|
+
#
|
|
25
|
+
# Validations
|
|
26
|
+
#
|
|
27
|
+
|
|
28
|
+
validates_length_of :name, :min => 2, :allow_nil => false
|
|
29
|
+
validates_length_of :owner, :min => 2
|
|
30
|
+
|
|
31
|
+
validates_numericality_of :height, :lt => 55.2
|
|
32
|
+
|
|
33
|
+
def self.valid_instance
|
|
34
|
+
new(:name => "Roudolf Wilde", :height => 50.4, :owner => 'don')
|
|
35
|
+
end
|
|
36
|
+
end # Mittelschnauzer
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module DataMapper
|
|
2
|
+
module Validation
|
|
3
|
+
module Fixtures
|
|
4
|
+
|
|
5
|
+
class MotorLaunch
|
|
6
|
+
#
|
|
7
|
+
# Behaviors
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
include DataMapper::Resource
|
|
11
|
+
|
|
12
|
+
#
|
|
13
|
+
# Properties
|
|
14
|
+
#
|
|
15
|
+
|
|
16
|
+
property :id, Serial
|
|
17
|
+
property :name, String, :auto_validation => false
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|