module StripeMock::RequestHandlers::Refunds
Public Class Methods
included(klass)
click to toggle source
# File lib/stripe_mock/request_handlers/refunds.rb, line 5 def Refunds.included(klass) klass.add_handler 'post /v1/refunds', :new_refund klass.add_handler 'get /v1/refunds', :get_refunds klass.add_handler 'get /v1/refunds/(.*)', :get_refund klass.add_handler 'post /v1/refunds/(.*)', :update_refund end
Public Instance Methods
get_refund(route, method_url, params, headers)
click to toggle source
# File lib/stripe_mock/request_handlers/refunds.rb, line 68 def get_refund(route, method_url, params, headers) route =~ method_url refund_id = $1 || params[:refund] assert_existence :refund, refund_id, refunds[refund_id] end
get_refunds(route, method_url, params, headers)
click to toggle source
# File lib/stripe_mock/request_handlers/refunds.rb, line 59 def get_refunds(route, method_url, params, headers) params[:offset] ||= 0 params[:limit] ||= 10 clone = refunds.clone Data.mock_list_object(clone.values, params) end
new_refund(route, method_url, params, headers)
click to toggle source
# File lib/stripe_mock/request_handlers/refunds.rb, line 12 def new_refund(route, method_url, params, headers) if headers && headers[:idempotency_key] params[:idempotency_key] = headers[:idempotency_key] if refunds.any? original_refund = refunds.values.find { |c| c[:idempotency_key] == headers[:idempotency_key]} return refunds[original_refund[:id]] if original_refund end end charge = assert_existence :charge, params[:charge], charges[params[:charge]] params[:amount] ||= charge[:amount] id = new_id('re') bal_trans_params = { amount: params[:amount] * -1, source: id, type: 'refund' } balance_transaction_id = new_balance_transaction('txn', bal_trans_params) refund = Data.mock_refund params.merge( :balance_transaction => balance_transaction_id, :id => id, :charge => charge[:id], ) add_refund_to_charge(refund, charge) refunds[id] = refund if params[:expand] == ['balance_transaction'] refunds[id][:balance_transaction] = balance_transactions[balance_transaction_id] end refund end
update_refund(route, method_url, params, headers)
click to toggle source
# File lib/stripe_mock/request_handlers/refunds.rb, line 45 def update_refund(route, method_url, params, headers) route =~ method_url id = $1 refund = assert_existence :refund, id, refunds[id] allowed = allowed_refund_params(params) disallowed = params.keys - allowed if disallowed.count > 0 raise Stripe::InvalidRequestError.new("Received unknown parameters: #{disallowed.join(', ')}" , '', http_status: 400) end refunds[id] = Util.rmerge(refund, params) end
Private Instance Methods
allowed_refund_params(params)
click to toggle source
# File lib/stripe_mock/request_handlers/refunds.rb, line 86 def allowed_refund_params(params) [:metadata] end
ensure_refund_required_params(params)
click to toggle source
# File lib/stripe_mock/request_handlers/refunds.rb, line 76 def ensure_refund_required_params(params) if non_integer_charge_amount?(params) raise Stripe::InvalidRequestError.new("Invalid integer: #{params[:amount]}", 'amount', http_status: 400) elsif non_positive_charge_amount?(params) raise Stripe::InvalidRequestError.new('Invalid positive integer', 'amount', http_status: 400) elsif params[:charge].nil? raise Stripe::InvalidRequestError.new('Must provide the identifier of the charge to refund.', nil) end end