class AAMVA::Factory

Public Class Methods

build(type, options = {}) click to toggle source
# File lib/aamva/factory.rb, line 5
def self.build(type, options = {})
  if respond_to?(type)
    send(type, options)
  else
    raise "Unsupported Factory Type: #{type}"
  end
end

Private Class Methods

city(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 94
def self.city(options = {})
  defaults = {
    'value' => Faker::Address.city
  }

  string(defaults.merge(options))
end
customer_id_number(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 64
def self.customer_id_number(options = {})
  defaults = {
    'value' => random_string(25)
  }

  string(defaults.merge(options))
end
date(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 86
def self.date(options = {})
  Faker::Date.backward.strftime(DATE_FORMATS[:usa])
end
endorsement_codes(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 90
def self.endorsement_codes(options = {})
  UPPER_ALPHA_CHARACTERS.sample(5).join('')
end
enum(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 15
def self.enum(options = {})
  options.fetch("values").sample
end
first_name(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 78
def self.first_name(options = {})
  defaults = {
    'value' => Faker::Name.first_name
  }

  string(defaults.merge(options))
end
height(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 72
def self.height(options = {})
  height = ('000'..'999').to_a.sample

  "#{height} #{LENGTH_UNITS.first}"
end
last_name(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 48
def self.last_name(options = {})
  defaults = {
    'value' => Faker::Name.last_name
  }

  string(defaults.merge(options))
end
postal_code(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 56
def self.postal_code(options = {})
  defaults = {
    'value' => random_string(11)
  }

  string(defaults.merge(options))
end
random_string(length) click to toggle source
# File lib/aamva/factory.rb, line 116
def self.random_string(length)
  chars = ('A'..'Z').to_a + ('0'..'9').to_a

  chars.sample(length).join('')
end
range(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 19
def self.range(options = {})
  (options.fetch('start')..options.fetch('end')).to_a.sample
end
restriction_codes(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 32
def self.restriction_codes(options = {})
  defaults = {
    'value' => UPPER_ALPHA_CHARACTERS.sample(12).join('')
  }

  string(defaults.merge(options))
end
state(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 102
def self.state(options = {})
  defaults = {
    'value' => Faker::Address.state_abbr
  }

  string(defaults.merge(options))
end
street_address(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 40
def self.street_address(options = {})
  defaults = {
    'value' => Faker::Address.street_address
  }

  string(defaults.merge(options))
end
string(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 23
def self.string(options = {})
  value = options.fetch('value') do
    random_string(options['truncate']['length'])
  end
  value = Utils.truncate(value, options['truncate']) if options.key?('truncate')

  value
end
vehicle_class(options = {}) click to toggle source
# File lib/aamva/factory.rb, line 110
def self.vehicle_class(options = {})
  chars = ('A'..'Z').to_a + ('0'..'9').to_a

  chars.sample(6).join('')
end