Class: Vantiv::TestCard

Inherits:
Object
  • Object
show all
Defined in:
lib/vantiv/test_card.rb

Defined Under Namespace

Classes: CardNotFound

Constant Summary collapse

CARDS =
[
  {
    access_method_name: "valid_account",
    attrs: {
      card_number: "4457010000000009",
      expiry_month: "01",
      expiry_year: "16",
      cvv: "349",
      mocked_sandbox_payment_account_id: "1111111111110009",
      network: "VI"
    }
  },
  {
    access_method_name: "invalid_card_number",
    attrs: {
      card_number: "4457010010900010",
      expiry_month: "01",
      expiry_year: "16",
      cvv: "349",
      mocked_sandbox_payment_account_id: nil,
      network: "VI"
    }
  },
  {
    access_method_name: "invalid_account_number",
    attrs: {
      card_number: "5112001600000006",
      expiry_month: "01",
      expiry_year: "20",
      cvv: "349",
      mocked_sandbox_payment_account_id: "1111111111130006",
      network: "MC"
    }
  },
  {
    access_method_name: "insufficient_funds",
    attrs: {
      card_number: "4457002100000005",
      expiry_month: "01",
      expiry_year: "20",
      cvv: "349",
      mocked_sandbox_payment_account_id: "1111111111120005",
      network: "VI"
    }
  },
  {
    access_method_name: "expired_card",
    attrs: {
      card_number: "5112001900000003",
      expiry_month: "01",
      expiry_year: "20",
      cvv: "349",
      mocked_sandbox_payment_account_id: "1111111111140003",
      network: "MC"
    }
  },
  {
    access_method_name: "account_updater",
    attrs: {
      card_number: "4457000300000007",
      expiry_month: "01",
      expiry_year: "15",
      cvv: "123",
      mocked_sandbox_payment_account_id: "1111111111120007",
      network: "VI"
    }
  },
  {
    access_method_name: "account_updater_account_closed",
    attrs: {
      card_number: "5112000101110009",
      expiry_month: "11",
      expiry_year: "99",
      cvv: "123",
      mocked_sandbox_payment_account_id: "1111111111160009",
      network: "MC"
    }
  },
  {
    access_method_name: "account_updater_contact_cardholder",
    attrs: {
      card_number: "4457000301100004",
      expiry_month: "11",
      expiry_year: "99",
      cvv: "123",
      mocked_sandbox_payment_account_id: "1111111111130004",
      network: "VI"
    }
  },
]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(card_number:, expiry_month:, expiry_year:, cvv:, mocked_sandbox_payment_account_id:, network:, name:) ⇒ TestCard

Returns a new instance of TestCard.



125
126
127
128
129
130
131
132
133
# File 'lib/vantiv/test_card.rb', line 125

def initialize(card_number:, expiry_month:, expiry_year:, cvv:, mocked_sandbox_payment_account_id:, network:, name:)
  @card_number = card_number
  @expiry_month = expiry_month
  @expiry_year = expiry_year
  @cvv = cvv
   = 
  @network = network
  @name = name
end

Instance Attribute Details

#card_numberObject (readonly)

Returns the value of attribute card_number.



123
124
125
# File 'lib/vantiv/test_card.rb', line 123

def card_number
  @card_number
end

#cvvObject (readonly)

Returns the value of attribute cvv.



123
124
125
# File 'lib/vantiv/test_card.rb', line 123

def cvv
  @cvv
end

#expiry_monthObject (readonly)

Returns the value of attribute expiry_month.



123
124
125
# File 'lib/vantiv/test_card.rb', line 123

def expiry_month
  @expiry_month
end

#expiry_yearObject (readonly)

Returns the value of attribute expiry_year.



123
124
125
# File 'lib/vantiv/test_card.rb', line 123

def expiry_year
  @expiry_year
end

#mocked_sandbox_payment_account_idObject (readonly)

Returns the value of attribute mocked_sandbox_payment_account_id.



123
124
125
# File 'lib/vantiv/test_card.rb', line 123

def 
  
end

#nameObject (readonly)

Returns the value of attribute name.



123
124
125
# File 'lib/vantiv/test_card.rb', line 123

def name
  @name
end

#networkObject (readonly)

Returns the value of attribute network.



123
124
125
# File 'lib/vantiv/test_card.rb', line 123

def network
  @network
end

Class Method Details

.allObject



95
96
97
98
99
# File 'lib/vantiv/test_card.rb', line 95

def self.all
  CARDS.map do |raw_card|
    new(raw_card[:attrs].merge(name: raw_card[:access_method_name]))
  end
end

.find(card_number) ⇒ Object

Raises:



107
108
109
110
111
112
113
# File 'lib/vantiv/test_card.rb', line 107

def self.find(card_number)
  card = CARDS.find do |card_data|
    card_data[:attrs][:card_number] == card_number
  end
  raise CardNotFound.new("No card with account number #{card_number}") unless card
  new(card[:attrs].merge(name: card[:access_method_name]))
end

.find_by_payment_account_id(payment_account_id) ⇒ Object

Raises:



115
116
117
118
119
120
121
# File 'lib/vantiv/test_card.rb', line 115

def self.()
  card = CARDS.find do |card_data|
    card_data[:attrs][:mocked_sandbox_payment_account_id] == 
  end
  raise CardNotFound.new("No card with mocked sandbox payment account id #{payment_account_id}") unless card
  new(card[:attrs].merge(name: card[:access_method_name]))
end

Instance Method Details

#!=(other_object) ⇒ Object



143
144
145
# File 'lib/vantiv/test_card.rb', line 143

def !=(other_object)
  !(self == other_object)
end

#==(other_object) ⇒ Object



135
136
137
138
139
140
141
# File 'lib/vantiv/test_card.rb', line 135

def ==(other_object)
  if other_object.is_a?(TestCard)
    name == other_object.name
  else
    super
  end
end

#tokenizable?Boolean

Returns:

  • (Boolean)


147
148
149
# File 'lib/vantiv/test_card.rb', line 147

def tokenizable?
  self != TestCard.invalid_card_number
end