common_numbers_rails 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +11 -2
- data/lib/common_numbers_rails/nip_validator.rb +18 -1
- data/lib/common_numbers_rails/pesel_validator.rb +18 -1
- data/lib/common_numbers_rails/regon_validator.rb +17 -0
- data/lib/common_numbers_rails/version.rb +1 -1
- data/spec/nip_validator_spec.rb +50 -9
- data/spec/pesel_validator_spec.rb +54 -9
- data/spec/regon_validator_spec.rb +48 -9
- metadata +1 -1
data/README.markdown
CHANGED
@@ -24,12 +24,21 @@ For standalone model use [common_numbers](http://github.com/marioosh/common_numb
|
|
24
24
|
For ActiveRecord Models:
|
25
25
|
|
26
26
|
class Item < ActiveRecord::Base
|
27
|
-
validates :nip, :
|
27
|
+
validates :nip, :nip => true
|
28
|
+
validates :pesel, :pesel => true
|
29
|
+
validates :regon, :regon => true
|
28
30
|
end
|
29
31
|
|
32
|
+
You can also use helpers:
|
33
|
+
|
34
|
+
class Item < ActiveRecord::Base
|
35
|
+
validates_pesel_of :pesel_field
|
36
|
+
validates_pesel_of :pesel_field, :message => "Our custom message"
|
37
|
+
end
|
38
|
+
|
39
|
+
|
30
40
|
###TODO:
|
31
41
|
|
32
|
-
- I18n messages
|
33
42
|
- validators for other numbers
|
34
43
|
|
35
44
|
|
@@ -4,7 +4,24 @@ require 'active_model'
|
|
4
4
|
class NipValidator < ActiveModel::EachValidator
|
5
5
|
|
6
6
|
def validate_each(record, attribute, value)
|
7
|
-
|
7
|
+
@message = options[:message] || "invalid format"
|
8
|
+
record.errors[attribute] << @message unless CommonNumbers::Polish::Nip.new(value).valid?
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
module ActiveModel
|
14
|
+
|
15
|
+
module Validations
|
16
|
+
|
17
|
+
module HelperMethods
|
18
|
+
|
19
|
+
def validates_nip_of(*attr_names)
|
20
|
+
validates_with NipValidator, _merge_attributes(attr_names)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
8
25
|
end
|
9
26
|
|
10
27
|
end
|
@@ -4,7 +4,24 @@ require 'active_model'
|
|
4
4
|
class PeselValidator < ActiveModel::EachValidator
|
5
5
|
|
6
6
|
def validate_each(record, attribute, value)
|
7
|
-
|
7
|
+
@message = options[:message] || "invalid format"
|
8
|
+
record.errors.add(attribute, @message) unless CommonNumbers::Polish::Pesel.new(value).valid?
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
module ActiveModel
|
14
|
+
|
15
|
+
module Validations
|
16
|
+
|
17
|
+
module HelperMethods
|
18
|
+
|
19
|
+
def validates_pesel_of(*attr_names)
|
20
|
+
validates_with PeselValidator, _merge_attributes(attr_names)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
8
25
|
end
|
9
26
|
|
10
27
|
end
|
@@ -4,7 +4,24 @@ require 'active_model'
|
|
4
4
|
class RegonValidator < ActiveModel::EachValidator
|
5
5
|
|
6
6
|
def validate_each(record, attribute, value)
|
7
|
+
@message = options[:message] || "invalid format"
|
7
8
|
record.errors[attribute] << "invalid format" unless CommonNumbers::Polish::Regon.new(value).valid?
|
8
9
|
end
|
9
10
|
|
10
11
|
end
|
12
|
+
|
13
|
+
module ActiveModel
|
14
|
+
|
15
|
+
module Validations
|
16
|
+
|
17
|
+
module HelperMethods
|
18
|
+
|
19
|
+
def validates_regon_of(*attr_names)
|
20
|
+
validates_with RegonValidator, _merge_attributes(attr_names)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/spec/nip_validator_spec.rb
CHANGED
@@ -5,25 +5,66 @@ require 'active_model'
|
|
5
5
|
class BasicNipModel
|
6
6
|
include ActiveModel::Validations
|
7
7
|
|
8
|
-
attr_accessor :nip
|
8
|
+
attr_accessor :nip, :nip2
|
9
9
|
|
10
10
|
validates :nip, :presence => true, :nip => true
|
11
|
+
|
12
|
+
validates_nip_of :nip2
|
11
13
|
end
|
12
14
|
|
13
15
|
|
14
16
|
describe "NipValidator" do
|
15
17
|
before(:each) do
|
18
|
+
@valid_nip = "123-456-32-18"
|
19
|
+
@invalid_nip = "123-456-32-12"
|
20
|
+
|
16
21
|
@model = BasicNipModel.new
|
22
|
+
|
17
23
|
end
|
18
24
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
25
|
+
describe "with nip1" do
|
26
|
+
before(:each) do
|
27
|
+
@model.nip2 = @valid_nip
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should be valid" do
|
31
|
+
@model.should_not be_valid
|
32
|
+
@model.nip = @valid_nip
|
33
|
+
@model.should be_valid
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should be invalid" do
|
37
|
+
@model.nip = @invalid_nip
|
38
|
+
@model.should_not be_valid
|
39
|
+
end
|
23
40
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
41
|
+
|
42
|
+
describe "with nip2" do
|
43
|
+
before(:each) do
|
44
|
+
@model.nip = @valid_nip
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should be valid" do
|
48
|
+
@model.should be_invalid
|
49
|
+
@model.nip2 = @valid_nip
|
50
|
+
@model.should be_valid
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should be invalid when nil" do
|
54
|
+
@model.nip2 = nil
|
55
|
+
@model.should be_invalid
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should be invalid when empty" do
|
59
|
+
@model.nip2 = ""
|
60
|
+
@model.should be_invalid
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should be invalid when invalid NIP" do
|
64
|
+
@model.nip2 = @invalid_nip
|
65
|
+
@model.should be_invalid
|
66
|
+
end
|
67
|
+
|
28
68
|
end
|
69
|
+
|
29
70
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'spec_helper'
|
2
3
|
require 'rspec'
|
3
4
|
require 'active_model'
|
@@ -5,25 +6,69 @@ require 'active_model'
|
|
5
6
|
class BasicPeselModel
|
6
7
|
include ActiveModel::Validations
|
7
8
|
|
8
|
-
attr_accessor :pesel
|
9
|
+
attr_accessor :pesel, :pesel2
|
9
10
|
|
10
11
|
validates :pesel, :presence => true, :pesel => true
|
12
|
+
|
13
|
+
validates_pesel_of :pesel2
|
14
|
+
|
11
15
|
end
|
12
16
|
|
13
17
|
|
14
18
|
describe "PeselValidator" do
|
15
19
|
before(:each) do
|
20
|
+
@valid_pesel = "44051401359"
|
21
|
+
@invalid_pesel = "44051401353"
|
22
|
+
|
16
23
|
@model = BasicPeselModel.new
|
24
|
+
|
17
25
|
end
|
26
|
+
describe "with pesel" do
|
18
27
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
28
|
+
before(:each) do
|
29
|
+
@model.pesel2 = @valid_pesel
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should be valid" do
|
33
|
+
@model.should_not be_valid
|
34
|
+
@model.pesel = @valid_pesel
|
35
|
+
@model.should be_valid
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should be invalid" do
|
39
|
+
@model.pesel = @invalid_pesel
|
40
|
+
@model.should_not be_valid
|
41
|
+
end
|
23
42
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
43
|
+
|
44
|
+
describe "with pesel2" do
|
45
|
+
before(:each) do
|
46
|
+
@model.pesel = @valid_pesel
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should be valid" do
|
50
|
+
@model.should be_invalid
|
51
|
+
@model.pesel2 = @valid_pesel
|
52
|
+
@model.should be_valid
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should be invalid when nil" do
|
56
|
+
@model.pesel2 = nil
|
57
|
+
@model.should be_invalid
|
58
|
+
end
|
59
|
+
it "should be invalid when empty" do
|
60
|
+
@model.pesel2 = ""
|
61
|
+
@model.should be_invalid
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should be invalid when invalid number" do
|
65
|
+
@model.pesel2 = @invalid_pesel
|
66
|
+
@model.should be_invalid
|
67
|
+
end
|
68
|
+
|
69
|
+
|
28
70
|
end
|
71
|
+
|
72
|
+
|
29
73
|
end
|
74
|
+
|
@@ -5,25 +5,64 @@ require 'active_model'
|
|
5
5
|
class BasicRegonModel
|
6
6
|
include ActiveModel::Validations
|
7
7
|
|
8
|
-
attr_accessor :regon
|
8
|
+
attr_accessor :regon, :regon2
|
9
9
|
|
10
10
|
validates :regon, :presence => true, :regon => true
|
11
|
+
|
12
|
+
validates_regon_of :regon2
|
11
13
|
end
|
12
14
|
|
13
15
|
|
14
16
|
describe "RegonValidator" do
|
15
17
|
before(:each) do
|
18
|
+
@valid_regon = "192598184"
|
19
|
+
@invalid_regon = "192598134"
|
20
|
+
|
16
21
|
@model = BasicRegonModel.new
|
17
22
|
end
|
18
23
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
24
|
+
describe "with regon 1" do
|
25
|
+
before(:each) do
|
26
|
+
@model.regon2 = @valid_regon
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should be valid" do
|
30
|
+
@model.should_not be_valid
|
31
|
+
@model.regon = @valid_regon
|
32
|
+
@model.should be_valid
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should be invalid" do
|
36
|
+
@model.regon = @invalid_regon
|
37
|
+
@model.should_not be_valid
|
38
|
+
end
|
23
39
|
end
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
40
|
+
|
41
|
+
describe "with regon 2" do
|
42
|
+
before(:each) do
|
43
|
+
@model.regon = @valid_regon
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should be valid" do
|
47
|
+
@model.should be_invalid
|
48
|
+
@model.regon2 = @valid_regon
|
49
|
+
@model.should be_valid
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should be invalid when nil" do
|
53
|
+
@model.regon2 = nil
|
54
|
+
@model.should be_invalid
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should be invalid when empty" do
|
58
|
+
@model.regon2 == ""
|
59
|
+
@model.should be_invalid
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should be invalid when invalid regon" do
|
63
|
+
@model.regon2 == @invalid_regon
|
64
|
+
@model.should be_invalid
|
65
|
+
end
|
66
|
+
|
28
67
|
end
|
29
68
|
end
|