-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Spanish citizen id and docs (#1147)
* update rake * add id_number docs * add tests for ssn * add failing tests for spanish IDs * add spanish citizen ids for issue #872 * cleanup comments * give spanish_citizen_number correct checksum * add validation checksum to Spanish NIE * convert asserts into asert_equals * replacing string concatenation with interpolation * Minor changes * Run rubocop and fix lint
- Loading branch information
1 parent
cc15d17
commit 2b7c10b
Showing
5 changed files
with
95 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,25 @@ | ||
Metrics/LineLength: | ||
|
||
Lint/AmbiguousBlockAssociation: | ||
Enabled: false | ||
Metrics/MethodLength: | ||
Lint/UnifiedInteger: | ||
Enabled: false | ||
Metrics/ClassLength: | ||
|
||
Metrics/AbcSize: | ||
Enabled: false | ||
Metrics/BlockLength: | ||
Enabled: false | ||
Metrics/AbcSize: | ||
Enabled: false | ||
Metrics/PerceivedComplexity: | ||
Metrics/ClassLength: | ||
Enabled: false | ||
Metrics/CyclomaticComplexity: | ||
Enabled: false | ||
Style/Documentation: | ||
Metrics/LineLength: | ||
Enabled: false | ||
Metrics/MethodLength: | ||
Enabled: false | ||
Metrics/PerceivedComplexity: | ||
Enabled: false | ||
|
||
Style/DateTime: | ||
Enabled: false | ||
Lint/UnifiedInteger: | ||
Style/Documentation: | ||
Enabled: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Faker::IDNumber | ||
|
||
```ruby | ||
# Generate a valid US Social Security number | ||
Faker::IDNumber.valid #=> "552-56-3593" | ||
|
||
# Generate an invalid US Social Security number | ||
Faker::IDNumber.invalid #=> "311-72-0000" | ||
|
||
# Generate a Spanish citizen identifier (DNI) | ||
Faker::IDNumber.spanish_citizen_number | ||
|
||
# Generate a Spanish foreign born citizen identifier (NIE) | ||
Faker::IDNumber.spanish_foreign_citizen_number | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb') | ||
|
||
class TestFakerIdNumber < Test::Unit::TestCase | ||
def setup | ||
@tester = Faker::IDNumber | ||
end | ||
|
||
def test_valid_ssn | ||
sample = @tester.valid | ||
assert sample.length == 11 | ||
assert_equal '-', sample[3] | ||
assert_equal '-', sample[6] | ||
assert sample[0..2].split.map { :to_i }.all? { :is_digit? } | ||
assert sample[4..5].split.map { :to_i }.all? { :is_digit? } | ||
assert sample[7..9].split.map { :to_i }.all? { :is_digit? } | ||
end | ||
|
||
def test_invalid_ssn | ||
sample = @tester.invalid | ||
assert sample.length == 11 | ||
assert_equal '-', sample[3] | ||
assert_equal '-', sample[6] | ||
assert sample[0..2].split.map { :to_i }.all? { :is_digit? } | ||
assert sample[4..5].split.map { :to_i }.all? { :is_digit? } | ||
assert sample[7..9].split.map { :to_i }.all? { :is_digit? } | ||
end | ||
|
||
def test_spanish_dni | ||
sample = @tester.spanish_citizen_number | ||
assert_equal 10, sample.length | ||
assert sample[0..7].split.map { :to_i }.all? { :is_digit? } | ||
assert_equal sample[8], '-' | ||
mod = sample[0..7].to_i % 23 | ||
assert_equal Faker::IDNumber::CHECKS[mod], sample[9] | ||
end | ||
|
||
def test_spanish_nie | ||
sample = @tester.spanish_foreign_citizen_number | ||
assert_equal 11, sample.length | ||
assert 'XYZ'.include?(sample[0]) | ||
assert_equal '-', sample[1] | ||
assert sample[2..8].split.map { :to_i }.all? { :is_digit? } | ||
assert_equal '-', sample[9] | ||
prefix = 'XYZ'.index(sample[0]).to_s | ||
mod = "#{prefix}#{sample[2..8]}".to_i % 23 | ||
assert_equal Faker::IDNumber::CHECKS[mod], sample[10] | ||
end | ||
end |