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,65 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/numeric_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'DataMapper::Validations::Fixtures::BasketballCourt' do
|
|
5
|
+
before :all do
|
|
6
|
+
DataMapper::Validations::Fixtures::BasketballCourt.auto_migrate!
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "with valid set of attributes" do
|
|
10
|
+
before :all do
|
|
11
|
+
@model = DataMapper::Validations::Fixtures::BasketballCourt.valid_instance
|
|
12
|
+
@model.valid?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it_should_behave_like "valid model"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
describe "with rim height of 3.05" do
|
|
20
|
+
before :all do
|
|
21
|
+
@model = DataMapper::Validations::Fixtures::BasketballCourt.valid_instance(:rim_height => 3.05)
|
|
22
|
+
@model.valid?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it_should_behave_like "valid model"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
describe "with rim height of 3.30" do
|
|
30
|
+
before :all do
|
|
31
|
+
@model = DataMapper::Validations::Fixtures::BasketballCourt.valid_instance(:rim_height => 3.30)
|
|
32
|
+
@model.valid?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it_should_behave_like "invalid model"
|
|
36
|
+
|
|
37
|
+
it "has a meaningful error message" do
|
|
38
|
+
@model.errors.on(:rim_height).should == [ 'Rim height must be equal to 3.05' ]
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
describe "with free throw line distance of 4.57" do
|
|
44
|
+
before :all do
|
|
45
|
+
@model = DataMapper::Validations::Fixtures::BasketballCourt.valid_instance(:free_throw_line_distance => 4.57)
|
|
46
|
+
@model.valid?
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it_should_behave_like "valid model"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
describe "with free throw line distance of 3.10" do
|
|
54
|
+
before :all do
|
|
55
|
+
@model = DataMapper::Validations::Fixtures::BasketballCourt.valid_instance(:free_throw_line_distance => 3.10)
|
|
56
|
+
@model.valid?
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it_should_behave_like "invalid model"
|
|
60
|
+
|
|
61
|
+
it "has a meaningful error message" do
|
|
62
|
+
@model.errors.on(:free_throw_line_distance).should == [ 'Free throw line distance must be equal to 4.57' ]
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/numeric_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'DataMapper::Validations::Fixtures::LerneanHydra' do
|
|
5
|
+
before :all do
|
|
6
|
+
DataMapper::Validations::Fixtures::LerneanHydra.auto_migrate!
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "with valid set of attributes" do
|
|
10
|
+
before :all do
|
|
11
|
+
@model = DataMapper::Validations::Fixtures::LerneanHydra.valid_instance
|
|
12
|
+
@model.valid?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it_should_behave_like "valid model"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
describe "with 9 heads" do
|
|
20
|
+
before :all do
|
|
21
|
+
@model = DataMapper::Validations::Fixtures::LerneanHydra.valid_instance(:head_count => 9)
|
|
22
|
+
@model.valid?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it_should_behave_like "valid model"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
describe "with only 3 heads" do
|
|
30
|
+
before :all do
|
|
31
|
+
@model = DataMapper::Validations::Fixtures::LerneanHydra.valid_instance(:head_count => 3)
|
|
32
|
+
@model.valid?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it_should_behave_like "invalid model"
|
|
36
|
+
|
|
37
|
+
it "has a meaningful error message" do
|
|
38
|
+
@model.errors.on(:head_count).should == [ 'Lernean hydra is said to have exactly 9 heads' ]
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/numeric_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'DataMapper::Validations::Fixtures::BasketballPlayer' do
|
|
5
|
+
before :all do
|
|
6
|
+
DataMapper::Validations::Fixtures::BasketballPlayer.auto_migrate!
|
|
7
|
+
|
|
8
|
+
@model = DataMapper::Validations::Fixtures::BasketballPlayer.new(:name => "Michael Jordan", :height => 198.1, :weight => 97.2)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "with height as float" do
|
|
12
|
+
before :all do
|
|
13
|
+
# no op in this case
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it_should_behave_like "valid model"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "with height as integer" do
|
|
20
|
+
before :all do
|
|
21
|
+
@model.height = 198
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it_should_behave_like "valid model"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "with height as string containing only integers" do
|
|
28
|
+
before :all do
|
|
29
|
+
@model.height = "198"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it_should_behave_like "valid model"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "with height as string containing a float" do
|
|
36
|
+
before :all do
|
|
37
|
+
@model.height = "198.1"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it_should_behave_like "valid model"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "with height as string containing a float that will be represented in scientific notation" do
|
|
44
|
+
before :all do
|
|
45
|
+
@model.height = '0.00004'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it_should_behave_like "valid model"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
describe "with height as string containing random alphanumeric characters" do
|
|
52
|
+
before :all do
|
|
53
|
+
@height = 'height=198.1'
|
|
54
|
+
@model.height = "height=198.1"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "is should not change the value" do
|
|
58
|
+
@model.height.should == @height
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it_should_behave_like "invalid model"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe "with height as string containing random punctuation characters" do
|
|
65
|
+
before :all do
|
|
66
|
+
@height = '$$ * $?'
|
|
67
|
+
@model.height = @height
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "is should not change the value" do
|
|
71
|
+
@model.height.should == @height
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it_should_behave_like "invalid model"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe "with nil height" do
|
|
78
|
+
before :all do
|
|
79
|
+
@model.height = nil
|
|
80
|
+
@model.valid?
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# typecasting kicks in
|
|
84
|
+
it_should_behave_like "invalid model"
|
|
85
|
+
|
|
86
|
+
it "has a meaningful error message" do
|
|
87
|
+
@model.errors.on(:height).should == [ 'Height must be a number' ]
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/numeric_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'DataMapper::Validations::Fixtures::BasketballCourt' do
|
|
5
|
+
before :all do
|
|
6
|
+
DataMapper::Validations::Fixtures::BasketballCourt.auto_migrate!
|
|
7
|
+
|
|
8
|
+
@model = DataMapper::Validations::Fixtures::BasketballCourt.valid_instance
|
|
9
|
+
@model.valid?
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it_should_behave_like "valid model"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
describe "with three point line distance of 7.2" do
|
|
16
|
+
before :all do
|
|
17
|
+
@model.three_point_line_distance = 7.2
|
|
18
|
+
@model.valid?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it_should_behave_like "valid model"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
describe "with three point line distance of 3.5" do
|
|
26
|
+
before :all do
|
|
27
|
+
@model.three_point_line_distance = 3.5
|
|
28
|
+
@model.valid?
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it_should_behave_like "invalid model"
|
|
32
|
+
|
|
33
|
+
it "has a meaningful error message" do
|
|
34
|
+
@model.errors.on(:three_point_line_distance).should == [ 'Three point line distance must be greater than 6.7' ]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/numeric_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'DataMapper::Validations::Fixtures::BasketballCourt' do
|
|
5
|
+
before :all do
|
|
6
|
+
DataMapper::Validations::Fixtures::BasketballCourt.auto_migrate!
|
|
7
|
+
|
|
8
|
+
@model = DataMapper::Validations::Fixtures::BasketballCourt.valid_instance
|
|
9
|
+
@model.valid?
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it_should_behave_like "valid model"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
describe "with length of 15.0" do
|
|
16
|
+
before :all do
|
|
17
|
+
@model.length = 15.0
|
|
18
|
+
@model.valid?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it_should_behave_like "valid model"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
describe "with length of 14.0" do
|
|
26
|
+
before :all do
|
|
27
|
+
@model.length = 14.0
|
|
28
|
+
@model.valid?
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it_should_behave_like "invalid model"
|
|
32
|
+
|
|
33
|
+
it "has a meaningful error message" do
|
|
34
|
+
@model.errors.on(:length).should == [ 'Length must be greater than or equal to 15.0' ]
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/numeric_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'Country' do
|
|
5
|
+
before do
|
|
6
|
+
Country.auto_migrate!
|
|
7
|
+
|
|
8
|
+
@country = Country.new(:name => "Italy", :area => "301318")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "with area as integer" do
|
|
12
|
+
before do
|
|
13
|
+
# no op in this case
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "is valid" do
|
|
17
|
+
@country.should be_valid
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
describe "with area as integer" do
|
|
23
|
+
before do
|
|
24
|
+
@country.area = 1603
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "is valid" do
|
|
28
|
+
@country.should be_valid
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
describe "with area as string containing only integers" do
|
|
34
|
+
before do
|
|
35
|
+
@country.area = "301318"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "is valid" do
|
|
39
|
+
@country.should be_valid
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
describe "with area as string containing a float" do
|
|
45
|
+
before do
|
|
46
|
+
@country.area = "301318.6"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "IS valid" do
|
|
50
|
+
@country.should be_valid
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
describe "with area as string containing random alphanumeric characters" do
|
|
56
|
+
before do
|
|
57
|
+
@country.area = "area=51"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "IS NOT valid" do
|
|
61
|
+
@country.should_not be_valid
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
describe "with area as string containing random punctuation characters" do
|
|
67
|
+
before do
|
|
68
|
+
@country.area = "$$ * $?"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "IS NOT valid" do
|
|
72
|
+
@country.should_not be_valid
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
describe "with unknown area" do
|
|
78
|
+
before do
|
|
79
|
+
@country.area = nil
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "is NOT valid" do
|
|
83
|
+
@country.should_not be_valid
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "has a meaningful error message on for the property" do
|
|
87
|
+
@country.valid?
|
|
88
|
+
@country.errors.on(:area).should == [ 'Please use integers to specify area' ]
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'integration/numeric_validator/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe 'City' do
|
|
5
|
+
before do
|
|
6
|
+
City.auto_migrate!
|
|
7
|
+
|
|
8
|
+
@city = City.new(:name => "Tokyo", :founded_in => 1603)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe "with foundation year as integer" do
|
|
12
|
+
before do
|
|
13
|
+
# no op in this case
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "is valid" do
|
|
17
|
+
@city.should be_valid
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
describe "with foundation year as integer" do
|
|
23
|
+
before do
|
|
24
|
+
@city.founded_in = 1603
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "is valid" do
|
|
28
|
+
@city.should be_valid
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
describe "with foundation year as string containing only integers" do
|
|
34
|
+
before do
|
|
35
|
+
@city.founded_in = "1603"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "is valid" do
|
|
39
|
+
@city.should be_valid
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
describe "with foundation year as string containing a float" do
|
|
45
|
+
before do
|
|
46
|
+
@city.founded_in = "1603.6"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "is valid" do
|
|
50
|
+
@city.should be_valid
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
describe "with foundation year as string that is not an integer or float" do
|
|
56
|
+
before do
|
|
57
|
+
@string = "founded-in=1603"
|
|
58
|
+
|
|
59
|
+
@city.founded_in = @string
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "is not altered" do
|
|
63
|
+
@city.founded_in.should be(@string)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "IS NOT valid" do
|
|
67
|
+
@city.should_not be_valid
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
describe "with unknown foundation date" do
|
|
73
|
+
before do
|
|
74
|
+
@city.founded_in = nil
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "is NOT valid" do
|
|
78
|
+
@city.should_not be_valid
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "has a meaningful error message on for the property" do
|
|
82
|
+
@city.valid?
|
|
83
|
+
@city.errors.on(:founded_in).should == [ 'Foundation year must be an integer' ]
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|