Class: Netfira::WebConnect::Rails::MockRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/netfira/web_connect/rails/mock_request.rb

Defined Under Namespace

Classes: Response

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version) ⇒ MockRequest



7
8
9
# File 'lib/netfira/web_connect/rails/mock_request.rb', line 7

def initialize(version)
  @version = version
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(sym, *args, &block) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/netfira/web_connect/rails/mock_request.rb', line 25

def method_missing(sym, *args, &block)
  if respond_to_missing?(sym)
    model = get_file_record_class sym.to_s[/^send_(\w+)$/, 1]
    group = model.name.demodulize
    method = -> files { files.each { |file_name, stream| send_file group, file_name, stream } }
    self.class.__send__ :define_method, sym, method
    method.call args.first
  else
    super sym, *args, &block
  end
end

Instance Attribute Details

#responseObject (readonly)

Returns the value of attribute response.



5
6
7
# File 'lib/netfira/web_connect/rails/mock_request.rb', line 5

def response
  @response
end

Instance Method Details

#auth(user, password) ⇒ Object



11
12
13
# File 'lib/netfira/web_connect/rails/mock_request.rb', line 11

def auth(user, password)
  @user, @password = user, password
end

#request(verb, action, path = nil, data = nil) ⇒ Object



45
46
47
48
49
50
# File 'lib/netfira/web_connect/rails/mock_request.rb', line 45

def request(verb, action, path = nil, data = nil)
  data, path = path, nil unless String === path
  env = mock_env(verb, "/#{@version}/#{action}/#{path}", {}, data)
  env.merge!('HTTP_X_SHOP_NAME' => @user, 'HTTP_X_PASSWORD' => @password) if @user && @password
  @response = Response.new(app.call env)
end

#respond_to_missing?(sym) ⇒ Boolean



37
38
39
40
41
42
43
# File 'lib/netfira/web_connect/rails/mock_request.rb', line 37

def respond_to_missing?(sym)
  if sym =~ /^send_(\w+)$/
    !!get_file_record_class($1)
  else
    false
  end
end

#send_file(group, file_name, stream) ⇒ Object



52
53
54
# File 'lib/netfira/web_connect/rails/mock_request.rb', line 52

def send_file(group, file_name, stream)
  request :post, 'files', "#{group}/#{file_name}", stream
end