aequitas 0.0.1
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.
- data/.gitignore +4 -0
- data/.rvmrc +1 -0
- data/Gemfile +6 -0
- data/LICENSE +21 -0
- data/README.rdoc +125 -0
- data/Rakefile +25 -0
- data/VERSION +1 -0
- data/aequitas.gemspec +20 -0
- data/lib/aequitas.rb +80 -0
- data/lib/aequitas/class_methods.rb +26 -0
- data/lib/aequitas/context.rb +53 -0
- data/lib/aequitas/contextual_rule_set.rb +221 -0
- data/lib/aequitas/exceptions.rb +10 -0
- data/lib/aequitas/macros.rb +466 -0
- data/lib/aequitas/message_transformer.rb +127 -0
- data/lib/aequitas/rule.rb +153 -0
- data/lib/aequitas/rule/absence.rb +14 -0
- data/lib/aequitas/rule/absence/blank.rb +21 -0
- data/lib/aequitas/rule/absence/nil.rb +21 -0
- data/lib/aequitas/rule/acceptance.rb +36 -0
- data/lib/aequitas/rule/block.rb +33 -0
- data/lib/aequitas/rule/confirmation.rb +41 -0
- data/lib/aequitas/rule/format.rb +81 -0
- data/lib/aequitas/rule/format/proc.rb +28 -0
- data/lib/aequitas/rule/format/regexp.rb +44 -0
- data/lib/aequitas/rule/formats/email.rb +52 -0
- data/lib/aequitas/rule/formats/url.rb +14 -0
- data/lib/aequitas/rule/guard.rb +51 -0
- data/lib/aequitas/rule/length.rb +87 -0
- data/lib/aequitas/rule/length/equal.rb +46 -0
- data/lib/aequitas/rule/length/maximum.rb +46 -0
- data/lib/aequitas/rule/length/minimum.rb +46 -0
- data/lib/aequitas/rule/length/range.rb +46 -0
- data/lib/aequitas/rule/method.rb +31 -0
- data/lib/aequitas/rule/numericalness.rb +85 -0
- data/lib/aequitas/rule/numericalness/equal.rb +30 -0
- data/lib/aequitas/rule/numericalness/greater_than.rb +30 -0
- data/lib/aequitas/rule/numericalness/greater_than_or_equal.rb +30 -0
- data/lib/aequitas/rule/numericalness/integer.rb +37 -0
- data/lib/aequitas/rule/numericalness/less_than.rb +30 -0
- data/lib/aequitas/rule/numericalness/less_than_or_equal.rb +30 -0
- data/lib/aequitas/rule/numericalness/non_integer.rb +64 -0
- data/lib/aequitas/rule/numericalness/not_equal.rb +30 -0
- data/lib/aequitas/rule/presence.rb +14 -0
- data/lib/aequitas/rule/presence/not_blank.rb +21 -0
- data/lib/aequitas/rule/presence/not_nil.rb +21 -0
- data/lib/aequitas/rule/primitive_type.rb +28 -0
- data/lib/aequitas/rule/skip_condition.rb +104 -0
- data/lib/aequitas/rule/within.rb +28 -0
- data/lib/aequitas/rule/within/range.rb +53 -0
- data/lib/aequitas/rule/within/range/bounded.rb +25 -0
- data/lib/aequitas/rule/within/range/unbounded_begin.rb +25 -0
- data/lib/aequitas/rule/within/range/unbounded_end.rb +25 -0
- data/lib/aequitas/rule/within/set.rb +39 -0
- data/lib/aequitas/rule_set.rb +80 -0
- data/lib/aequitas/support/blank.rb +22 -0
- data/lib/aequitas/support/equalizable.rb +113 -0
- data/lib/aequitas/support/ordered_hash.rb +438 -0
- data/lib/aequitas/version.rb +5 -0
- data/lib/aequitas/violation.rb +116 -0
- data/lib/aequitas/violation_set.rb +123 -0
- data/lib/aequitas/virtus.rb +29 -0
- data/lib/aequitas/virtus/inline_attribute_rule_extractor.rb +41 -0
- data/lib/aequitas/virtus/inline_attribute_rule_extractor/boolean.rb +17 -0
- data/lib/aequitas/virtus/inline_attribute_rule_extractor/object.rb +25 -0
- data/lib/aequitas/virtus/inline_attribute_rule_extractor/string.rb +27 -0
- data/spec/integration/aequitas/macros/validates_absence_of_spec.rb +19 -0
- data/spec/integration/aequitas/macros/validates_acceptance_of_spec.rb +19 -0
- data/spec/integration/aequitas/macros/validates_confirmation_of_spec.rb +25 -0
- data/spec/integration/aequitas/macros/validates_format_of_spec.rb +87 -0
- data/spec/integration/aequitas/macros/validates_length_of.rb +77 -0
- data/spec/integration/aequitas/macros/validates_numericalness_of_spec.rb +221 -0
- data/spec/integration/aequitas/macros/validates_presence_of_spec.rb +19 -0
- data/spec/integration/aequitas/macros/validates_with_block.rb +23 -0
- data/spec/integration/aequitas/macros/validates_with_method.rb +19 -0
- data/spec/integration/aequitas/macros/validates_within.rb +87 -0
- data/spec/integration/shared/macros/integration_spec.rb +67 -0
- data/spec/integration/virtus/boolean/presence_spec.rb +49 -0
- data/spec/integration/virtus/string/format/email_address_spec.rb +55 -0
- data/spec/integration/virtus/string/format/regexp_spec.rb +55 -0
- data/spec/integration/virtus/string/format/url_spec.rb +55 -0
- data/spec/integration/virtus/string/length/equal_spec.rb +49 -0
- data/spec/integration/virtus/string/length/range_spec.rb +49 -0
- data/spec/integration/virtus/string/presence_spec.rb +49 -0
- data/spec/rcov.opts +6 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/suite.rb +5 -0
- data/spec/unit/aequitas/rule/absence/blank_spec.rb +45 -0
- data/spec/unit/aequitas/rule/acceptance_spec.rb +71 -0
- data/spec/unit/aequitas/rule/confirmation_spec.rb +80 -0
- data/spec/unit/aequitas/rule/guard_spec.rb +120 -0
- data/spec/unit/aequitas/rule/skip_condition_spec.rb +170 -0
- data/spec/unit/aequitas/rule_spec.rb +40 -0
- data/spec/unit/aequitas/support/blank_spec.rb +83 -0
- data/spec/unit/aequitas/support/equalizable/equalizer_spec.rb +21 -0
- data/spec/unit/aequitas/support/equalizable_spec.rb +67 -0
- data/spec/unit/aequitas/violation_set_spec.rb +154 -0
- data/spec_legacy/fixtures/barcode.rb +40 -0
- data/spec_legacy/fixtures/basketball_court.rb +58 -0
- data/spec_legacy/fixtures/basketball_player.rb +34 -0
- data/spec_legacy/fixtures/beta_tester_account.rb +33 -0
- data/spec_legacy/fixtures/bill_of_landing.rb +47 -0
- data/spec_legacy/fixtures/boat_dock.rb +26 -0
- data/spec_legacy/fixtures/city.rb +24 -0
- data/spec_legacy/fixtures/company.rb +93 -0
- data/spec_legacy/fixtures/corporate_world.rb +39 -0
- data/spec_legacy/fixtures/country.rb +24 -0
- data/spec_legacy/fixtures/ethernet_frame.rb +56 -0
- data/spec_legacy/fixtures/event.rb +44 -0
- data/spec_legacy/fixtures/g3_concert.rb +57 -0
- data/spec_legacy/fixtures/jabberwock.rb +27 -0
- data/spec_legacy/fixtures/kayak.rb +28 -0
- data/spec_legacy/fixtures/lernean_hydra.rb +39 -0
- data/spec_legacy/fixtures/llama_spaceship.rb +15 -0
- data/spec_legacy/fixtures/mathematical_function.rb +34 -0
- data/spec_legacy/fixtures/memory_object.rb +30 -0
- data/spec_legacy/fixtures/mittelschnauzer.rb +39 -0
- data/spec_legacy/fixtures/motor_launch.rb +21 -0
- data/spec_legacy/fixtures/multibyte.rb +16 -0
- data/spec_legacy/fixtures/page.rb +32 -0
- data/spec_legacy/fixtures/phone_number.rb +28 -0
- data/spec_legacy/fixtures/pirogue.rb +28 -0
- data/spec_legacy/fixtures/programming_language.rb +83 -0
- data/spec_legacy/fixtures/reservation.rb +38 -0
- data/spec_legacy/fixtures/scm_operation.rb +56 -0
- data/spec_legacy/fixtures/sms_message.rb +22 -0
- data/spec_legacy/fixtures/udp_packet.rb +49 -0
- data/spec_legacy/integration/absent_field_validator/absent_field_validator_spec.rb +90 -0
- data/spec_legacy/integration/absent_field_validator/spec_helper.rb +7 -0
- data/spec_legacy/integration/acceptance_validator/acceptance_validator_spec.rb +196 -0
- data/spec_legacy/integration/acceptance_validator/spec_helper.rb +7 -0
- data/spec_legacy/integration/automatic_validation/custom_messages_for_inferred_validation_spec.rb +57 -0
- data/spec_legacy/integration/automatic_validation/disabling_inferred_validation_spec.rb +49 -0
- data/spec_legacy/integration/automatic_validation/inferred_boolean_properties_validation_spec.rb +100 -0
- data/spec_legacy/integration/automatic_validation/inferred_float_property_validation_spec.rb +45 -0
- data/spec_legacy/integration/automatic_validation/inferred_format_validation_spec.rb +35 -0
- data/spec_legacy/integration/automatic_validation/inferred_integer_properties_validation_spec.rb +70 -0
- data/spec_legacy/integration/automatic_validation/inferred_length_validation_spec.rb +142 -0
- data/spec_legacy/integration/automatic_validation/inferred_presence_validation_spec.rb +45 -0
- data/spec_legacy/integration/automatic_validation/inferred_primitive_validation_spec.rb +22 -0
- data/spec_legacy/integration/automatic_validation/inferred_uniqueness_validation_spec.rb +48 -0
- data/spec_legacy/integration/automatic_validation/inferred_within_validation_spec.rb +35 -0
- data/spec_legacy/integration/automatic_validation/spec_helper.rb +57 -0
- data/spec_legacy/integration/block_validator/block_validator_spec.rb +32 -0
- data/spec_legacy/integration/block_validator/spec_helper.rb +5 -0
- data/spec_legacy/integration/conditional_validation/if_condition_spec.rb +63 -0
- data/spec_legacy/integration/conditional_validation/spec_helper.rb +5 -0
- data/spec_legacy/integration/confirmation_validator/confirmation_validator_spec.rb +76 -0
- data/spec_legacy/integration/confirmation_validator/spec_helper.rb +5 -0
- data/spec_legacy/integration/datamapper_models/association_validation_spec.rb +29 -0
- data/spec_legacy/integration/datamapper_models/inheritance_spec.rb +82 -0
- data/spec_legacy/integration/dirty_attributes/dirty_attributes_spec.rb +13 -0
- data/spec_legacy/integration/duplicated_validations/duplicated_validations_spec.rb +24 -0
- data/spec_legacy/integration/duplicated_validations/spec_helper.rb +5 -0
- data/spec_legacy/integration/format_validator/email_format_validator_spec.rb +139 -0
- data/spec_legacy/integration/format_validator/format_validator_spec.rb +64 -0
- data/spec_legacy/integration/format_validator/regexp_validator_spec.rb +33 -0
- data/spec_legacy/integration/format_validator/spec_helper.rb +5 -0
- data/spec_legacy/integration/format_validator/url_format_validator_spec.rb +93 -0
- data/spec_legacy/integration/length_validator/default_value_spec.rb +14 -0
- data/spec_legacy/integration/length_validator/equality_spec.rb +87 -0
- data/spec_legacy/integration/length_validator/error_message_spec.rb +22 -0
- data/spec_legacy/integration/length_validator/maximum_spec.rb +49 -0
- data/spec_legacy/integration/length_validator/minimum_spec.rb +54 -0
- data/spec_legacy/integration/length_validator/range_spec.rb +87 -0
- data/spec_legacy/integration/length_validator/spec_helper.rb +7 -0
- data/spec_legacy/integration/method_validator/method_validator_spec.rb +242 -0
- data/spec_legacy/integration/method_validator/spec_helper.rb +5 -0
- data/spec_legacy/integration/numeric_validator/equality_with_float_type_spec.rb +65 -0
- data/spec_legacy/integration/numeric_validator/equality_with_integer_type_spec.rb +41 -0
- data/spec_legacy/integration/numeric_validator/float_type_spec.rb +90 -0
- data/spec_legacy/integration/numeric_validator/gt_with_float_type_spec.rb +37 -0
- data/spec_legacy/integration/numeric_validator/gte_with_float_type_spec.rb +37 -0
- data/spec_legacy/integration/numeric_validator/integer_only_true_spec.rb +91 -0
- data/spec_legacy/integration/numeric_validator/integer_type_spec.rb +86 -0
- data/spec_legacy/integration/numeric_validator/lt_with_float_type_spec.rb +37 -0
- data/spec_legacy/integration/numeric_validator/lte_with_float_type_spec.rb +37 -0
- data/spec_legacy/integration/numeric_validator/spec_helper.rb +5 -0
- data/spec_legacy/integration/primitive_validator/primitive_validator_spec.rb +92 -0
- data/spec_legacy/integration/primitive_validator/spec_helper.rb +5 -0
- data/spec_legacy/integration/pure_ruby_objects/plain_old_ruby_object_validation_spec.rb +118 -0
- data/spec_legacy/integration/required_field_validator/association_spec.rb +69 -0
- data/spec_legacy/integration/required_field_validator/boolean_type_value_spec.rb +164 -0
- data/spec_legacy/integration/required_field_validator/date_type_value_spec.rb +127 -0
- data/spec_legacy/integration/required_field_validator/datetime_type_value_spec.rb +127 -0
- data/spec_legacy/integration/required_field_validator/float_type_value_spec.rb +131 -0
- data/spec_legacy/integration/required_field_validator/integer_type_value_spec.rb +99 -0
- data/spec_legacy/integration/required_field_validator/plain_old_ruby_object_spec.rb +35 -0
- data/spec_legacy/integration/required_field_validator/shared_examples.rb +26 -0
- data/spec_legacy/integration/required_field_validator/spec_helper.rb +7 -0
- data/spec_legacy/integration/required_field_validator/string_type_value_spec.rb +167 -0
- data/spec_legacy/integration/required_field_validator/text_type_value_spec.rb +49 -0
- data/spec_legacy/integration/shared/default_validation_context.rb +13 -0
- data/spec_legacy/integration/shared/valid_and_invalid_model.rb +35 -0
- data/spec_legacy/integration/uniqueness_validator/spec_helper.rb +5 -0
- data/spec_legacy/integration/uniqueness_validator/uniqueness_validator_spec.rb +116 -0
- data/spec_legacy/integration/within_validator/spec_helper.rb +5 -0
- data/spec_legacy/integration/within_validator/within_validator_spec.rb +168 -0
- data/spec_legacy/public/resource_spec.rb +105 -0
- data/spec_legacy/spec.opts +4 -0
- data/spec_legacy/spec_helper.rb +29 -0
- data/spec_legacy/unit/contextual_validators/emptiness_spec.rb +50 -0
- data/spec_legacy/unit/contextual_validators/execution_spec.rb +48 -0
- data/spec_legacy/unit/contextual_validators/spec_helper.rb +37 -0
- data/spec_legacy/unit/generic_validator/equality_operator_spec.rb +26 -0
- data/spec_legacy/unit/generic_validator/optional_spec.rb +54 -0
- data/spec_legacy/unit/validators/within_validator_spec.rb +23 -0
- data/spec_legacy/unit/violation_set/adding_spec.rb +54 -0
- data/spec_legacy/unit/violation_set/emptiness_spec.rb +38 -0
- data/spec_legacy/unit/violation_set/enumerable_spec.rb +32 -0
- data/spec_legacy/unit/violation_set/reading_spec.rb +35 -0
- data/spec_legacy/unit/violation_set/respond_to_spec.rb +15 -0
- data/tasks/spec.rake +38 -0
- data/tasks/yard.rake +9 -0
- data/tasks/yardstick.rake +19 -0
- metadata +302 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require_relative '../../shared/macros/integration_spec'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
|
|
5
|
+
Aequitas::Macros::IntegrationSpec.describe Aequitas::Macros, '#validates_format_of' do
|
|
6
|
+
describe 'with a Proc' do
|
|
7
|
+
before do
|
|
8
|
+
class_under_test.validates_format_of attribute_name, :with => lambda { |value| value.valid? }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe 'when format proc returns true' do
|
|
12
|
+
let(:attribute_value) do
|
|
13
|
+
val = MiniTest::Mock.new
|
|
14
|
+
val.expect(:nil?, false)
|
|
15
|
+
val.expect(:valid?, true)
|
|
16
|
+
val
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it_should_be_a_valid_instance
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe 'when validated attribute is absent' do
|
|
23
|
+
let(:attribute_value) do
|
|
24
|
+
val = MiniTest::Mock.new
|
|
25
|
+
val.expect(:nil?, false)
|
|
26
|
+
val.expect(:valid?, false)
|
|
27
|
+
val
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it_should_be_an_invalid_instance
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe 'with a Regexp' do
|
|
35
|
+
before do
|
|
36
|
+
class_under_test.validates_format_of attribute_name, :with => /foo/
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe 'when validated attribute is present' do
|
|
40
|
+
let(:attribute_value) { 'foo' }
|
|
41
|
+
|
|
42
|
+
it_should_be_a_valid_instance
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe 'when validated attribute is absent' do
|
|
46
|
+
let(:attribute_value) { 'bar' }
|
|
47
|
+
|
|
48
|
+
it_should_be_an_invalid_instance
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
describe 'with :url' do
|
|
53
|
+
before do
|
|
54
|
+
class_under_test.validates_format_of attribute_name, :as => :url
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
describe 'when validated attribute is a URL' do
|
|
58
|
+
let(:attribute_value) { 'http://www.example.com' }
|
|
59
|
+
|
|
60
|
+
it_should_be_a_valid_instance
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
describe 'when validated attribute is not a URL' do
|
|
64
|
+
let(:attribute_value) { 'not a url' }
|
|
65
|
+
|
|
66
|
+
it_should_be_an_invalid_instance
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe 'with :email_address' do
|
|
71
|
+
before do
|
|
72
|
+
class_under_test.validates_format_of attribute_name, :as => :email_address
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe 'when validated attribute is an email address' do
|
|
76
|
+
let(:attribute_value) { 'address@example.com' }
|
|
77
|
+
|
|
78
|
+
it_should_be_a_valid_instance
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe 'when validated attribute is not an email address' do
|
|
82
|
+
let(:attribute_value) { 'not an email' }
|
|
83
|
+
|
|
84
|
+
it_should_be_an_invalid_instance
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require_relative '../../shared/macros/integration_spec'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
|
|
5
|
+
Aequitas::Macros::IntegrationSpec.describe Aequitas::Macros, '#validates_length_of' do
|
|
6
|
+
describe 'with :is or :equal options' do
|
|
7
|
+
before do
|
|
8
|
+
class_under_test.validates_length_of attribute_name, :is => 3
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe 'when validated attribute value is expected length' do
|
|
12
|
+
let(:attribute_value) { 'foo' }
|
|
13
|
+
|
|
14
|
+
it_should_be_a_valid_instance
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe 'when validated attribute value is not expected length' do
|
|
18
|
+
let(:attribute_value) { 'barz' }
|
|
19
|
+
|
|
20
|
+
it_should_be_an_invalid_instance
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe 'with :max or :maximum options' do
|
|
25
|
+
before do
|
|
26
|
+
class_under_test.validates_length_of attribute_name, :max => 3
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe 'when validated attribute value is at most expected length' do
|
|
30
|
+
let(:attribute_value) { 'foo' }
|
|
31
|
+
|
|
32
|
+
it_should_be_a_valid_instance
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe 'when validated attribute value is more than expected length' do
|
|
36
|
+
let(:attribute_value) { 'barz' }
|
|
37
|
+
|
|
38
|
+
it_should_be_an_invalid_instance
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
describe 'with :min or :minimum options' do
|
|
43
|
+
before do
|
|
44
|
+
class_under_test.validates_length_of attribute_name, :min => 3
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe 'when validated attribute value is at least expected length' do
|
|
48
|
+
let(:attribute_value) { 'foo' }
|
|
49
|
+
|
|
50
|
+
it_should_be_a_valid_instance
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe 'when validated attribute value is less than expected length' do
|
|
54
|
+
let(:attribute_value) { 'bz' }
|
|
55
|
+
|
|
56
|
+
it_should_be_an_invalid_instance
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe 'with :in or :within options' do
|
|
61
|
+
before do
|
|
62
|
+
class_under_test.validates_length_of attribute_name, :in => 2..3
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
describe 'when validated attribute value length is within expected range' do
|
|
66
|
+
let(:attribute_value) { 'foo' }
|
|
67
|
+
|
|
68
|
+
it_should_be_a_valid_instance
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe 'when validated attribute value length is not within expected range' do
|
|
72
|
+
let(:attribute_value) { 'barz' }
|
|
73
|
+
|
|
74
|
+
it_should_be_an_invalid_instance
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require_relative '../../shared/macros/integration_spec'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
|
|
5
|
+
Aequitas::Macros::IntegrationSpec.describe Aequitas::Macros, '#validates_numericalness_of' do
|
|
6
|
+
describe 'with no options' do
|
|
7
|
+
before do
|
|
8
|
+
class_under_test.validates_numericalness_of attribute_name
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe 'when validated attribute is a non-integer number' do
|
|
12
|
+
let(:attribute_value) { 1.0 }
|
|
13
|
+
|
|
14
|
+
it_should_be_a_valid_instance
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe 'when validated attribute is an integer' do
|
|
18
|
+
let(:attribute_value) { 1 }
|
|
19
|
+
|
|
20
|
+
it_should_be_a_valid_instance
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe 'when validated attribute is non-numeric' do
|
|
24
|
+
let(:attribute_value) { 'a' }
|
|
25
|
+
|
|
26
|
+
it_should_be_an_invalid_instance
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe 'with :only_integer option' do
|
|
31
|
+
before do
|
|
32
|
+
class_under_test.validates_numericalness_of attribute_name, :only_integer => true
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe 'when validated attribute is an integer' do
|
|
36
|
+
let(:attribute_value) { 1 }
|
|
37
|
+
|
|
38
|
+
it_should_be_a_valid_instance
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe 'when validated attribute is not an integer' do
|
|
42
|
+
let(:attribute_value) { 'a' }
|
|
43
|
+
|
|
44
|
+
it_should_be_an_invalid_instance
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe 'with :eq, :equal, :equals, :exactly, or :equal_to options' do
|
|
49
|
+
before do
|
|
50
|
+
class_under_test.validates_numericalness_of attribute_name, :eq => bound
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
let(:bound) { 1 }
|
|
54
|
+
let(:class_of_violated_validation_rule) do
|
|
55
|
+
Aequitas::Rule::Numericalness::Equal
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
describe 'when validated attribute is greater than bound' do
|
|
59
|
+
let(:attribute_value) { bound + 1 }
|
|
60
|
+
|
|
61
|
+
it_should_be_an_invalid_instance
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe 'when validated attribute is equal to bound' do
|
|
65
|
+
let(:attribute_value) { bound }
|
|
66
|
+
|
|
67
|
+
it_should_be_a_valid_instance
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe 'when validated attribute is less than bound' do
|
|
71
|
+
let(:attribute_value) { bound - 1 }
|
|
72
|
+
|
|
73
|
+
it_should_be_an_invalid_instance
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe 'with :ne or :not_equal_to options' do
|
|
78
|
+
before do
|
|
79
|
+
class_under_test.validates_numericalness_of attribute_name, :ne => bound
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
let(:bound) { 1 }
|
|
83
|
+
let(:class_of_violated_validation_rule) do
|
|
84
|
+
Aequitas::Rule::Numericalness::NotEqual
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe 'when validated attribute is greater than bound' do
|
|
88
|
+
let(:attribute_value) { bound + 1 }
|
|
89
|
+
|
|
90
|
+
it_should_be_a_valid_instance
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe 'when validated attribute is equal to bound' do
|
|
94
|
+
let(:attribute_value) { bound }
|
|
95
|
+
|
|
96
|
+
it_should_be_an_invalid_instance
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
describe 'when validated attribute is less than bound' do
|
|
100
|
+
let(:attribute_value) { bound - 1 }
|
|
101
|
+
|
|
102
|
+
it_should_be_a_valid_instance
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe 'with :gt or :greater_than options' do
|
|
107
|
+
before do
|
|
108
|
+
class_under_test.validates_numericalness_of attribute_name, :gt => bound
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
let(:bound) { 1 }
|
|
112
|
+
let(:class_of_violated_validation_rule) do
|
|
113
|
+
Aequitas::Rule::Numericalness::GreaterThan
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
describe 'when validated attribute is greater than bound' do
|
|
117
|
+
let(:attribute_value) { bound + 1 }
|
|
118
|
+
|
|
119
|
+
it_should_be_a_valid_instance
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
describe 'when validated attribute is equal to bound' do
|
|
123
|
+
let(:attribute_value) { bound }
|
|
124
|
+
|
|
125
|
+
it_should_be_an_invalid_instance
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
describe 'when validated attribute is less than bound' do
|
|
129
|
+
let(:attribute_value) { bound - 1 }
|
|
130
|
+
|
|
131
|
+
it_should_be_an_invalid_instance
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
describe 'with :lt or :less_than options' do
|
|
136
|
+
before do
|
|
137
|
+
class_under_test.validates_numericalness_of attribute_name, :lt => bound
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
let(:bound) { 1 }
|
|
141
|
+
let(:class_of_violated_validation_rule) do
|
|
142
|
+
Aequitas::Rule::Numericalness::LessThan
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
describe 'when validated attribute is greater than bound' do
|
|
146
|
+
let(:attribute_value) { bound + 1 }
|
|
147
|
+
|
|
148
|
+
it_should_be_an_invalid_instance
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
describe 'when validated attribute is equal to bound' do
|
|
152
|
+
let(:attribute_value) { bound }
|
|
153
|
+
|
|
154
|
+
it_should_be_an_invalid_instance
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
describe 'when validated attribute is less than bound' do
|
|
158
|
+
let(:attribute_value) { bound - 1 }
|
|
159
|
+
|
|
160
|
+
it_should_be_a_valid_instance
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
describe 'with :gte or :greater_than_or_equal_to options' do
|
|
165
|
+
before do
|
|
166
|
+
class_under_test.validates_numericalness_of attribute_name, :gte => bound
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
let(:bound) { 1 }
|
|
170
|
+
let(:class_of_violated_validation_rule) do
|
|
171
|
+
Aequitas::Rule::Numericalness::GreaterThanOrEqual
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
describe 'when validated attribute is greater than bound' do
|
|
175
|
+
let(:attribute_value) { bound + 1 }
|
|
176
|
+
|
|
177
|
+
it_should_be_a_valid_instance
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
describe 'when validated attribute is equal to bound' do
|
|
181
|
+
let(:attribute_value) { bound }
|
|
182
|
+
|
|
183
|
+
it_should_be_a_valid_instance
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
describe 'when validated attribute is less than bound' do
|
|
187
|
+
let(:attribute_value) { bound - 1 }
|
|
188
|
+
|
|
189
|
+
it_should_be_an_invalid_instance
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
describe 'with :lte or :less_than_or_equal_to options' do
|
|
194
|
+
before do
|
|
195
|
+
class_under_test.validates_numericalness_of attribute_name, :lte => bound
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
let(:bound) { 1 }
|
|
199
|
+
let(:class_of_violated_validation_rule) do
|
|
200
|
+
Aequitas::Rule::Numericalness::LessThanOrEqual
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
describe 'when validated attribute is greater than bound' do
|
|
204
|
+
let(:attribute_value) { bound + 1 }
|
|
205
|
+
|
|
206
|
+
it_should_be_an_invalid_instance
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
describe 'when validated attribute is equal to bound' do
|
|
210
|
+
let(:attribute_value) { bound }
|
|
211
|
+
|
|
212
|
+
it_should_be_a_valid_instance
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
describe 'when validated attribute is less than bound' do
|
|
216
|
+
let(:attribute_value) { bound - 1 }
|
|
217
|
+
|
|
218
|
+
it_should_be_a_valid_instance
|
|
219
|
+
end
|
|
220
|
+
end
|
|
221
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require_relative '../../shared/macros/integration_spec'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
|
|
5
|
+
Aequitas::Macros::IntegrationSpec.describe Aequitas::Macros, '#validates_presence_of' do
|
|
6
|
+
before { class_under_test.validates_presence_of attribute_name }
|
|
7
|
+
|
|
8
|
+
describe 'when validated attribute is present' do
|
|
9
|
+
let(:attribute_value) { :foo }
|
|
10
|
+
|
|
11
|
+
it_should_be_a_valid_instance
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe 'when validated attribute is absent' do
|
|
15
|
+
let(:attribute_value) { nil }
|
|
16
|
+
|
|
17
|
+
it_should_be_an_invalid_instance
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require_relative '../../shared/macros/integration_spec'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
|
|
5
|
+
Aequitas::Macros::IntegrationSpec.describe Aequitas::Macros, '#validates_with_block' do
|
|
6
|
+
before do
|
|
7
|
+
block_value = self.block_value
|
|
8
|
+
class_under_test.validates_with_block(attribute_name) { block_value }
|
|
9
|
+
end
|
|
10
|
+
let(:attribute_value) { MiniTest::Mock.new }
|
|
11
|
+
|
|
12
|
+
describe 'when block returns a truthy value' do
|
|
13
|
+
let(:block_value) { true }
|
|
14
|
+
|
|
15
|
+
it_should_be_a_valid_instance
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe 'when block returns a falsy value' do
|
|
19
|
+
let(:block_value) { false }
|
|
20
|
+
|
|
21
|
+
it_should_be_an_invalid_instance
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require_relative '../../shared/macros/integration_spec'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
|
|
5
|
+
Aequitas::Macros::IntegrationSpec.describe Aequitas::Macros, '#validates_with_method' do
|
|
6
|
+
before { class_under_test.validates_with_method attribute_name }
|
|
7
|
+
|
|
8
|
+
describe 'when method returns a truthy value' do
|
|
9
|
+
let(:attribute_value) { true }
|
|
10
|
+
|
|
11
|
+
it_should_be_a_valid_instance
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe 'when method returns a falsy value' do
|
|
15
|
+
let(:attribute_value) { false }
|
|
16
|
+
|
|
17
|
+
it_should_be_an_invalid_instance
|
|
18
|
+
end
|
|
19
|
+
end
|