Module: Poisol::RequestBodyBuilder

Included in:
StubClassBuilder
Defined in:
lib/poisol/stub/request/request_body_builder.rb

Instance Method Summary collapse

Instance Method Details

#generate_method_to_alter_request_array_objectObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/poisol/stub/request/request_body_builder.rb', line 20

def generate_method_to_alter_request_array_object
  @request_array_item.each do |field|
    field_name = field[0]
    actual_field_value = field[1]
    is_array = (actual_field_value.class.to_s == "Array")
    actual_field_value = actual_field_value[0] if is_array
    method_name = is_array ? ("having_#{field_name.classify.underscore}") : ("having_#{field_name.underscore}")
    define_method(method_name) do |*input_value|
      input_value = input_value[0]
      assignment_value = get_assignment_value actual_field_value,input_value
      @request.body.last[field_name] = is_array ? (@request.body.last[field_name] << assignment_value) :  assignment_value
      self
    end
  end
end

#generate_method_to_alter_request_field(field_name, actual_field_value) ⇒ Object



102
103
104
105
106
107
108
109
110
# File 'lib/poisol/stub/request/request_body_builder.rb', line 102

def generate_method_to_alter_request_field field_name,actual_field_value
  method_name = "by_#{field_name.underscore}"
  define_method(method_name) do |*input_value|
    input_value = input_value[0]
    assignment_value = get_assignment_value actual_field_value,input_value
    @request.body[field_name] = assignment_value
    self
  end
end

#generate_method_to_alter_request_field_array(field_name, actual_field_values) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/poisol/stub/request/request_body_builder.rb', line 77

def generate_method_to_alter_request_field_array field_name,actual_field_values
  actual_field_value = actual_field_values[0] 
  method_name = "by_#{field_name.classify.underscore}" 
  define_method(method_name) do |*input_value|
    input_value = input_value[0]
    assignment_value = get_assignment_value actual_field_value,input_value
    @request.body[field_name] =  [assignment_value]
    self
  end

  method_name = "by_another_#{field_name.classify.underscore}" 
  define_method(method_name) do |*input_value|
    input_value = input_value[0]
    assignment_value = get_assignment_value actual_field_value,input_value
    @request.body[field_name] =  @request.body[field_name] << assignment_value 
    self
  end

  method_name = "by_no_#{field_name.classify.underscore}" 
  define_method(method_name) do 
    @request.body[field_name] = [] 
    self
  end
end

#generate_method_to_append_request_arrayObject



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/poisol/stub/request/request_body_builder.rb', line 36

def generate_method_to_append_request_array
  class_name = self.name.classify.underscore
  method_name = "by_#{class_name}"
  define_method(method_name) do |*input_value|
    if input_value.blank?
      @request.body << stub_config.request.body.deep_dup 
    else
      input = JSON.parse(input_value[0].to_json)
      @request.body << (stub_config.request.body.deep_dup).deep_merge!(input_value[0].stringify_keys)
    end
    self
  end
end

#generate_method_to_append_request_array_as_hash_paramsObject



50
51
52
53
54
55
56
57
58
59
60
# File 'lib/poisol/stub/request/request_body_builder.rb', line 50

def generate_method_to_append_request_array_as_hash_params
  class_name = self.name.underscore
  method_name = "by_#{class_name}"
  define_method(method_name) do |*input_value|
    input_hashes = input_value[0]
    input_hashes.each do |input_hash|
      @request.body << (stub_config.request.body.deep_dup).deep_merge!(input_hash.stringify_keys)
    end
    self
  end
end

#generate_methods_to_alter_request_arrayObject



13
14
15
16
17
18
# File 'lib/poisol/stub/request/request_body_builder.rb', line 13

def generate_methods_to_alter_request_array
  @request_array_item = @stub_config.request.body
  generate_method_to_append_request_array
  generate_method_to_append_request_array_as_hash_params
  generate_method_to_alter_request_array_object
end

#generate_methods_to_alter_request_objectObject



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/poisol/stub/request/request_body_builder.rb', line 63

def generate_methods_to_alter_request_object
  request_body = @stub_config.request.body.clone
  request_body.each do |field|
    field_name = field[0]
    actual_field_value = field[1]
    is_array = (actual_field_value.class.to_s == "Array")
    if is_array 
      generate_method_to_alter_request_field_array field_name,actual_field_value
    else 
      generate_method_to_alter_request_field field_name,actual_field_value
    end
  end
end

#prepare_request_bodyObject



4
5
6
7
8
9
10
11
# File 'lib/poisol/stub/request/request_body_builder.rb', line 4

def prepare_request_body
  return if @stub_config.request.body.blank?
  if  @stub_config.request.is_column_array or @stub_config.request.is_row_array 
    generate_methods_to_alter_request_array
  else
    generate_methods_to_alter_request_object 
  end
end