ardm-validations 1.2.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.
- checksums.yaml +7 -0
- data/.gitignore +35 -0
- data/.travis.yml +11 -0
- data/Gemfile +51 -0
- data/LICENSE +21 -0
- data/README.rdoc +122 -0
- data/Rakefile +4 -0
- data/ardm-validations.gemspec +28 -0
- data/lib/ardm-validations.rb +1 -0
- data/lib/dm-validations.rb +169 -0
- data/lib/dm-validations/auto_validate.rb +252 -0
- data/lib/dm-validations/context.rb +66 -0
- data/lib/dm-validations/contextual_validators.rb +220 -0
- data/lib/dm-validations/exceptions.rb +5 -0
- data/lib/dm-validations/formats/email.rb +65 -0
- data/lib/dm-validations/formats/url.rb +27 -0
- data/lib/dm-validations/support/object.rb +18 -0
- data/lib/dm-validations/support/ordered_hash.rb +434 -0
- data/lib/dm-validations/validation_errors.rb +137 -0
- data/lib/dm-validations/validators/absent_field_validator.rb +58 -0
- data/lib/dm-validations/validators/acceptance_validator.rb +79 -0
- data/lib/dm-validations/validators/block_validator.rb +61 -0
- data/lib/dm-validations/validators/confirmation_validator.rb +92 -0
- data/lib/dm-validations/validators/format_validator.rb +124 -0
- data/lib/dm-validations/validators/generic_validator.rb +184 -0
- data/lib/dm-validations/validators/length_validator.rb +249 -0
- data/lib/dm-validations/validators/method_validator.rb +64 -0
- data/lib/dm-validations/validators/numeric_validator.rb +182 -0
- data/lib/dm-validations/validators/primitive_validator.rb +58 -0
- data/lib/dm-validations/validators/required_field_validator.rb +83 -0
- data/lib/dm-validations/validators/uniqueness_validator.rb +67 -0
- data/lib/dm-validations/validators/within_validator.rb +74 -0
- data/lib/dm-validations/version.rb +5 -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/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 +30 -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 +52 -0
- data/spec/integration/automatic_validation/inferred_within_validation_spec.rb +39 -0
- data/spec/integration/automatic_validation/spec_helper.rb +57 -0
- data/spec/integration/block_validator/block_validator_spec.rb +32 -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 +93 -0
- data/spec/integration/length_validator/default_value_spec.rb +14 -0
- data/spec/integration/length_validator/equality_spec.rb +87 -0
- data/spec/integration/length_validator/error_message_spec.rb +22 -0
- data/spec/integration/length_validator/maximum_spec.rb +49 -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 +241 -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 +37 -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 +92 -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 +72 -0
- data/spec/integration/required_field_validator/boolean_type_value_spec.rb +155 -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 +26 -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 +105 -0
- data/spec/rcov.opts +6 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +29 -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/validation_errors/adding_spec.rb +54 -0
- data/spec/unit/validation_errors/emptiness_spec.rb +38 -0
- data/spec/unit/validation_errors/enumerable_spec.rb +32 -0
- data/spec/unit/validation_errors/reading_spec.rb +35 -0
- data/spec/unit/validation_errors/respond_to_spec.rb +15 -0
- data/spec/unit/validators/within_validator_spec.rb +23 -0
- data/tasks/spec.rake +38 -0
- data/tasks/yard.rake +9 -0
- data/tasks/yardstick.rake +19 -0
- metadata +256 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/required_field_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'required_field_validator/date_type_value_spec' do
|
|
5
|
+
|
|
6
|
+
class Holiday
|
|
7
|
+
#
|
|
8
|
+
# Behaviors
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
include DataMapper::Resource
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Properties
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
property :id, Serial
|
|
18
|
+
property :on, Date, :auto_validation => false
|
|
19
|
+
|
|
20
|
+
#
|
|
21
|
+
# Validations
|
|
22
|
+
#
|
|
23
|
+
|
|
24
|
+
validates_presence_of :on
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe 'Holiday' do
|
|
28
|
+
before :all do
|
|
29
|
+
Holiday.auto_migrate!
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
before do
|
|
33
|
+
@ny09 = Holiday.new(:on => Date.new(2008, 12, 31))
|
|
34
|
+
@ny09.should be_valid
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
describe "with on = nil" do
|
|
39
|
+
before do
|
|
40
|
+
@ny09.on = nil
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "is NOT valid" do
|
|
44
|
+
# nil = missing for Date value
|
|
45
|
+
# and Holiday only has default validation context
|
|
46
|
+
@ny09.should_not be_valid
|
|
47
|
+
|
|
48
|
+
# sanity check
|
|
49
|
+
@ny09.on = Date.new(2008, 12, 31)
|
|
50
|
+
@ny09.should be_valid
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
describe "with on = valid date" do
|
|
56
|
+
before do
|
|
57
|
+
@ny09.on = 0.0
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "IS valid" do
|
|
61
|
+
# yes, presence validator does not care
|
|
62
|
+
@ny09.should be_valid
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
describe "with on = 0" do
|
|
69
|
+
before do
|
|
70
|
+
@ny09.on = 0
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "IS valid" do
|
|
74
|
+
# yes, presence validator does not care
|
|
75
|
+
@ny09.should be_valid
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
describe "with on = 100" do
|
|
82
|
+
before do
|
|
83
|
+
@ny09.on = 100
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "IS valid" do
|
|
87
|
+
@ny09.should be_valid
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
describe "with on = 100.0" do
|
|
93
|
+
before do
|
|
94
|
+
@ny09.on = 100.0
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "IS valid" do
|
|
98
|
+
@ny09.should be_valid
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
describe "with on = -1100" do
|
|
104
|
+
before do
|
|
105
|
+
# presence validator does not care
|
|
106
|
+
@ny09.on = -1100
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "IS valid" do
|
|
110
|
+
@ny09.should be_valid
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
describe "with on = -1100.5" do
|
|
116
|
+
before do
|
|
117
|
+
# presence validator does not care
|
|
118
|
+
@ny09.on = -1100.5
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "IS valid" do
|
|
122
|
+
@ny09.should be_valid
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
end
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/required_field_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'required_field_validator/datetime_type_value_spec' do
|
|
5
|
+
|
|
6
|
+
class ScheduledOperation
|
|
7
|
+
#
|
|
8
|
+
# Behaviors
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
include DataMapper::Resource
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Properties
|
|
15
|
+
#
|
|
16
|
+
|
|
17
|
+
property :id, Serial
|
|
18
|
+
property :at, DateTime, :auto_validation => false
|
|
19
|
+
|
|
20
|
+
#
|
|
21
|
+
# Validations
|
|
22
|
+
#
|
|
23
|
+
|
|
24
|
+
validates_presence_of :at
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe 'ScheduledOperation' do
|
|
28
|
+
before :all do
|
|
29
|
+
ScheduledOperation.auto_migrate!
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
before do
|
|
33
|
+
@operation = ScheduledOperation.new(:at => DateTime.civil(2008, 06, 07, 15, 00, 00))
|
|
34
|
+
@operation.should be_valid
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
describe "with on = nil" do
|
|
39
|
+
before do
|
|
40
|
+
@operation.at = nil
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "is NOT valid" do
|
|
44
|
+
# nil = missing for Date value
|
|
45
|
+
# and ScheduledOperation only has default validation context
|
|
46
|
+
@operation.should_not be_valid
|
|
47
|
+
|
|
48
|
+
# sanity check
|
|
49
|
+
@operation.at = Date.new(2008, 12, 31)
|
|
50
|
+
@operation.should be_valid
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
describe "with on = valid date" do
|
|
56
|
+
before do
|
|
57
|
+
@operation.at = 0.0
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "IS valid" do
|
|
61
|
+
# yes, presence validator does not care
|
|
62
|
+
@operation.should be_valid
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
describe "with on = 0" do
|
|
69
|
+
before do
|
|
70
|
+
@operation.at = 0
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "IS valid" do
|
|
74
|
+
# yes, presence validator does not care
|
|
75
|
+
@operation.should be_valid
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
describe "with on = 100" do
|
|
82
|
+
before do
|
|
83
|
+
@operation.at = 100
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "IS valid" do
|
|
87
|
+
@operation.should be_valid
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
describe "with on = 100.0" do
|
|
93
|
+
before do
|
|
94
|
+
@operation.at = 100.0
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "IS valid" do
|
|
98
|
+
@operation.should be_valid
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
describe "with on = -1100" do
|
|
104
|
+
before do
|
|
105
|
+
# presence validator does not care
|
|
106
|
+
@operation.at = -1100
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "IS valid" do
|
|
110
|
+
@operation.should be_valid
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
describe "with on = -1100.5" do
|
|
116
|
+
before do
|
|
117
|
+
# presence validator does not care
|
|
118
|
+
@operation.at = -1100.5
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "IS valid" do
|
|
122
|
+
@operation.should be_valid
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/required_field_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'required_field_validator/float_type_value_spec' do
|
|
5
|
+
|
|
6
|
+
#
|
|
7
|
+
# Especially stupid example since Hg adds local repository revision
|
|
8
|
+
# to each new commit, but lets roll on with this SCM-ish classes and
|
|
9
|
+
# still show how Integer type values are validated for presence
|
|
10
|
+
#
|
|
11
|
+
class CpuConsumption
|
|
12
|
+
#
|
|
13
|
+
# Behaviors
|
|
14
|
+
#
|
|
15
|
+
|
|
16
|
+
include DataMapper::Resource
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# Properties
|
|
20
|
+
#
|
|
21
|
+
|
|
22
|
+
property :id, Serial
|
|
23
|
+
property :percent, Float, :auto_validation => false
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Validations
|
|
27
|
+
#
|
|
28
|
+
|
|
29
|
+
validates_presence_of :percent
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe 'CpuConsumption' do
|
|
33
|
+
before :all do
|
|
34
|
+
CpuConsumption.auto_migrate!
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
before do
|
|
38
|
+
@metric = CpuConsumption.new(:percent => 20.0)
|
|
39
|
+
@metric.should be_valid
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe "with percentage = 0.0" do
|
|
43
|
+
before do
|
|
44
|
+
@metric.percent = 0.0
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "IS valid" do
|
|
48
|
+
# yes, presence validator does not care
|
|
49
|
+
@metric.should be_valid
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
describe "with percentage = 0" do
|
|
56
|
+
before do
|
|
57
|
+
@metric.percent = 0
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "IS valid" do
|
|
61
|
+
# yes, presence validator does not care
|
|
62
|
+
@metric.should be_valid
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
describe "with percentage = 100" do
|
|
69
|
+
before do
|
|
70
|
+
@metric.percent = 100
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "IS valid" do
|
|
74
|
+
@metric.should be_valid
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
describe "with percentage = 100.0" do
|
|
80
|
+
before do
|
|
81
|
+
@metric.percent = 100.0
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "IS valid" do
|
|
85
|
+
@metric.should be_valid
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
describe "with percentage = -1100" do
|
|
91
|
+
before do
|
|
92
|
+
# presence validator does not care
|
|
93
|
+
@metric.percent = -1100
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "IS valid" do
|
|
97
|
+
@metric.should be_valid
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
describe "with percentage = -1100.5" do
|
|
103
|
+
before do
|
|
104
|
+
# presence validator does not care
|
|
105
|
+
@metric.percent = -1100.5
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "IS valid" do
|
|
109
|
+
@metric.should be_valid
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
describe "with percentage = nil" do
|
|
115
|
+
before do
|
|
116
|
+
@metric.percent = nil
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it "is NOT valid" do
|
|
120
|
+
# nil = missing for float value
|
|
121
|
+
# and CpuConsumption only has default validation context
|
|
122
|
+
@metric.should_not be_valid
|
|
123
|
+
|
|
124
|
+
# sanity check
|
|
125
|
+
@metric.percent = 100
|
|
126
|
+
@metric.should be_valid
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/required_field_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'required_field_validator/integer_type_value_spec' do
|
|
5
|
+
|
|
6
|
+
#
|
|
7
|
+
# Especially stupid example since Hg adds local repository revision
|
|
8
|
+
# to each new commit, but lets roll on with this SCM-ish classes and
|
|
9
|
+
# still show how Integer type values are validated for presence
|
|
10
|
+
#
|
|
11
|
+
class HgCommit < ScmOperation
|
|
12
|
+
#
|
|
13
|
+
# Properties
|
|
14
|
+
#
|
|
15
|
+
|
|
16
|
+
property :local_repo_revision_num, Integer, :auto_validation => false
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# Validations
|
|
20
|
+
#
|
|
21
|
+
|
|
22
|
+
validates_presence_of :local_repo_revision_num
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe 'HgCommit' do
|
|
26
|
+
before :all do
|
|
27
|
+
HgCommit.auto_migrate!
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
before do
|
|
31
|
+
@operation = HgCommit.new(:local_repo_revision_num => 90, :name => "ci")
|
|
32
|
+
@operation.should be_valid
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "with local revision number = 0" do
|
|
36
|
+
before do
|
|
37
|
+
@operation.local_repo_revision_num = 0
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "IS valid" do
|
|
41
|
+
# yes, presence validator does not care
|
|
42
|
+
@operation.should be_valid
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
describe "with local revision number = 100" do
|
|
49
|
+
before do
|
|
50
|
+
@operation.local_repo_revision_num = 100
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "IS valid" do
|
|
54
|
+
@operation.should be_valid
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
describe "with local revision number = 100.0 (float!)" do
|
|
60
|
+
before do
|
|
61
|
+
@operation.local_repo_revision_num = 100.0
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "IS valid" do
|
|
65
|
+
@operation.should be_valid
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
describe "with local revision number = -1100" do
|
|
71
|
+
before do
|
|
72
|
+
# presence validator does not care
|
|
73
|
+
@operation.local_repo_revision_num = -1100
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "IS valid" do
|
|
77
|
+
@operation.should be_valid
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
describe "with local revision number = nil" do
|
|
83
|
+
before do
|
|
84
|
+
@operation.local_repo_revision_num = nil
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "is NOT valid" do
|
|
88
|
+
# nil = missing for integer value
|
|
89
|
+
# and HgCommit only has default validation context
|
|
90
|
+
@operation.should_not be_valid
|
|
91
|
+
|
|
92
|
+
# sanity check
|
|
93
|
+
@operation.local_repo_revision_num = 100
|
|
94
|
+
@operation.should be_valid
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
end
|