Class: Garbanzo::CreditCard

Inherits:
Object
  • Object
show all
Defined in:
lib/garbanzo/credit_card.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(number, exp_month, exp_year, card_validator = ::CreditCardValidator::Validator) ⇒ CreditCard

Returns a new instance of CreditCard.



7
8
9
10
11
12
# File 'lib/garbanzo/credit_card.rb', line 7

def initialize(number, exp_month, exp_year, card_validator = ::CreditCardValidator::Validator)
  @number = number.gsub(/[^\d]/, '')
  @exp_month = exp_month.to_i
  @exp_year = exp_year.to_i
  @card_validator = card_validator
end

Instance Attribute Details

#exp_monthObject

Returns the value of attribute exp_month.



5
6
7
# File 'lib/garbanzo/credit_card.rb', line 5

def exp_month
  @exp_month
end

#exp_yearObject

Returns the value of attribute exp_year.



5
6
7
# File 'lib/garbanzo/credit_card.rb', line 5

def exp_year
  @exp_year
end

#numberObject

Returns the value of attribute number.



5
6
7
# File 'lib/garbanzo/credit_card.rb', line 5

def number
  @number
end

Instance Method Details

#expiration_dateObject



28
29
30
# File 'lib/garbanzo/credit_card.rb', line 28

def expiration_date
  format('%04d-%02d', exp_year, exp_month)
end

#to_hObject



21
22
23
24
25
26
# File 'lib/garbanzo/credit_card.rb', line 21

def to_h
  {
    card_number: number,
    expiration_date: expiration_date
  }
end

#valid?Boolean

TODO: fix this

Returns:

  • (Boolean)


15
16
17
18
19
# File 'lib/garbanzo/credit_card.rb', line 15

def valid?
  exp_month.between?(1, 12) &&
    exp_year >= Date.today.year &&
    card_validator.valid?(number)
end