Module: StripeMock::RequestHandlers::Charges

Included in:
Instance
Defined in:
lib/stripe_mock/request_handlers/charges.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/stripe_mock/request_handlers/charges.rb', line 5

def Charges.included(klass)
  klass.add_handler 'post /v1/charges',               :new_charge
  klass.add_handler 'get /v1/charges',                :get_charges
  klass.add_handler 'get /v1/charges/(.*)',           :get_charge
  klass.add_handler 'post /v1/charges/(.*)/capture',  :capture_charge
  klass.add_handler 'post /v1/charges/(.*)/refund',   :refund_charge
  klass.add_handler 'post /v1/charges/(.*)/refunds',  :create_refund
end

Instance Method Details

#capture_charge(route, method_url, params, headers) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/stripe_mock/request_handlers/charges.rb', line 44

def capture_charge(route, method_url, params, headers)
  route =~ method_url
  charge = assert_existance :charge, $1, charges[$1]

  if params[:amount]
    refund = Data.mock_refund(
      :balance_transaction => new_balance_transaction('txn'),
      :id => new_id('re'),
      :amount => charge[:amount] - params[:amount]
    )
    add_refund_to_charge(refund, charge)
  end

  charge[:captured] = true
  charge
end

#create_refund(route, method_url, params, headers) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
# File 'lib/stripe_mock/request_handlers/charges.rb', line 72

def create_refund(route, method_url, params, headers)
  charge = get_charge(route, method_url, params, headers)

  refund = Data.mock_refund params.merge(
    :balance_transaction => new_balance_transaction('txn'),
    :id => new_id('re'),
    :charge => charge[:id]
  )
  add_refund_to_charge(refund, charge)
  refund
end

#get_charge(route, method_url, params, headers) ⇒ Object



39
40
41
42
# File 'lib/stripe_mock/request_handlers/charges.rb', line 39

def get_charge(route, method_url, params, headers)
  route =~ method_url
  assert_existance :charge, $1, charges[$1]
end

#get_charges(route, method_url, params, headers) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/stripe_mock/request_handlers/charges.rb', line 26

def get_charges(route, method_url, params, headers)
  params[:offset] ||= 0
  params[:count] ||= 10

  clone = charges.clone

  if params[:customer]
    clone.delete_if { |k,v| v[:customer] != params[:customer] }
  end

  clone.values[params[:offset], params[:count]]
end

#new_charge(route, method_url, params, headers) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/stripe_mock/request_handlers/charges.rb', line 14

def new_charge(route, method_url, params, headers)
  id = new_id('ch')

  if params[:card] && params[:card].is_a?(String)
    params[:card] = get_card_by_token(params[:card])
  elsif params[:card] && params[:card][:id]
    raise Stripe::InvalidRequestError.new("Invalid token id: #{params[:card]}", 'card', 400)
  end

  charges[id] = Data.mock_charge(params.merge :id => id, :balance_transaction => new_balance_transaction('txn'))
end

#refund_charge(route, method_url, params, headers) ⇒ Object



61
62
63
64
65
66
67
68
69
70
# File 'lib/stripe_mock/request_handlers/charges.rb', line 61

def refund_charge(route, method_url, params, headers)
  charge = get_charge(route, method_url, params, headers)

  refund = Data.mock_refund params.merge(
    :balance_transaction => new_balance_transaction('txn'),
    :id => new_id('re')
  )
  add_refund_to_charge(refund, charge)
  charge
end