Module: Spec::ControllerExecution::InstanceMethods

Defined in:
lib/controller_mixin.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#controllerObject (readonly)

Returns the value of attribute controller.



27
28
29
# File 'lib/controller_mixin.rb', line 27

def controller
  @controller
end

#requestObject (readonly)

Returns the value of attribute request.



27
28
29
# File 'lib/controller_mixin.rb', line 27

def request
  @request
end

#responseObject (readonly)

Returns the value of attribute response.



27
28
29
# File 'lib/controller_mixin.rb', line 27

def response
  @response
end

Instance Method Details

#assigns(key = nil) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/controller_mixin.rb', line 61

def assigns(key = nil) 
  if key.nil? 
    @response.template.assigns 
  else 
    @response.template.assigns[key.to_s] 
  end 
end

#delete(action, parameters = nil) ⇒ Object

Performs a DELETE request on action with params.



124
125
126
127
# File 'lib/controller_mixin.rb', line 124

def delete(action, parameters = nil)
  @request.env['REQUEST_METHOD'] = 'DELETE'
  process action, parameters
end

#get(action, parameters = nil) ⇒ Object

Performs a GET request on action with params.



92
93
94
95
# File 'lib/controller_mixin.rb', line 92

def get(action, parameters = nil)
  @request.env['REQUEST_METHOD'] = 'GET'
  process action, parameters
end

#head(action, parameters = nil) ⇒ Object

Performs a HEAD request on action with params.



100
101
102
103
# File 'lib/controller_mixin.rb', line 100

def head(action, parameters = nil)
  @request.env['REQUEST_METHOD'] = 'HEAD'
  process action, parameters
end

#post(action, parameters = nil) ⇒ Object

Performs a POST request on action with params.



108
109
110
111
# File 'lib/controller_mixin.rb', line 108

def post(action, parameters = nil)
  @request.env['REQUEST_METHOD'] = 'POST'
  process action, parameters
end

#process(action, parameters = nil) ⇒ Object

Excutes the request action with params.

See also: get, post, put, delete, head, xml_http_request



74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/controller_mixin.rb', line 74

def process(action, parameters = nil)
  parameters ||= {}

  @request.recycle!
  @request.env['REQUEST_METHOD'] ||= 'GET'
  @request.action = action.to_s

  @request.assign_parameters @controller_class.controller_path, action.to_s,
                             parameters

  build_request_uri action, parameters

  @controller.process @request, @response
end

#put(action, parameters = nil) ⇒ Object

Performs a PUT request on action with params.



116
117
118
119
# File 'lib/controller_mixin.rb', line 116

def put(action, parameters = nil)
  @request.env['REQUEST_METHOD'] = 'PUT'
  process action, parameters
end

#setup_with_controller(controller_name = nil) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/controller_mixin.rb', line 29

def setup_with_controller(controller_name=nil)
  return unless controller_name

  @controller_class = "#{controller_name}_controller".camelize.constantize

  #@controller_class = Object.path2class @controller_class_name
  raise "Can't determine controller class for #{self.class}" if @controller_class.nil?

  @controller = @controller_class.new

  @session = ActionController::TestSession.new

  @flash = ActionController::Flash::FlashHash.new
  @session['flash'] = @flash

  @request = ActionController::TestRequest.new
  @request.session = @session

  @response = ActionController::TestResponse.new
  @controller_class.send(:define_method, :rescue_action) { |e| raise e }

  @deliveries = []
  ActionMailer::Base.deliveries = @deliveries

  # used by util_audit_assert_assigns
  @assigns_asserted = []
  @assigns_ignored ||= [] # untested assigns to ignore
end

#teardown_with_controllerObject



58
59
# File 'lib/controller_mixin.rb', line 58

def teardown_with_controller
end

#xml_attrs(xpath) ⇒ Object



137
138
139
# File 'lib/controller_mixin.rb', line 137

def xml_attrs(xpath)
  xml_document.elements.to_a(xpath).first.attributes
end

#xml_documentObject



129
130
131
# File 'lib/controller_mixin.rb', line 129

def xml_document
  @xml_document ||= REXML::Document.new(@response.body)
end

#xml_tags(xpath) ⇒ Object



133
134
135
# File 'lib/controller_mixin.rb', line 133

def xml_tags(xpath)
  xml_document.elements.to_a(xpath)
end

#xml_text(xpath) ⇒ Object



141
142
143
# File 'lib/controller_mixin.rb', line 141

def xml_text(xpath)
  xml_document.elements.to_a(xpath).first.text.to_s
end