Class: StripeMock::Instance

Inherits:
Object
  • Object
show all
Includes:
RequestHandlers::Charges, RequestHandlers::Customers, RequestHandlers::InvoiceItems, RequestHandlers::Plans
Defined in:
lib/stripe_mock/instance.rb

Constant Summary collapse

@@handlers =

Handlers are ordered by priority

[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from RequestHandlers::Plans

#get_plan, included, #list_plans, #new_plan, #update_plan

Methods included from RequestHandlers::InvoiceItems

included, #new_invoice_item

Methods included from RequestHandlers::Customers

#cancel_subscription, #get_customer, included, #list_customers, #new_customer, #update_customer, #update_subscription

Methods included from RequestHandlers::Charges

#get_charge, included, #new_charge

Constructor Details

#initializeInstance



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

def initialize
  @customers = {}
  @charges = {}
  @plans = {}

  @id_counter = 0
  @error_queue = ErrorQueue.new
  @debug = false
  @strict = true
end

Instance Attribute Details

#chargesObject (readonly)

Returns the value of attribute charges.



24
25
26
# File 'lib/stripe_mock/instance.rb', line 24

def charges
  @charges
end

#customersObject (readonly)

Returns the value of attribute customers.



24
25
26
# File 'lib/stripe_mock/instance.rb', line 24

def customers
  @customers
end

#debugObject

Returns the value of attribute debug.



25
26
27
# File 'lib/stripe_mock/instance.rb', line 25

def debug
  @debug
end

#error_queueObject (readonly)

Returns the value of attribute error_queue.



24
25
26
# File 'lib/stripe_mock/instance.rb', line 24

def error_queue
  @error_queue
end

#plansObject (readonly)

Returns the value of attribute plans.



24
25
26
# File 'lib/stripe_mock/instance.rb', line 24

def plans
  @plans
end

#strictObject

Returns the value of attribute strict.



25
26
27
# File 'lib/stripe_mock/instance.rb', line 25

def strict
  @strict
end

Class Method Details

.add_handler(route, name) ⇒ Object



7
8
9
10
11
12
# File 'lib/stripe_mock/instance.rb', line 7

def self.add_handler(route, name)
  @@handlers << {
    :route => %r{^#{route}$},
    :name => name
  }
end

.handler_for_method_url(method_url) ⇒ Object



14
15
16
# File 'lib/stripe_mock/instance.rb', line 14

def self.handler_for_method_url(method_url)
  @@handlers.find {|h| method_url =~ h[:route] }
end

Instance Method Details

#mock_request(method, url, api_key, params = {}, headers = {}) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/stripe_mock/instance.rb', line 38

def mock_request(method, url, api_key, params={}, headers={})
  return {} if method == :xtest

  # Ensure params hash has symbols as keys
  params = Stripe::Util.symbolize_names(params)

  if @debug == true
    puts "[StripeMock req] #{method} #{url}"
    puts "                 #{params}"
  end

  method_url = "#{method} #{url}"
  handler = Instance.handler_for_method_url(method_url)
  mock_error = @error_queue.error_for_handler_name(handler[:name])

  if handler && mock_error
    @error_queue.dequeue
    raise mock_error
  elsif handler
    res = self.send(handler[:name], handler[:route], method_url, params, headers)
    puts "[StripeMock res] #{res}" if @debug == true
    [res, api_key]
  else
    puts "WARNING: Unrecognized method + url: [#{method} #{url}]"
    puts " params: #{params}"
    [{}, api_key]
  end
end