Skip to content

Commit

Permalink
Refactor Faker::IDNumber to Faker::IdNumber to be more consistent…
Browse files Browse the repository at this point in the history
… with other generator's naming convention. (#2858)

* Deprecate IDNumber to IdNumber per issue#2787

* wip

* Add a Faker::Deprecator module

Co-authored-by: Thiago Araujo <thd.araujo@gmail.com>

* Add more specs and improve warning message

---------

Co-authored-by: jamal.mohamed <jamal.mohamed@covermymeds.com>
Co-authored-by: Stefanni Brasil <stefannibrasil@gmail.com>
Co-authored-by: Thiago Araujo <thd.araujo@gmail.com>
  • Loading branch information
4 people committed Feb 25, 2024
1 parent 3f7371e commit f586da7
Show file tree
Hide file tree
Showing 13 changed files with 464 additions and 79 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
- [Faker::Hipster](doc/default/hipster.md)
- [Faker::Hobby](doc/default/hobby.md)
- [Faker::House](doc/default/house.md)
- [Faker::IDNumber](doc/default/id_number.md)
- [Faker::IdNumber](doc/default/id_number.md)
- [Faker::IndustrySegments](doc/default/industry_segments.md)
- [Faker::Internet](doc/default/internet.md)
- [Faker::Invoice](doc/default/invoice.md)
Expand Down
40 changes: 20 additions & 20 deletions doc/default/id_number.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
# Faker::IDNumber
# Faker::IdNumber

```ruby
# Generate a valid US Social Security number
Faker::IDNumber.valid #=> "552-56-3593"
Faker::IdNumber.valid #=> "552-56-3593"

# Generate an invalid US Social Security number
Faker::IDNumber.invalid #=> "311-72-0000"
Faker::IdNumber.invalid #=> "311-72-0000"

# Generate a Spanish citizen identifier (DNI)
Faker::IDNumber.spanish_citizen_number #=> "53290236-H"
Faker::IdNumber.spanish_citizen_number #=> "53290236-H"

# Generate a Spanish foreign born citizen identifier (NIE)
Faker::IDNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"
Faker::IdNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"

# Generate a valid South African ID Number
Faker::IDNumber.south_african_id_number #=> "8105128870184"
Faker::IdNumber.south_african_id_number #=> "8105128870184"
# or
Faker::IDNumber.valid_south_african_id_number #=> "8105128870184"
Faker::IdNumber.valid_south_african_id_number #=> "8105128870184"

# Generate an invalid South African ID Number
Faker::IDNumber.invalid_south_african_id_number #=> "1642972065088"
Faker::IdNumber.invalid_south_african_id_number #=> "1642972065088"

# Generate a Brazilian citizen number (CPF)
# Keyword arguments: formatted
Faker::IDNumber.brazilian_citizen_number #=> "53540542221"
Faker::IDNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"
Faker::IdNumber.brazilian_citizen_number #=> "53540542221"
Faker::IdNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"

# Generate a Brazilian ID Number (RG)
# Keyword arguments: formatted
Faker::IDNumber.brazilian_id #=> "493054029"
Faker::IDNumber.brazilian_id(formatted: true) #=> "49.305.402-9"
Faker::IdNumber.brazilian_id #=> "493054029"
Faker::IdNumber.brazilian_id(formatted: true) #=> "49.305.402-9"

# Generate a Chilean ID (Rut with 8 digits)
# For more advanced cases, please refer to Faker::ChileRut
Faker::IDNumber.chilean_id #=> "15620613-K"
Faker::IdNumber.chilean_id #=> "15620613-K"

# Generate a Croatian ID number (OIB)
# Keyword arguments: international
Faker::IDNumber.croatian_id #=> "88467617508"
Faker::IDNumber.croatian_id(international: true) #=> "HR88467617508"
Faker::IdNumber.croatian_id #=> "88467617508"
Faker::IdNumber.croatian_id(international: true) #=> "HR88467617508"

# Generate a Danish ID number (CPR)
# Keyword arguments: formatted, gender, birthday
Faker::IDNumber.danish_id_number #=> "050390-9980"
Faker::IDNumber.danish_id_number(formatted: true) #=> "050390-9980"
Faker::IDNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "050390-9980"
Faker::IDNumber.danish_id_number(gender: :female) #=> "050390-9980"
Faker::IdNumber.danish_id_number #=> "050390-9980"
Faker::IdNumber.danish_id_number(formatted: true) #=> "050390-9980"
Faker::IdNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "050390-9980"
Faker::IdNumber.danish_id_number(gender: :female) #=> "050390-9980"

# Generate a valid French Social Security number (INSEE number)
Faker::IDNumber.french_insee_number #=> "22510589696868"
Faker::IdNumber.french_insee_number #=> "22510589696868"
```
43 changes: 23 additions & 20 deletions lib/faker/default/id_number.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module Faker
class IDNumber < Base
class IdNumber < Base
CHECKS = 'TRWAGMYFPDXBNJZSQVHLCKE'
INVALID_SSN = [
/0{3}-\d{2}-\d{4}/,
Expand All @@ -25,7 +25,7 @@ class << self
# @return [String]
#
# @example
# Faker::IDNumber.valid #=> "552-56-3593"
# Faker::IdNumber.valid #=> "552-56-3593"
#
# @faker.version 1.6.0
def valid
Expand All @@ -38,7 +38,7 @@ def valid
# @return [String]
#
# @example
# Faker::IDNumber.invalid #=> "311-72-0000"
# Faker::IdNumber.invalid #=> "311-72-0000"
#
# @faker.version 1.6.0
def invalid
Expand Down Expand Up @@ -71,7 +71,7 @@ def ssn_valid
# @return [String]
#
# @example
# Faker::IDNumber.spanish_citizen_number #=> "53290236-H"
# Faker::IdNumber.spanish_citizen_number #=> "53290236-H"
#
# @faker.version 1.9.0
def spanish_citizen_number
Expand All @@ -87,7 +87,7 @@ def spanish_citizen_number
# @return [String]
#
# @example
# Faker::IDNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"
# Faker::IdNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"
#
# @faker.version 1.9.0
def spanish_foreign_citizen_number
Expand All @@ -106,8 +106,8 @@ def spanish_foreign_citizen_number
# @return [String]
#
# @example
# Faker::IDNumber.south_african_id_number #=> "8105128870184"
# Faker::IDNumber.valid_south_african_id_number #=> "8105128870184"
# Faker::IdNumber.south_african_id_number #=> "8105128870184"
# Faker::IdNumber.valid_south_african_id_number #=> "8105128870184"
#
# @faker.version 1.9.2
def valid_south_african_id_number
Expand All @@ -129,7 +129,7 @@ def valid_south_african_id_number
# @return [String]
#
# @example
# Faker::IDNumber.invalid_south_african_id_number #=> "1642972065088"
# Faker::IdNumber.invalid_south_african_id_number #=> "1642972065088"
#
# @faker.version 1.9.2
def invalid_south_african_id_number
Expand All @@ -156,8 +156,8 @@ def invalid_south_african_id_number
# @return [String]
#
# @example
# Faker::IDNumber.brazilian_citizen_number #=> "53540542221"
# Faker::IDNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"
# Faker::IdNumber.brazilian_citizen_number #=> "53540542221"
# Faker::IdNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"
#
# @faker.version 1.9.2
def brazilian_citizen_number(formatted: false)
Expand All @@ -177,8 +177,8 @@ def brazilian_citizen_number(formatted: false)
# @return [String]
#
# @example
# Faker::IDNumber.brazilian_id #=> "493054029"
# Faker::IDNumber.brazilian_id(formatted: true) #=> "49.305.402-9"
# Faker::IdNumber.brazilian_id #=> "493054029"
# Faker::IdNumber.brazilian_id(formatted: true) #=> "49.305.402-9"
#
# @faker.version 2.1.2
def brazilian_id(formatted: false)
Expand All @@ -196,7 +196,7 @@ def brazilian_id(formatted: false)
# @return [String]
#
# @example
# Faker::IDNumber.chilean_id #=> "15620613-K"
# Faker::IdNumber.chilean_id #=> "15620613-K"
#
# @faker.version 2.1.2
def chilean_id
Expand All @@ -213,8 +213,8 @@ def chilean_id
# @return [String]
#
# @example
# Faker::IDNumber.croatian_id #=> "88467617508"
# Faker::IDNumber.croatian_id(international: true) #=> "HR88467617508"
# Faker::IdNumber.croatian_id #=> "88467617508"
# Faker::IdNumber.croatian_id(international: true) #=> "HR88467617508"
#
# @faker.version next
def croatian_id(international: false)
Expand All @@ -238,10 +238,10 @@ def croatian_id(international: false)
# @return [String]
#
# @example
# Faker::IDNumber.danish_id_number #=> "0503909980"
# Faker::IDNumber.danish_id_number(formatted: true) #=> "050390-9980"
# Faker::IDNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "0503909980"
# Faker::IDNumber.danish_id_number(gender: :female) #=> "0503909980"
# Faker::IdNumber.danish_id_number #=> "0503909980"
# Faker::IdNumber.danish_id_number(formatted: true) #=> "050390-9980"
# Faker::IdNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "0503909980"
# Faker::IdNumber.danish_id_number(gender: :female) #=> "0503909980"
#
# @faker.version next
def danish_id_number(formatted: false, birthday: Faker::Date.birthday, gender: nil)
Expand Down Expand Up @@ -275,7 +275,7 @@ def danish_id_number(formatted: false, birthday: Faker::Date.birthday, gender: n
# @return [String]
#
# @example
# Faker::IDNumber.french_insee_number #=> "53290236-H"
# Faker::IdNumber.french_insee_number #=> "53290236-H"
#
# @faker.version next
def french_insee_number
Expand Down Expand Up @@ -421,4 +421,7 @@ def _translate(key)
end
end
end

include Faker::Deprecator
deprecate_generator('IDNumber', IdNumber)
end
6 changes: 3 additions & 3 deletions lib/faker/default/south_africa.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class << self
#
# @faker.version 1.9.2
def id_number
Faker::IDNumber.south_african_id_number
Faker::IdNumber.south_african_id_number
end

##
Expand All @@ -26,7 +26,7 @@ def id_number
#
# @faker.version 1.9.2
def valid_id_number
Faker::IDNumber.valid_south_african_id_number
Faker::IdNumber.valid_south_african_id_number
end

##
Expand All @@ -39,7 +39,7 @@ def valid_id_number
#
# @faker.version 1.9.2
def invalid_id_number
Faker::IDNumber.invalid_south_african_id_number
Faker::IdNumber.invalid_south_african_id_number
end

##
Expand Down
30 changes: 30 additions & 0 deletions lib/helpers/deprecator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# frozen_string_literal: true

# Based on Rails ActiveSupport Deprecator
# https://github.com/rails/rails/blob/6f0d1ad14b92b9f5906e44740fce8b4f1c7075dc/activesupport/lib/active_support/deprecation/constant_accessor.rb

# rubocop:disable Style/ClassVars
module Faker
module Deprecator
def self.included(base)
extension = Module.new do
def const_missing(missing_const_name)
if class_variable_defined?(:@@_deprecated_constants) && (replacement = class_variable_get(:@@_deprecated_constants)[missing_const_name.to_s])
$stdout.puts("DEPRECATION WARNING: #{name}::#{replacement[:old_generator]} is deprecated. Use #{replacement[:new_constant]} instead.")
return replacement[:new_constant]
end

super
end

def deprecate_generator(old_generator_name, new_generator_constant)
class_variable_set(:@@_deprecated_constants, {}) unless class_variable_defined?(:@@_deprecated_constants)
class_variable_get(:@@_deprecated_constants)[old_generator_name] = { new_constant: new_generator_constant, old_generator: old_generator_name }
end
end

base.singleton_class.prepend extension
end
end
end
# rubocop:enable Style/ClassVars
2 changes: 1 addition & 1 deletion lib/locales/en-US.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6960,7 +6960,7 @@ en-US:
- "#{PhoneNumber.area_code}-#{PhoneNumber.exchange_code}-#{PhoneNumber.subscriber_number}"
- "#{PhoneNumber.area_code}.#{PhoneNumber.exchange_code}.#{PhoneNumber.subscriber_number}"
id_number:
valid: "#{IDNumber.ssn_valid}"
valid: "#{IdNumber.ssn_valid}"
invalid:
- 000-##-####
- "###-00-####"
Expand Down
2 changes: 1 addition & 1 deletion lib/locales/en/id_number.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
en:
faker:
id_number:
valid: "#{IDNumber.ssn_valid}"
valid: "#{IdNumber.ssn_valid}"
invalid: ['000-##-####', '###-00-####', '###-##-0000', '666-##-####', '9##-##-####']

0 comments on commit f586da7

Please sign in to comment.