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_within' do
|
|
6
|
+
describe 'with Range option for :set' do
|
|
7
|
+
describe 'with lower and upper bounds' do
|
|
8
|
+
before do
|
|
9
|
+
class_under_test.validates_within attribute_name, :set => set
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
let(:set) { 1..5 }
|
|
13
|
+
|
|
14
|
+
describe 'when validated attribute value is within the range' do
|
|
15
|
+
let(:attribute_value) { set.begin + 1 }
|
|
16
|
+
|
|
17
|
+
it_should_be_a_valid_instance
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe 'when validated attribute value is not within the range' do
|
|
21
|
+
let(:attribute_value) { set.end + 1 }
|
|
22
|
+
|
|
23
|
+
it_should_be_an_invalid_instance
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe 'with no lower bound' do
|
|
28
|
+
before do
|
|
29
|
+
class_under_test.validates_within attribute_name, :set => set
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
let(:set) { -(1.0/0)..5 }
|
|
33
|
+
|
|
34
|
+
describe 'when validated attribute value is within the range' do
|
|
35
|
+
let(:attribute_value) { set.end - 1 }
|
|
36
|
+
|
|
37
|
+
it_should_be_a_valid_instance
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe 'when validated attribute value is not within the range' do
|
|
41
|
+
let(:attribute_value) { set.end + 1 }
|
|
42
|
+
|
|
43
|
+
it_should_be_an_invalid_instance
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe 'with no upper bound' do
|
|
48
|
+
before do
|
|
49
|
+
class_under_test.validates_within attribute_name, :set => set
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
let(:set) { 1..(1.0/0) }
|
|
53
|
+
|
|
54
|
+
describe 'when validated attribute value is within the range' do
|
|
55
|
+
let(:attribute_value) { set.begin + 1 }
|
|
56
|
+
|
|
57
|
+
it_should_be_a_valid_instance
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
describe 'when validated attribute value is not within the range' do
|
|
61
|
+
let(:attribute_value) { set.begin - 1 }
|
|
62
|
+
|
|
63
|
+
it_should_be_an_invalid_instance
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe 'with Set option for :set' do
|
|
69
|
+
before do
|
|
70
|
+
class_under_test.validates_within attribute_name, :set => Set[*set]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
let(:set) { [:a, :b, :c] }
|
|
74
|
+
|
|
75
|
+
describe 'when validated attribute value is included in the set' do
|
|
76
|
+
let(:attribute_value) { set.first }
|
|
77
|
+
|
|
78
|
+
it_should_be_a_valid_instance
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe 'when validated attribute value is not included in the set' do
|
|
82
|
+
let(:attribute_value) { :foo }
|
|
83
|
+
|
|
84
|
+
it_should_be_an_invalid_instance
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
require 'minitest/spec'
|
|
2
|
+
|
|
3
|
+
module Aequitas
|
|
4
|
+
module Macros
|
|
5
|
+
class IntegrationSpec < MiniTest::Spec
|
|
6
|
+
class << self; public :describe; end
|
|
7
|
+
|
|
8
|
+
let(:class_under_test) do
|
|
9
|
+
attribute_name = self.attribute_name
|
|
10
|
+
|
|
11
|
+
Class.new do
|
|
12
|
+
include Aequitas
|
|
13
|
+
|
|
14
|
+
attr_accessor attribute_name
|
|
15
|
+
|
|
16
|
+
define_method(:initialize) do |attribute_value|
|
|
17
|
+
send("#{attribute_name}=", attribute_value)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
let(:attribute_name) { :attribute_under_test }
|
|
23
|
+
let(:class_of_violated_validation_rule) do
|
|
24
|
+
class_under_test.validation_rules[attribute_name].first.class
|
|
25
|
+
end
|
|
26
|
+
let(:validation_rules) do
|
|
27
|
+
class_under_test.validation_rules[attribute_name].select do |rule|
|
|
28
|
+
rule.instance_of?(class_of_violated_validation_rule)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
let(:expected_violations) do
|
|
32
|
+
validation_rules.map { |rule| Violation.new(subject, nil, rule) }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
subject { class_under_test.new(attribute_value) }
|
|
36
|
+
|
|
37
|
+
def self.it_should_be_a_valid_instance
|
|
38
|
+
it '#valid? returns true' do
|
|
39
|
+
assert_predicate subject, :valid?
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it '#errors is empty' do
|
|
43
|
+
assert_predicate subject.validate.errors, :empty?
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.it_should_be_an_invalid_instance
|
|
48
|
+
it '#valid? returns false' do
|
|
49
|
+
refute_predicate subject, :valid?
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it '#errors is not empty' do
|
|
53
|
+
refute_predicate subject.validate.errors, :empty?
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it '#errors has one member' do
|
|
57
|
+
assert_equal 1, subject.validate.errors.size
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it 'has a violation under the expected attribute name' do
|
|
61
|
+
assert_equal expected_violations, subject.validate.errors.on(attribute_name)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
end # class IntegrationSpec
|
|
66
|
+
end # module Macros
|
|
67
|
+
end # module Aequitas
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'virtus'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
require 'aequitas/virtus'
|
|
5
|
+
|
|
6
|
+
describe Aequitas::Virtus::ClassMethodOverrides do
|
|
7
|
+
let(:class_under_test) do
|
|
8
|
+
class ClassUnderTest
|
|
9
|
+
include Virtus
|
|
10
|
+
include Aequitas
|
|
11
|
+
|
|
12
|
+
attribute :validated_attribute, Boolean, :required => true
|
|
13
|
+
|
|
14
|
+
self
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.validation_rules' do
|
|
19
|
+
it 'includes a Rule::Presence::NotNil for :validated_attribute' do
|
|
20
|
+
attribute_rules = class_under_test.validation_rules[:validated_attribute]
|
|
21
|
+
refute_predicate attribute_rules, :empty?
|
|
22
|
+
assert_instance_of Aequitas::Rule::Presence::NotNil, attribute_rules.first
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#valid?' do
|
|
27
|
+
subject { class_under_test.new(:validated_attribute => attribute_value) }
|
|
28
|
+
|
|
29
|
+
describe 'when empty string' do
|
|
30
|
+
let(:attribute_value) { '' }
|
|
31
|
+
it('is valid') { assert_predicate subject, :valid? }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe 'when nil' do
|
|
35
|
+
let(:attribute_value) { nil }
|
|
36
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe 'when false' do
|
|
40
|
+
let(:attribute_value) { false }
|
|
41
|
+
it('is valid') { assert_predicate subject, :valid? }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe 'when true' do
|
|
45
|
+
let(:attribute_value) { true }
|
|
46
|
+
it('is valid') { assert_predicate subject, :valid? }
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
require 'virtus'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
require 'aequitas/virtus'
|
|
5
|
+
|
|
6
|
+
describe Aequitas::Virtus::ClassMethodOverrides do
|
|
7
|
+
let(:class_under_test) do
|
|
8
|
+
Class.new do
|
|
9
|
+
include Virtus
|
|
10
|
+
include Aequitas
|
|
11
|
+
|
|
12
|
+
attribute :validated_attribute, String, :format => :email_address
|
|
13
|
+
|
|
14
|
+
self
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.validation_rules' do
|
|
19
|
+
it 'includes a Rule::Format::Regexp for :validated_attribute' do
|
|
20
|
+
attribute_rules = class_under_test.validation_rules[:validated_attribute]
|
|
21
|
+
refute_predicate attribute_rules, :empty?
|
|
22
|
+
assert_instance_of Aequitas::Rule::Format::Regexp, attribute_rules.first
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#valid?' do
|
|
27
|
+
subject { class_under_test.new(:validated_attribute => attribute_value) }
|
|
28
|
+
|
|
29
|
+
describe 'when empty string' do
|
|
30
|
+
let(:attribute_value) { '' }
|
|
31
|
+
it('is not valid') do
|
|
32
|
+
skip 'assess default skip condition'
|
|
33
|
+
refute_predicate subject, :valid?
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'when nil' do
|
|
38
|
+
let(:attribute_value) { nil }
|
|
39
|
+
it('is not valid') do
|
|
40
|
+
skip 'assess default skip condition'
|
|
41
|
+
refute_predicate subject, :valid?
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe 'when a string that looks like an email address' do
|
|
46
|
+
let(:attribute_value) { 'address@domain.tld' }
|
|
47
|
+
it('is valid') { assert_predicate subject, :valid? }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "when a string that doesn't look like an email address" do
|
|
51
|
+
let(:attribute_value) { 'quux' }
|
|
52
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
require 'virtus'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
require 'aequitas/virtus'
|
|
5
|
+
|
|
6
|
+
describe Aequitas::Virtus::ClassMethodOverrides do
|
|
7
|
+
let(:class_under_test) do
|
|
8
|
+
Class.new do
|
|
9
|
+
include Virtus
|
|
10
|
+
include Aequitas
|
|
11
|
+
|
|
12
|
+
attribute :validated_attribute, String, :format => /a\.b\.c/
|
|
13
|
+
|
|
14
|
+
self
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.validation_rules' do
|
|
19
|
+
it 'includes a Rule::Format::Regexp for :validated_attribute' do
|
|
20
|
+
attribute_rules = class_under_test.validation_rules[:validated_attribute]
|
|
21
|
+
refute_predicate attribute_rules, :empty?
|
|
22
|
+
assert_instance_of Aequitas::Rule::Format::Regexp, attribute_rules.first
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#valid?' do
|
|
27
|
+
subject { class_under_test.new(:validated_attribute => attribute_value) }
|
|
28
|
+
|
|
29
|
+
describe 'when empty string' do
|
|
30
|
+
let(:attribute_value) { '' }
|
|
31
|
+
it('is not valid') do
|
|
32
|
+
skip 'default skip condition'
|
|
33
|
+
refute_predicate subject, :valid?
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'when nil' do
|
|
38
|
+
let(:attribute_value) { nil }
|
|
39
|
+
it('is not valid') do
|
|
40
|
+
skip 'default skip condition'
|
|
41
|
+
refute_predicate subject, :valid?
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe 'when a string of the expected format' do
|
|
46
|
+
let(:attribute_value) { 'a.b.c' }
|
|
47
|
+
it('is valid') { assert_predicate subject, :valid? }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe 'when a string not of the expected format' do
|
|
51
|
+
let(:attribute_value) { 'quux' }
|
|
52
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
require 'virtus'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
require 'aequitas/virtus'
|
|
5
|
+
|
|
6
|
+
describe Aequitas::Virtus::ClassMethodOverrides do
|
|
7
|
+
let(:class_under_test) do
|
|
8
|
+
Class.new do
|
|
9
|
+
include Virtus
|
|
10
|
+
include Aequitas
|
|
11
|
+
|
|
12
|
+
attribute :validated_attribute, String, :format => :url
|
|
13
|
+
|
|
14
|
+
self
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.validation_rules' do
|
|
19
|
+
it 'includes a Rule::Format::Regexp for :validated_attribute' do
|
|
20
|
+
attribute_rules = class_under_test.validation_rules[:validated_attribute]
|
|
21
|
+
refute_predicate attribute_rules, :empty?
|
|
22
|
+
assert_instance_of Aequitas::Rule::Format::Regexp, attribute_rules.first
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#valid?' do
|
|
27
|
+
subject { class_under_test.new(:validated_attribute => attribute_value) }
|
|
28
|
+
|
|
29
|
+
describe 'when empty string' do
|
|
30
|
+
let(:attribute_value) { '' }
|
|
31
|
+
it('is not valid') do
|
|
32
|
+
skip 'assess default skip condition'
|
|
33
|
+
refute_predicate subject, :valid?
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'when nil' do
|
|
38
|
+
let(:attribute_value) { nil }
|
|
39
|
+
it('is not valid') do
|
|
40
|
+
skip 'assess default skip condition'
|
|
41
|
+
refute_predicate subject, :valid?
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe 'when a string that looks like a URL' do
|
|
46
|
+
let(:attribute_value) { 'http://domain.tld' }
|
|
47
|
+
it('is valid') { assert_predicate subject, :valid? }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "when a string that doesn't look like a URL" do
|
|
51
|
+
let(:attribute_value) { 'quux' }
|
|
52
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
require 'virtus'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
require 'aequitas/virtus'
|
|
5
|
+
|
|
6
|
+
describe Aequitas::Virtus::ClassMethodOverrides do
|
|
7
|
+
let(:class_under_test) do
|
|
8
|
+
Class.new do
|
|
9
|
+
include Virtus
|
|
10
|
+
include Aequitas
|
|
11
|
+
|
|
12
|
+
attribute :validated_attribute, String, :length => 3
|
|
13
|
+
|
|
14
|
+
self
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.validation_rules' do
|
|
19
|
+
it 'includes a Rule::Length::Range for :boolean_with_presence' do
|
|
20
|
+
attribute_rules = class_under_test.validation_rules[:validated_attribute]
|
|
21
|
+
refute_predicate attribute_rules, :empty?
|
|
22
|
+
assert_instance_of Aequitas::Rule::Length::Equal, attribute_rules.first
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#valid?' do
|
|
27
|
+
subject { class_under_test.new(:validated_attribute => attribute_value) }
|
|
28
|
+
|
|
29
|
+
describe 'when empty string' do
|
|
30
|
+
let(:attribute_value) { '' }
|
|
31
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe 'when nil' do
|
|
35
|
+
let(:attribute_value) { nil }
|
|
36
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe 'when a string of length equal to the expected' do
|
|
40
|
+
let(:attribute_value) { 'foo' }
|
|
41
|
+
it('is valid') { assert_predicate subject, :valid? }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe 'when a string of length not equal to the expected' do
|
|
45
|
+
let(:attribute_value) { 'quux' }
|
|
46
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
require 'virtus'
|
|
3
|
+
require 'aequitas'
|
|
4
|
+
require 'aequitas/virtus'
|
|
5
|
+
|
|
6
|
+
describe Aequitas::Virtus::ClassMethodOverrides do
|
|
7
|
+
let(:class_under_test) do
|
|
8
|
+
Class.new do
|
|
9
|
+
include Virtus
|
|
10
|
+
include Aequitas
|
|
11
|
+
|
|
12
|
+
attribute :validated_attribute, String, :length => 1..3
|
|
13
|
+
|
|
14
|
+
self
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.validation_rules' do
|
|
19
|
+
it 'includes a Rule::Length::Range for :boolean_with_presence' do
|
|
20
|
+
attribute_rules = class_under_test.validation_rules[:validated_attribute]
|
|
21
|
+
refute_predicate attribute_rules, :empty?
|
|
22
|
+
assert_instance_of Aequitas::Rule::Length::Range, attribute_rules.first
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe '#valid?' do
|
|
27
|
+
subject { class_under_test.new(:validated_attribute => attribute_value) }
|
|
28
|
+
|
|
29
|
+
describe 'when empty string' do
|
|
30
|
+
let(:attribute_value) { '' }
|
|
31
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe 'when nil' do
|
|
35
|
+
let(:attribute_value) { nil }
|
|
36
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe 'when a string of length within the range' do
|
|
40
|
+
let(:attribute_value) { 'foo' }
|
|
41
|
+
it('is valid') { assert_predicate subject, :valid? }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
describe 'when a string of length outside the range' do
|
|
45
|
+
let(:attribute_value) { 'quux' }
|
|
46
|
+
it('is not valid') { refute_predicate subject, :valid? }
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|