Skip to content

Commit

Permalink
partially replicate client side tokenizeCard method
Browse files Browse the repository at this point in the history
Stores credit card data identified by the returned "payment method
nonce". Returned value may be used more than once.
  • Loading branch information
wacii committed Jan 22, 2015
1 parent 8c0fa6f commit 797b06e
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 8 deletions.
1 change: 1 addition & 0 deletions lib/fake_braintree.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
require 'fake_braintree/redirect'
require 'fake_braintree/credit_card'
require 'fake_braintree/address'
require 'fake_braintree/payment_method'

require 'fake_braintree/registry'
require 'fake_braintree/server'
Expand Down
9 changes: 9 additions & 0 deletions lib/fake_braintree/payment_method.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module FakeBraintree
class PaymentMethod
def self.tokenize_card(attributes)
token = (Time.now.to_f * 1000).round
FakeBraintree.registry.payment_methods[token] = attributes
token
end
end
end
17 changes: 9 additions & 8 deletions lib/fake_braintree/registry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,17 @@ def initialize
end

attr_accessor :customers,:subscriptions, :failures, :transactions, :redirects,
:credit_cards, :addresses
:credit_cards, :addresses, :payment_methods

def clear!
@addresses = {}
@customers = {}
@subscriptions = {}
@failures = {}
@transactions = {}
@redirects = {}
@credit_cards = {}
@addresses = {}
@customers = {}
@subscriptions = {}
@failures = {}
@transactions = {}
@redirects = {}
@credit_cards = {}
@payment_methods = {}
end

def failure?(card_number)
Expand Down
14 changes: 14 additions & 0 deletions spec/fake_braintree/payment_method_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,17 @@ def token_for(month, year)
expect { Braintree::PaymentMethod.update('foo', number: TEST_CC_NUMBER) }.to raise_error(Braintree::NotFoundError)
end
end

describe 'FakeBraintree::PaymentMethod.tokenize_card' do
it 'stores provided payment data in the registry' do
FakeBraintree::PaymentMethod.tokenize_card number: '4111111111111111'
first_payment_method = FakeBraintree.registry.payment_methods.values[0]
expect(first_payment_method[:number]).to eq '4111111111111111'
end

it 'returns key to payment data' do
nonce = FakeBraintree::PaymentMethod.tokenize_card number: '4111111111111111'
payment_methods = FakeBraintree.registry.payment_methods
expect(payment_methods[nonce][:number]).to eq '4111111111111111'
end
end

0 comments on commit 797b06e

Please sign in to comment.