Class: Webrat::Form

Inherits:
Element show all
Defined in:
lib/webrat/core/elements/form.rb

Overview

:nodoc:

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Element

#initialize, #inspect, load, load_all, #path

Constructor Details

This class inherits a constructor from Webrat::Element

Instance Attribute Details

#elementObject (readonly)

Returns the value of attribute element.



9
10
11
# File 'lib/webrat/core/elements/form.rb', line 9

def element
  @element
end

Class Method Details

.parse_rails_request_params(query_string) ⇒ Object



117
118
119
120
121
122
123
124
125
# File 'lib/webrat/core/elements/form.rb', line 117

def self.parse_rails_request_params(query_string)
  if defined?(ActionController::AbstractRequest)
    ActionController::AbstractRequest.parse_query_parameters(query_string)
  elsif defined?(ActionController::UrlEncodedPairParser)
    ActionController::UrlEncodedPairParser.parse_query_parameters(query_string)
  else
    Rack::Utils.parse_nested_query(query_string)
  end
end

.query_string_to_params(query_string) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/webrat/core/elements/form.rb', line 104

def self.query_string_to_params(query_string)
  case Webrat.configuration.mode
  when :rails
    parse_rails_request_params(query_string)
  when :merb
    ::Merb::Parse.query(query_string)
  when :rack, :sinatra
    Rack::Utils.parse_nested_query(query_string)
  else
    query_string.split('&').map {|query| { query.split('=', 2).first => query.split('=', 2).last }}
  end
end

.replace_param_value(params, oval, nval) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/webrat/core/elements/form.rb', line 69

def self.replace_param_value(params, oval, nval)
  output = Hash.new
  params.each do |key, value|
    case value
    when Hash
      value = replace_param_value(value, oval, nval)
    when Array
      value = value.map { |o| o == oval ? nval : ( o.is_a?(Hash) ? replace_param_value(o, oval, nval) : o) }
    when oval
      value = nval
    end
    output[key] = value
  end
  output
end

.replace_params_values(params, values) ⇒ Object



85
86
87
88
89
90
# File 'lib/webrat/core/elements/form.rb', line 85

def self.replace_params_values(params, values)
  values.each do |key, value|
    params = replace_param_value(params, key, value)
  end
  params
end

.unescape_params(params) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
# File 'lib/webrat/core/elements/form.rb', line 92

def self.unescape_params(params)
  case params.class.name
  when 'Hash', 'Mash'
    params.each { |key,value| params[key] = unescape_params(value) }
    params
  when 'Array'
    params.collect { |value| unescape_params(value) }
  else
    params.is_a?(String) ? CGI.unescapeHTML(params) : params
  end
end

.xpath_searchObject



11
12
13
# File 'lib/webrat/core/elements/form.rb', line 11

def self.xpath_search
  [".//form"]
end

Instance Method Details

#field_named(name, *field_types) ⇒ Object



23
24
25
# File 'lib/webrat/core/elements/form.rb', line 23

def field_named(name, *field_types)
  Webrat::Locators::FieldNamedLocator.new(@session, dom, name, *field_types).locate
end

#fieldsObject



15
16
17
# File 'lib/webrat/core/elements/form.rb', line 15

def fields
  @fields ||= Field.load_all(@session, @element)
end

#submitObject



19
20
21
# File 'lib/webrat/core/elements/form.rb', line 19

def submit
  @session.request_page(form_action, form_method, params)
end