activevalidators 5.1.0 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.circleci/config.yml +69 -20
- data/ChangeLog.md +13 -1
- data/README.md +1 -1
- data/activevalidators.gemspec +1 -1
- data/certs/franckverrot.pem +21 -21
- data/test/validations/barcode_test.rb +12 -12
- data/test/validations/credit_card_test.rb +5 -5
- data/test/validations/email_test.rb +32 -32
- data/test/validations/hex_color_test.rb +12 -12
- data/test/validations/ip_test.rb +16 -16
- data/test/validations/nino_test.rb +14 -14
- data/test/validations/password_test.rb +6 -6
- data/test/validations/phone_test.rb +16 -16
- data/test/validations/postal_code_test.rb +18 -18
- data/test/validations/regexp_test.rb +6 -6
- data/test/validations/respond_to_test.rb +6 -6
- data/test/validations/sin_test.rb +12 -12
- data/test/validations/siren_test.rb +14 -14
- data/test/validations/slug_test.rb +8 -8
- data/test/validations/ssn_test.rb +10 -10
- data/test/validations/tracking_number_test.rb +5 -5
- data/test/validations/twitter_test.rb +43 -43
- data/test/validations/url_test.rb +30 -30
- metadata +23 -23
- metadata.gz.sig +0 -0
@@ -14,21 +14,21 @@ describe "Respond To Validation" do
|
|
14
14
|
subject.global_condition = true
|
15
15
|
subject.local_condition = true
|
16
16
|
|
17
|
-
subject.valid
|
18
|
-
subject.errors.size.must_equal
|
17
|
+
_(subject.valid?).must_equal(true)
|
18
|
+
_(subject.errors.size).must_equal(0)
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "when does not respond_to?" do
|
22
22
|
it "rejects the responder" do
|
23
23
|
subject = build_respond_to_record :responder => 42, :global_condition => true, :local_condition => true
|
24
|
-
subject.valid
|
25
|
-
subject.errors.size.must_equal
|
24
|
+
_(subject.valid?).must_equal(false)
|
25
|
+
_(subject.errors.size).must_equal(1)
|
26
26
|
end
|
27
27
|
|
28
28
|
it "generates an error message of type invalid" do
|
29
29
|
subject = build_respond_to_record :responder => 42, :global_condition => true, :local_condition => true
|
30
|
-
subject.valid
|
31
|
-
subject.errors[:responder].include?(subject.errors.generate_message(:responder, :invalid)).must_equal
|
30
|
+
_(subject.valid?).must_equal(false)
|
31
|
+
_(subject.errors[:responder].include?(subject.errors.generate_message(:responder, :invalid))).must_equal(true)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -6,66 +6,66 @@ describe "SIN validations" do
|
|
6
6
|
describe "for invalid" do
|
7
7
|
it "rejects empty sin" do
|
8
8
|
subject = build_sin_record({:sin => ''})
|
9
|
-
subject.valid
|
9
|
+
_(subject.valid?).must_equal(false)
|
10
10
|
end
|
11
11
|
|
12
12
|
it "rejects sin made out of zeroes" do
|
13
13
|
subject = build_sin_record({:sin => '000 000 000'}, {:country => :canada})
|
14
|
-
subject.valid
|
14
|
+
_(subject.valid?).must_equal(false)
|
15
15
|
end
|
16
16
|
|
17
17
|
it "rejects empty sin when country is provided" do
|
18
18
|
subject = build_sin_record({:sin => ''}, {:country => :canada })
|
19
|
-
subject.valid
|
19
|
+
_(subject.valid?).must_equal(false)
|
20
20
|
end
|
21
21
|
|
22
22
|
it "rejects too long sin" do
|
23
23
|
subject = build_sin_record({:sin => '123 456 789 0'}, {:country => :canada })
|
24
|
-
subject.valid
|
24
|
+
_(subject.valid?).must_equal(false)
|
25
25
|
end
|
26
26
|
|
27
27
|
it "rejects too short sin" do
|
28
28
|
subject = build_sin_record({:sin => '123'}, {:country => :canada })
|
29
|
-
subject.valid
|
29
|
+
_(subject.valid?).must_equal(false)
|
30
30
|
end
|
31
31
|
|
32
32
|
it "rejects valid sin for temporary residents by default" do
|
33
33
|
subject = build_sin_record({:sin => '996 454 286'}, {:country => :canada })
|
34
|
-
subject.valid
|
34
|
+
_(subject.valid?).must_equal(false)
|
35
35
|
end
|
36
36
|
|
37
37
|
it "rejects valid business numbers by default" do
|
38
38
|
subject = build_sin_record({:sin => '897 454 286'}, {:country => :canada })
|
39
|
-
subject.valid
|
39
|
+
_(subject.valid?).must_equal(false)
|
40
40
|
end
|
41
41
|
|
42
42
|
it "rejects invalid sin for permanent residents" do
|
43
43
|
subject = build_sin_record({:sin => '123 456 789'}, {:country => :canada })
|
44
|
-
subject.valid
|
44
|
+
_(subject.valid?).must_equal(false)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
describe "for valid" do
|
49
49
|
it "accept valid sin for permanent residents without flags (Canada by default)" do
|
50
50
|
subject = build_sin_record({:sin => '046 454 286'}, true)
|
51
|
-
subject.valid
|
51
|
+
_(subject.valid?).must_equal(true)
|
52
52
|
end
|
53
53
|
|
54
54
|
it "accept valid sin for permanent residents" do
|
55
55
|
subject = build_sin_record({:sin => '046 454 286'}, {:country => :canada })
|
56
|
-
subject.valid
|
56
|
+
_(subject.valid?).must_equal(true)
|
57
57
|
end
|
58
58
|
|
59
59
|
it "accept valid sin for temporary residents when flag is provided" do
|
60
60
|
subject = build_sin_record({:sin => '996 454 286'},
|
61
61
|
{:country => :canada, :country_options => { allow_permanent_residents: true } })
|
62
|
-
subject.valid
|
62
|
+
_(subject.valid?).must_equal(true)
|
63
63
|
end
|
64
64
|
|
65
65
|
it "accept valid business numbers when flag is provided" do
|
66
66
|
subject = build_sin_record({:sin => '897 454 286'},
|
67
67
|
{:country => :canada, :country_options => { allow_business_numbers: true } })
|
68
|
-
subject.valid
|
68
|
+
_(subject.valid?).must_equal(true)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
@@ -4,47 +4,47 @@ ActiveValidators.activate(:siren)
|
|
4
4
|
describe "Siren Validation" do
|
5
5
|
it "Rejects if not supplied" do
|
6
6
|
subject = build_siren_record true
|
7
|
-
subject.valid
|
8
|
-
subject.errors.size.must_equal
|
7
|
+
_(subject.valid?).must_equal(false)
|
8
|
+
_(subject.errors.size).must_equal(1)
|
9
9
|
end
|
10
10
|
|
11
11
|
describe 'supplied as a string' do
|
12
12
|
it "Accepts if valid" do
|
13
13
|
subject = build_siren_record true, :siren => '552100554'
|
14
|
-
subject.valid
|
15
|
-
subject.errors.size.must_equal
|
14
|
+
_(subject.valid?).must_equal(true)
|
15
|
+
_(subject.errors.size).must_equal(0)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "Reject if invalid" do
|
19
19
|
subject = build_siren_record true, :siren => '552100553'
|
20
|
-
subject.valid
|
21
|
-
subject.errors.size.must_equal
|
20
|
+
_(subject.valid?).must_equal(false)
|
21
|
+
_(subject.errors.size).must_equal(1)
|
22
22
|
end
|
23
23
|
|
24
24
|
it "Reject if not the right size" do
|
25
25
|
subject = build_siren_record true, :siren => '55210055'
|
26
|
-
subject.valid
|
27
|
-
subject.errors.size.must_equal
|
26
|
+
_(subject.valid?).must_equal(false)
|
27
|
+
_(subject.errors.size).must_equal(1)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
describe 'supplied as a number' do
|
32
32
|
it "Accepts if valid" do
|
33
33
|
subject = build_siren_record true, :siren => 732829320
|
34
|
-
subject.valid
|
35
|
-
subject.errors.size.must_equal
|
34
|
+
_(subject.valid?).must_equal(true)
|
35
|
+
_(subject.errors.size).must_equal(0)
|
36
36
|
end
|
37
37
|
|
38
38
|
it "Reject if invalid" do
|
39
39
|
subject = build_siren_record true, :siren => 732829321
|
40
|
-
subject.valid
|
41
|
-
subject.errors.size.must_equal
|
40
|
+
_(subject.valid?).must_equal(false)
|
41
|
+
_(subject.errors.size).must_equal(1)
|
42
42
|
end
|
43
43
|
|
44
44
|
it "Reject if not the right size" do
|
45
45
|
subject = build_siren_record true, :siren => 73282932
|
46
|
-
subject.valid
|
47
|
-
subject.errors.size.must_equal
|
46
|
+
_(subject.valid?).must_equal(false)
|
47
|
+
_(subject.errors.size).must_equal(1)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -11,29 +11,29 @@ describe "Slug Validation" do
|
|
11
11
|
it "accepts valid slugs" do
|
12
12
|
subject = build_slug_validation
|
13
13
|
subject.slug = '1234567890-foo-bar-bar'
|
14
|
-
subject.valid
|
15
|
-
subject.errors.size.must_equal
|
14
|
+
_(subject.valid?).must_equal(true)
|
15
|
+
_(subject.errors.size).must_equal(0)
|
16
16
|
end
|
17
17
|
|
18
18
|
describe "for invalid slugs" do
|
19
19
|
it "rejects invalid slugs" do
|
20
20
|
subject = build_slug_validation :slug => '@#$%^'
|
21
|
-
subject.valid
|
22
|
-
subject.errors.size.must_equal
|
21
|
+
_(subject.valid?).must_equal(false)
|
22
|
+
_(subject.errors.size).must_equal(1)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "generates an error message of type invalid" do
|
26
26
|
subject = build_slug_validation :slug => '@#$%^'
|
27
|
-
subject.valid
|
28
|
-
subject.errors[:slug].include?(subject.errors.generate_message(:slug, :invalid)).must_equal
|
27
|
+
_(subject.valid?).must_equal(false)
|
28
|
+
_(subject.errors[:slug].include?(subject.errors.generate_message(:slug, :invalid))).must_equal(true)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
32
|
describe "for empty slugs" do
|
33
33
|
it "generates an error message of type blank" do
|
34
34
|
subject = build_slug_validation :slug => nil
|
35
|
-
subject.valid
|
36
|
-
subject.errors[:slug].include?(subject.errors.generate_message(:slug, :blank)).must_equal
|
35
|
+
_(subject.valid?).must_equal(false)
|
36
|
+
_(subject.errors[:slug].include?(subject.errors.generate_message(:slug, :blank))).must_equal(true)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -6,45 +6,45 @@ describe "SSN validations" do
|
|
6
6
|
describe "for invalid" do
|
7
7
|
it "rejects empty ssn" do
|
8
8
|
subject = build_ssn_record({:ssn => ''}, true)
|
9
|
-
subject.valid
|
9
|
+
_(subject.valid?).must_equal(false)
|
10
10
|
end
|
11
11
|
|
12
12
|
it "rejects ssn when it doesn't consist of numbers" do
|
13
13
|
subject = build_ssn_record({:ssn => 'aaabbcccc'}, true)
|
14
|
-
subject.valid
|
14
|
+
_(subject.valid?).must_equal(false)
|
15
15
|
end
|
16
16
|
|
17
17
|
it "rejects ssn when the first group of digits is 000" do
|
18
18
|
subject = build_ssn_record({:ssn => '000112222'}, true)
|
19
|
-
subject.valid
|
19
|
+
_(subject.valid?).must_equal(false)
|
20
20
|
end
|
21
21
|
|
22
22
|
it "rejects ssn when the first group of digits is 666" do
|
23
23
|
subject = build_ssn_record({:ssn => '666112222'}, true)
|
24
|
-
subject.valid
|
24
|
+
_(subject.valid?).must_equal(false)
|
25
25
|
end
|
26
26
|
|
27
27
|
(900..999).each do |first_group_num|
|
28
28
|
it "rejects ssn when the first group of digits is #{first_group_num}" do
|
29
29
|
subject = build_ssn_record({:ssn => "#{first_group_num}112222"}, true)
|
30
|
-
subject.valid
|
30
|
+
_(subject.valid?).must_equal(false)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
34
|
it "reject ssn when the second group of digits is 00" do
|
35
35
|
subject = build_ssn_record({:ssn => "555002222"}, true)
|
36
|
-
subject.valid
|
36
|
+
_(subject.valid?).must_equal(false)
|
37
37
|
end
|
38
38
|
|
39
39
|
it "reject ssn when the third group of digits is 0000" do
|
40
40
|
subject = build_ssn_record({:ssn => "555660000"}, true)
|
41
|
-
subject.valid
|
41
|
+
_(subject.valid?).must_equal(false)
|
42
42
|
end
|
43
43
|
|
44
44
|
(987654320..987654329).each do |reserved_ssn|
|
45
45
|
it "rejects reserved ssn such as #{reserved_ssn}" do
|
46
46
|
subject = build_ssn_record({:ssn => "#{reserved_ssn}"}, true)
|
47
|
-
subject.valid
|
47
|
+
_(subject.valid?).must_equal(false)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -53,13 +53,13 @@ describe "SSN validations" do
|
|
53
53
|
it "supports deprecated usa_ssn syntax" do
|
54
54
|
assert_deprecated do
|
55
55
|
subject = build_ssn_record({:ssn => '444556666'}, {:type => :usa_ssn})
|
56
|
-
subject.valid
|
56
|
+
_(subject.valid?).must_equal(true)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
it "accept ssn without type (and use by default 'usa_ssn')" do
|
61
61
|
subject = build_ssn_record({:ssn => '444556666'}, true)
|
62
|
-
subject.valid
|
62
|
+
_(subject.valid?).must_equal(true)
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
@@ -13,16 +13,16 @@ describe "Tracking Number Validation" do
|
|
13
13
|
def assert_valid_tracking_number(carrier_opts, tracking_number, &block)
|
14
14
|
subject = build_tracking_number_record(carrier_opts, &block)
|
15
15
|
subject.tracking_number = tracking_number
|
16
|
-
subject.valid
|
17
|
-
subject.errors.size.must_equal
|
16
|
+
_(subject.valid?).must_equal(true)
|
17
|
+
_(subject.errors.size).must_equal(0)
|
18
18
|
end
|
19
19
|
|
20
20
|
def assert_invalid_tracking_number(carrier_opts, tracking_number, &block)
|
21
21
|
subject = build_tracking_number_record(carrier_opts, &block)
|
22
22
|
subject.tracking_number = tracking_number
|
23
|
-
subject.valid
|
24
|
-
subject.errors.size.must_equal
|
25
|
-
subject.errors[:tracking_number].must_include
|
23
|
+
_(subject.valid?).must_equal(false)
|
24
|
+
_(subject.errors.size).must_equal(1)
|
25
|
+
_(subject.errors[:tracking_number]).must_include(subject.errors.generate_message(:tracking_number, :invalid))
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "when no carrier parameter is given" do
|
@@ -11,84 +11,84 @@ describe "Twitter Validation" do
|
|
11
11
|
|
12
12
|
it "rejects invalid urls" do
|
13
13
|
subject = build_twitter_record true
|
14
|
-
subject.valid
|
15
|
-
subject.errors.size.must_equal
|
14
|
+
_(subject.valid?).must_equal(false)
|
15
|
+
_(subject.errors.size).must_equal(1)
|
16
16
|
end
|
17
17
|
|
18
18
|
it "generates an error message of type blank" do
|
19
19
|
subject = build_twitter_record true
|
20
|
-
subject.valid
|
20
|
+
_(subject.valid?).must_equal(false)
|
21
21
|
|
22
22
|
message = subject.errors.generate_message(:twitter_username, :blank)
|
23
|
-
subject.errors[:twitter_username].include?(message).must_equal
|
23
|
+
_(subject.errors[:twitter_username].include?(message)).must_equal(true)
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "for twitter url validator" do
|
27
27
|
it "validates with http" do
|
28
28
|
subject = build_twitter_record :format => :url
|
29
29
|
subject.twitter_username = 'http://twitter.com/garrettb'
|
30
|
-
subject.valid
|
30
|
+
_(subject.valid?).must_equal(true)
|
31
31
|
end
|
32
32
|
|
33
33
|
it "validates with https protocol" do
|
34
34
|
subject = build_twitter_record :format => :url
|
35
35
|
subject.twitter_username = 'https://twitter.com/garrettb'
|
36
|
-
subject.valid
|
36
|
+
_(subject.valid?).must_equal(true)
|
37
37
|
end
|
38
38
|
|
39
39
|
it "generate error with ftp protocol" do
|
40
40
|
subject = build_twitter_record :format => :url
|
41
41
|
subject.twitter_username = 'ftp://twitter.com/garrettb'
|
42
|
-
subject.valid
|
43
|
-
subject.errors.size.must_equal
|
42
|
+
_(subject.valid?).must_equal(false)
|
43
|
+
_(subject.errors.size).must_equal(1)
|
44
44
|
end
|
45
45
|
|
46
46
|
it "validates with www and http" do
|
47
47
|
subject = build_twitter_record :format => :url
|
48
48
|
subject.twitter_username = 'http://www.twitter.com/garrettb'
|
49
|
-
subject.valid
|
49
|
+
_(subject.valid?).must_equal(true)
|
50
50
|
end
|
51
51
|
|
52
52
|
it "generate error without www dot" do
|
53
53
|
subject = build_twitter_record :format => :url
|
54
54
|
subject.twitter_username = 'http://wwwtwitter.com/garrettb'
|
55
|
-
subject.valid
|
56
|
-
subject.errors.size.must_equal
|
55
|
+
_(subject.valid?).must_equal(false)
|
56
|
+
_(subject.errors.size).must_equal(1)
|
57
57
|
end
|
58
58
|
|
59
59
|
it "generate error without no username" do
|
60
60
|
subject = build_twitter_record :format => :url
|
61
61
|
subject.twitter_username = 'http://twitter.com'
|
62
|
-
subject.valid
|
63
|
-
subject.errors.size.must_equal
|
62
|
+
_(subject.valid?).must_equal(false)
|
63
|
+
_(subject.errors.size).must_equal(1)
|
64
64
|
end
|
65
65
|
|
66
66
|
it "generate error without no username and trailing slash" do
|
67
67
|
subject = build_twitter_record :format => :url
|
68
68
|
subject.twitter_username = 'http://twitter.com/'
|
69
|
-
subject.valid
|
70
|
-
subject.errors.size.must_equal
|
69
|
+
_(subject.valid?).must_equal(false)
|
70
|
+
_(subject.errors.size).must_equal(1)
|
71
71
|
end
|
72
72
|
|
73
73
|
it "generate error with too long of username" do
|
74
74
|
subject = build_twitter_record :format => :url
|
75
75
|
subject.twitter_username = 'http://twitter.com/garrettbjerkhoelwashere'
|
76
|
-
subject.valid
|
77
|
-
subject.errors.size.must_equal
|
76
|
+
_(subject.valid?).must_equal(false)
|
77
|
+
_(subject.errors.size).must_equal(1)
|
78
78
|
end
|
79
79
|
|
80
80
|
it "generate error with invalid character" do
|
81
81
|
subject = build_twitter_record :format => :url
|
82
82
|
subject.twitter_username = 'http://twitter.com/garrettbjerkhoé'
|
83
|
-
subject.valid
|
84
|
-
subject.errors.size.must_equal
|
83
|
+
_(subject.valid?).must_equal(false)
|
84
|
+
_(subject.errors.size).must_equal(1)
|
85
85
|
end
|
86
86
|
|
87
87
|
it "generates error with injected content" do
|
88
88
|
subject = build_twitter_record :format => :url
|
89
89
|
subject.twitter_username = "javascript:alert('xss');\nhttp://twitter.com/garrettbjerkhoelwashere"
|
90
|
-
subject.valid
|
91
|
-
subject.errors.size.must_equal
|
90
|
+
_(subject.valid?).must_equal(false)
|
91
|
+
_(subject.errors.size).must_equal(1)
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
@@ -96,41 +96,41 @@ describe "Twitter Validation" do
|
|
96
96
|
it "validate with valid username" do
|
97
97
|
subject = build_twitter_record :format => :username_with_at
|
98
98
|
subject.twitter_username = '@garrettb'
|
99
|
-
subject.valid
|
99
|
+
_(subject.valid?).must_equal(true)
|
100
100
|
end
|
101
101
|
|
102
102
|
it "validate with one character" do
|
103
103
|
subject = build_twitter_record :format => :username_with_at
|
104
104
|
subject.twitter_username = '@a'
|
105
|
-
subject.valid
|
105
|
+
_(subject.valid?).must_equal(true)
|
106
106
|
end
|
107
107
|
|
108
108
|
it "generate error with too long of username" do
|
109
109
|
subject = build_twitter_record :format => :username_with_at
|
110
110
|
subject.twitter_username = '@garrettbjerkhoelwashere'
|
111
|
-
subject.valid
|
112
|
-
subject.errors.size.must_equal
|
111
|
+
_(subject.valid?).must_equal(false)
|
112
|
+
_(subject.errors.size).must_equal(1)
|
113
113
|
end
|
114
114
|
|
115
115
|
it "generate error with no username" do
|
116
116
|
subject = build_twitter_record :format => :username_with_at
|
117
117
|
subject.twitter_username = '@'
|
118
|
-
subject.valid
|
119
|
-
subject.errors.size.must_equal
|
118
|
+
_(subject.valid?).must_equal(false)
|
119
|
+
_(subject.errors.size).must_equal(1)
|
120
120
|
end
|
121
121
|
|
122
122
|
it "generate error with invalid character" do
|
123
123
|
subject = build_twitter_record :format => :username_with_at
|
124
124
|
subject.twitter_username = '@érik'
|
125
|
-
subject.valid
|
126
|
-
subject.errors.size.must_equal
|
125
|
+
_(subject.valid?).must_equal(false)
|
126
|
+
_(subject.errors.size).must_equal(1)
|
127
127
|
end
|
128
128
|
|
129
129
|
it "generate error with injected content" do
|
130
130
|
subject = build_twitter_record :format => :username_with_at
|
131
131
|
subject.twitter_username = "injected\n@erik"
|
132
|
-
subject.valid
|
133
|
-
subject.errors.size.must_equal
|
132
|
+
_(subject.valid?).must_equal(false)
|
133
|
+
_(subject.errors.size).must_equal(1)
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
@@ -138,48 +138,48 @@ describe "Twitter Validation" do
|
|
138
138
|
it "validate with valid username" do
|
139
139
|
subject = build_twitter_record true
|
140
140
|
subject.twitter_username = 'garrettb'
|
141
|
-
subject.valid
|
141
|
+
_(subject.valid?).must_equal(true)
|
142
142
|
end
|
143
143
|
|
144
144
|
it "validate with one character" do
|
145
145
|
subject = build_twitter_record true
|
146
146
|
subject.twitter_username = 'a'
|
147
|
-
subject.valid
|
147
|
+
_(subject.valid?).must_equal(true)
|
148
148
|
end
|
149
149
|
|
150
150
|
it "generate error with too long of username" do
|
151
151
|
subject = build_twitter_record true
|
152
152
|
subject.twitter_username = 'garrettbjerkhoelwashere'
|
153
|
-
subject.valid
|
154
|
-
subject.errors.size.must_equal
|
153
|
+
_(subject.valid?).must_equal(false)
|
154
|
+
_(subject.errors.size).must_equal(1)
|
155
155
|
end
|
156
156
|
|
157
157
|
it "generate error with no username" do
|
158
158
|
subject = build_twitter_record true
|
159
159
|
subject.twitter_username = ''
|
160
|
-
subject.valid
|
161
|
-
subject.errors.size.must_equal
|
160
|
+
_(subject.valid?).must_equal(false)
|
161
|
+
_(subject.errors.size).must_equal(1)
|
162
162
|
end
|
163
163
|
|
164
164
|
it "generate error with invalid character" do
|
165
165
|
subject = build_twitter_record true
|
166
166
|
subject.twitter_username = 'érik'
|
167
|
-
subject.valid
|
168
|
-
subject.errors.size.must_equal
|
167
|
+
_(subject.valid?).must_equal(false)
|
168
|
+
_(subject.errors.size).must_equal(1)
|
169
169
|
end
|
170
170
|
|
171
171
|
it "generate error with at sign character" do
|
172
172
|
subject = build_twitter_record true
|
173
173
|
subject.twitter_username = '@garrettb'
|
174
|
-
subject.valid
|
175
|
-
subject.errors.size.must_equal
|
174
|
+
_(subject.valid?).must_equal(false)
|
175
|
+
_(subject.errors.size).must_equal(1)
|
176
176
|
end
|
177
177
|
|
178
178
|
it "generate error with at injected data" do
|
179
179
|
subject = build_twitter_record true
|
180
180
|
subject.twitter_username = "something\ngarrettb\nelse"
|
181
|
-
subject.valid
|
182
|
-
subject.errors.size.must_equal
|
181
|
+
_(subject.valid?).must_equal(false)
|
182
|
+
_(subject.errors.size).must_equal(1)
|
183
183
|
end
|
184
184
|
end
|
185
185
|
end
|