activevalidators 5.1.0 → 6.0.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 +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
|