poisol 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/poisol/domain.rb +13 -11
  3. data/lib/poisol/server.rb +45 -37
  4. data/lib/poisol/stub/request/query_builder.rb +3 -1
  5. data/lib/poisol/stub/request/request_body_builder.rb +89 -87
  6. data/lib/poisol/stub/request/url_builder.rb +15 -12
  7. data/lib/poisol/stub/response/array_response_body.rb +75 -0
  8. data/lib/poisol/stub/response/response_body_builder.rb +49 -116
  9. data/lib/poisol/stub/response/status_builder.rb +2 -0
  10. data/lib/poisol/stub/stub.rb +22 -21
  11. data/lib/poisol/stub/stub_class_builder.rb +24 -23
  12. data/lib/poisol/stub/stub_instance.rb +62 -44
  13. data/lib/poisol/stub/webrick_stub_builder.rb +34 -32
  14. data/lib/poisol/stub_config/stub_config.rb +10 -8
  15. data/lib/poisol/stub_config/stub_config_builder.rb +91 -89
  16. data/lib/poisol/stub_factory.rb +39 -38
  17. data/lib/poisol/stub_mapper/request_matcher.rb +68 -0
  18. data/lib/poisol/stub_mapper/response_mapper.rb +33 -0
  19. data/lib/poisol/stub_mapper/stubs.rb +27 -0
  20. data/spec/functional/key_value/explicit_inclusion_spec.rb +15 -1
  21. data/spec/functional/key_value/implicit_inclusion_spec.rb +1 -1
  22. data/spec/functional/multi_domain_spec.rb +1 -1
  23. data/spec/functional/post_request_spec.rb +1 -2
  24. data/spec/functional/query/query_explicit_spec.rb +1 -1
  25. data/spec/functional/query/query_implicit_spec.rb +1 -1
  26. data/spec/functional/response/array_spec.rb +14 -7
  27. data/spec/functional/response/dumb_response_spec.rb +1 -1
  28. data/spec/functional/response/hash_params_spec.rb +1 -1
  29. data/spec/functional/response/nested_array_spec.rb +2 -2
  30. data/spec/functional/url_spec.rb +1 -1
  31. data/spec/spec_helper.rb +0 -1
  32. metadata +5 -3
  33. data/lib/poisol/response_mapper.rb +0 -31
  34. data/lib/poisol/stubs.rb +0 -74
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 792f598402da3cf3e020eda9cbd549ae4a580557
4
- data.tar.gz: 043b756d73700adc34239e7224c88fb674069af4
3
+ metadata.gz: 2e1cd1ceb6ee666315fd0d1205ec3e6340f3cbfa
4
+ data.tar.gz: ca968b177598825a8ded4b7bafd87d8e988f3807
5
5
  SHA512:
6
- metadata.gz: 3d754abd04577b373ad452161bab9337b5ef51a7fd90bc41d2c5c114400d83fd1bf651698a696678a0459397982298f13d756521e9df377d28578f4256719204
7
- data.tar.gz: 0cfc85a52f8894577c12487610452e87542a53c74c2f43445f82ba47bcca3372b9957c273be187c7dc55b3e7246c6c9bbddb8d164b59bf1c5500272b0ba241ad
6
+ metadata.gz: 30aad4d3e9f02dc9abf814101422a153b08bf245b0e12612d746d610ef666a028b87f92d6553d847826aa11ab17f61b80f2405e4197e45df57d8e45b9ddf2008
7
+ data.tar.gz: 19defa95fed165a05a64a0911a66c454459aec4f00b1ebd30ed4c003612e74d262a167dbb770b558cc1051ac71dda2d290966d32a50df047b70180f1dbc515c4
data/lib/poisol/domain.rb CHANGED
@@ -1,15 +1,17 @@
1
- class Domain
2
- attr_reader :file,:full_url
1
+ module Poisol
2
+ class Domain
3
+ attr_reader :file,:full_url
3
4
 
4
- def initialize domain_config_file
5
- @file = domain_config_file
6
- path = ""
7
- if File.exists? @file
8
- base_hash = Parse.yaml_file @file
9
- sub_domain = base_hash["sub_domain"]
10
- path = "/#{sub_domain}" if sub_domain.present?
5
+ def initialize domain_config_file
6
+ @file = domain_config_file
7
+ path = ""
8
+ if File.exists? @file
9
+ base_hash = Parse.yaml_file @file
10
+ sub_domain = base_hash["sub_domain"]
11
+ path = "/#{sub_domain}" if sub_domain.present?
12
+ end
13
+ @full_url = "#{Server.base_url}#{ path.present? ? path: ''}"
11
14
  end
12
- @full_url = "#{Server.base_url}#{ path.present? ? path: ''}"
13
- end
14
15
 
16
+ end
15
17
  end
data/lib/poisol/server.rb CHANGED
@@ -1,46 +1,54 @@
1
- module Server
2
- extend self
3
-
4
- def start port
5
- require 'webrick'
6
- @server = WEBrick::HTTPServer.new :Port => port, :Logger => log, :AccessLog => access_log
7
- @port = port
8
- attach_shutdown
9
- attach_request_handling
10
- Thread.new{@server.start}
11
- end
1
+ module Poisol
2
+ module Server
3
+ extend self
4
+
5
+ def start port
6
+ PoisolLog.info "Starting server... as http://localhost:#{port}"
7
+ require 'webrick'
8
+ @server = WEBrick::HTTPServer.new :Port => port, :Logger => log, :AccessLog => access_log
9
+ @port = port
10
+ attach_shutdown
11
+ attach_request_handling
12
+ Thread.new{@server.start}
13
+ PoisolLog.info "Server Started at http://localhost:#{port}"
14
+ end
12
15
 
13
- def base_url
14
- "http://localhost:#{@port}"
15
- end
16
+ def base_url
17
+ "http://localhost:#{@port}"
18
+ end
16
19
 
17
- def attach_request_handling
18
- @server.mount_proc '/' do |req, res|
19
- stub_response = ResponseMapper.map(req)
20
- res.status = stub_response.status
21
- res.body = stub_response.body.to_json
22
- res.content_type = 'application/json'
20
+ def attach_request_handling
21
+ @server.mount_proc '/' do |req, res|
22
+ stub_response = ResponseMapper.map(req)
23
+ res.status = stub_response.status
24
+ res.body = stub_response.body.to_json
25
+ res.content_type = 'application/json'
26
+ end
23
27
  end
24
- end
25
28
 
26
- def attach_shutdown
27
- trap 'INT' do @server.shutdown end
28
- end
29
+ def attach_shutdown
30
+ trap 'INT' do @server.shutdown end
31
+ end
29
32
 
30
- def log
31
- log_file = File.open 'log/poisol_webrick.log', 'a+'
32
- WEBrick::Log.new log_file
33
- end
33
+ def log
34
+ FileUtils.mkdir_p "log" unless File.exists?("log")
35
+ log_file = File.open 'log/poisol_webrick.log', 'a+'
36
+ WEBrick::Log.new log_file
37
+ end
34
38
 
35
- def access_log
36
- log_file = File.open 'log/poisol_webrick.log', 'a+'
37
- [
38
- [log_file, WEBrick::AccessLog::COMBINED_LOG_FORMAT],
39
- ]
40
- end
39
+ def access_log
40
+ log_file = File.open 'log/poisol_webrick.log', 'a+'
41
+ [
42
+ [log_file, WEBrick::AccessLog::COMBINED_LOG_FORMAT],
43
+ ]
44
+ end
41
45
 
42
- def stop
43
- @server.shutdown
44
- end
46
+ def stop
47
+ if @server.present?
48
+ @server.shutdown
49
+ PoisolLog.info "Server is shutdown"
50
+ end
51
+ end
45
52
 
53
+ end
46
54
  end
@@ -1,4 +1,5 @@
1
- module QueryBuilder
1
+ module Poisol
2
+ module QueryBuilder
2
3
  def generate_query_methods
3
4
  query = @stub_config.request.query
4
5
  query.each do |field|
@@ -9,4 +10,5 @@ module QueryBuilder
9
10
  end
10
11
  end
11
12
  end
13
+ end
12
14
  end
@@ -1,112 +1,114 @@
1
- module RequestBodyBuilder
1
+ module Poisol
2
+ module RequestBodyBuilder
2
3
 
3
- def prepare_request_body
4
- return if @stub_config.request.body.blank?
5
- if @stub_config.request.is_column_array or @stub_config.request.is_row_array
6
- generate_methods_to_alter_request_array
7
- else
8
- generate_methods_to_alter_request_object
4
+ def prepare_request_body
5
+ return if @stub_config.request.body.blank?
6
+ if @stub_config.request.is_column_array or @stub_config.request.is_row_array
7
+ generate_methods_to_alter_request_array
8
+ else
9
+ generate_methods_to_alter_request_object
10
+ end
9
11
  end
10
- end
11
12
 
12
- def generate_methods_to_alter_request_array
13
- @request_array_item = @stub_config.request.body
14
- generate_method_to_append_request_array
15
- generate_method_to_append_request_array_as_hash_params
16
- generate_method_to_alter_request_array_object
17
- end
13
+ def generate_methods_to_alter_request_array
14
+ @request_array_item = @stub_config.request.body
15
+ generate_method_to_append_request_array
16
+ generate_method_to_append_request_array_as_hash_params
17
+ generate_method_to_alter_request_array_object
18
+ end
18
19
 
19
- def generate_method_to_alter_request_array_object
20
- @request_array_item.each do |field|
21
- field_name = field[0]
22
- actual_field_value = field[1]
23
- is_array = (actual_field_value.class.to_s == "Array")
24
- actual_field_value = actual_field_value[0] if is_array
25
- method_name = is_array ? ("having_#{field_name.classify.underscore}") : ("having_#{field_name.underscore}")
26
- define_method(method_name) do |*input_value|
27
- input_value = input_value[0]
28
- assignment_value = get_assignment_value actual_field_value,input_value
29
- @request.body.last[field_name] = is_array ? (@request.body.last[field_name] << assignment_value) : assignment_value
30
- self
20
+ def generate_method_to_alter_request_array_object
21
+ @request_array_item.each do |field|
22
+ field_name = field[0]
23
+ actual_field_value = field[1]
24
+ is_array = (actual_field_value.class.to_s == "Array")
25
+ actual_field_value = actual_field_value[0] if is_array
26
+ method_name = is_array ? ("having_#{field_name.classify.underscore}") : ("having_#{field_name.underscore}")
27
+ define_method(method_name) do |*input_value|
28
+ input_value = input_value[0]
29
+ assignment_value = get_assignment_value actual_field_value,input_value
30
+ @request.body.last[field_name] = is_array ? (@request.body.last[field_name] << assignment_value) : assignment_value
31
+ self
32
+ end
31
33
  end
32
34
  end
33
- end
34
35
 
35
- def generate_method_to_append_request_array
36
- class_name = self.name.classify.underscore
37
- method_name = "by_#{class_name}"
38
- define_method(method_name) do |*input_value|
39
- if input_value.blank?
40
- @request.body << stub_config.request.body.deep_dup
41
- else
42
- input = JSON.parse(input_value[0].to_json)
43
- @request.body << (stub_config.request.body.deep_dup).deep_merge!(input_value[0].stringify_keys)
36
+ def generate_method_to_append_request_array
37
+ class_name = self.name.classify.underscore
38
+ method_name = "by_#{class_name}"
39
+ define_method(method_name) do |*input_value|
40
+ if input_value.blank?
41
+ @request.body << stub_config.request.body.deep_dup
42
+ else
43
+ input = JSON.parse(input_value[0].to_json)
44
+ @request.body << (stub_config.request.body.deep_dup).deep_merge!(input_value[0].stringify_keys)
45
+ end
46
+ self
44
47
  end
45
- self
46
48
  end
47
- end
48
49
 
49
- def generate_method_to_append_request_array_as_hash_params
50
- class_name = self.name.underscore
51
- method_name = "by_#{class_name}"
52
- define_method(method_name) do |*input_value|
53
- input_hashes = input_value[0]
54
- input_hashes.each do |input_hash|
55
- @request.body << (stub_config.request.body.deep_dup).deep_merge!(input_hash.stringify_keys)
50
+ def generate_method_to_append_request_array_as_hash_params
51
+ class_name = self.name.underscore
52
+ method_name = "by_#{class_name}"
53
+ define_method(method_name) do |*input_value|
54
+ input_hashes = input_value[0]
55
+ input_hashes.each do |input_hash|
56
+ @request.body << (stub_config.request.body.deep_dup).deep_merge!(input_hash.stringify_keys)
57
+ end
58
+ self
56
59
  end
57
- self
58
60
  end
59
- end
60
61
 
61
62
 
62
- def generate_methods_to_alter_request_object
63
- request_body = @stub_config.request.body.clone
64
- request_body.each do |field|
65
- field_name = field[0]
66
- actual_field_value = field[1]
67
- is_array = (actual_field_value.class.to_s == "Array")
68
- if is_array
69
- generate_method_to_alter_request_field_array field_name,actual_field_value
70
- else
71
- generate_method_to_alter_request_field field_name,actual_field_value
63
+ def generate_methods_to_alter_request_object
64
+ request_body = @stub_config.request.body.clone
65
+ request_body.each do |field|
66
+ field_name = field[0]
67
+ actual_field_value = field[1]
68
+ is_array = (actual_field_value.class.to_s == "Array")
69
+ if is_array
70
+ generate_method_to_alter_request_field_array field_name,actual_field_value
71
+ else
72
+ generate_method_to_alter_request_field field_name,actual_field_value
73
+ end
72
74
  end
73
75
  end
74
- end
75
76
 
76
- def generate_method_to_alter_request_field_array field_name,actual_field_values
77
- actual_field_value = actual_field_values[0]
78
- method_name = "by_#{field_name.classify.underscore}"
79
- define_method(method_name) do |*input_value|
80
- input_value = input_value[0]
81
- assignment_value = get_assignment_value actual_field_value,input_value
82
- @request.body[field_name] = [assignment_value]
83
- self
84
- end
77
+ def generate_method_to_alter_request_field_array field_name,actual_field_values
78
+ actual_field_value = actual_field_values[0]
79
+ method_name = "by_#{field_name.classify.underscore}"
80
+ define_method(method_name) do |*input_value|
81
+ input_value = input_value[0]
82
+ assignment_value = get_assignment_value actual_field_value,input_value
83
+ @request.body[field_name] = [assignment_value]
84
+ self
85
+ end
85
86
 
86
- method_name = "by_another_#{field_name.classify.underscore}"
87
- define_method(method_name) do |*input_value|
88
- input_value = input_value[0]
89
- assignment_value = get_assignment_value actual_field_value,input_value
90
- @request.body[field_name] = @request.body[field_name] << assignment_value
91
- self
92
- end
87
+ method_name = "by_another_#{field_name.classify.underscore}"
88
+ define_method(method_name) do |*input_value|
89
+ input_value = input_value[0]
90
+ assignment_value = get_assignment_value actual_field_value,input_value
91
+ @request.body[field_name] = @request.body[field_name] << assignment_value
92
+ self
93
+ end
93
94
 
94
- method_name = "by_no_#{field_name.classify.underscore}"
95
- define_method(method_name) do
96
- @request.body[field_name] = []
97
- self
95
+ method_name = "by_no_#{field_name.classify.underscore}"
96
+ define_method(method_name) do
97
+ @request.body[field_name] = []
98
+ self
99
+ end
98
100
  end
99
- end
100
101
 
101
- def generate_method_to_alter_request_field field_name,actual_field_value
102
- method_name = "by_#{field_name.underscore}"
103
- define_method(method_name) do |*input_value|
104
- input_value = input_value[0]
105
- assignment_value = get_assignment_value actual_field_value,input_value
106
- @request.body[field_name] = assignment_value
107
- self
102
+ def generate_method_to_alter_request_field field_name,actual_field_value
103
+ method_name = "by_#{field_name.underscore}"
104
+ define_method(method_name) do |*input_value|
105
+ input_value = input_value[0]
106
+ assignment_value = get_assignment_value actual_field_value,input_value
107
+ @request.body[field_name] = assignment_value
108
+ self
109
+ end
108
110
  end
109
- end
110
111
 
111
112
 
113
+ end
112
114
  end
@@ -1,17 +1,20 @@
1
- module UrlBuilder
2
- def generate_methods_to_alter_path_params
3
- url = @stub_config.request.url
4
- url.scan(/{(.+?)}/).each do |path_params|
5
- path_param = path_params[0]
6
- param_name = path_param.split("|")[0]
7
- param_default_value = path_param.split("|")[1]
8
- method_name = "of_#{param_name.underscore}"
9
- define_method(method_name) do |*input_value|
10
- input_value = input_value[0]
11
- @request.path.sub!("{#{path_param}}","{#{param_name}|#{input_value}}") unless input_value.blank?
12
- self
1
+ module Poisol
2
+ module UrlBuilder
3
+ def generate_methods_to_alter_path_params
4
+ url = @stub_config.request.url
5
+ url.scan(/{(.+?)}/).each do |path_params|
6
+ path_param = path_params[0]
7
+ param_name = path_param.split("|")[0]
8
+ param_default_value = path_param.split("|")[1]
9
+ method_name = "of_#{param_name.underscore}"
10
+ define_method(method_name) do |*input_value|
11
+ input_value = input_value[0]
12
+ @request.path.sub!("{#{path_param}}","{#{param_name}|#{input_value}}") unless input_value.blank?
13
+ self
14
+ end
13
15
  end
14
16
  end
17
+
15
18
  end
16
19
 
17
20
  end
@@ -0,0 +1,75 @@
1
+ module Poisol
2
+ module ResponseBodyBuilder
3
+
4
+ def make_methods_to_alter_response_array
5
+ @response_array_item = @stub_config.response.body
6
+ make_method_to_append_response_array
7
+ make_method_to_append_response_array_as_hash_params
8
+ make_method_to_alter_response_array_object
9
+ end
10
+
11
+ def make_method_to_append_response_array
12
+ class_name = self.name.classify.underscore
13
+ method_name = "has_#{class_name}"
14
+ define_method(method_name) do |*input_value|
15
+ assignment_value = input_value.blank? ?
16
+ stub_config.response.body.deep_dup :
17
+ (stub_config.response.body.deep_dup).deep_merge!(input_value[0].stringify_keys)
18
+ if @called_methods.include? __method__
19
+ @response.body << assignment_value
20
+ else
21
+ @response.body = [assignment_value]
22
+ end
23
+ @called_methods << __method__
24
+ remove_array_field_calls
25
+ self
26
+ end
27
+ end
28
+
29
+ def make_method_to_append_response_array_as_hash_params
30
+ class_name = self.name.underscore
31
+ method_name = "has_#{class_name}"
32
+ define_method(method_name) do |*input_value|
33
+ @response.body = []
34
+ input_hashes = input_value[0]
35
+ input_hashes.each do |input_hash|
36
+ @response.body << (stub_config.response.body.deep_dup).deep_merge!(input_hash.stringify_keys)
37
+ end
38
+ self
39
+ end
40
+ end
41
+
42
+ def make_method_to_alter_response_array_object
43
+ @response_array_item.each do |field|
44
+ field_name = field[0]
45
+ actual_field_value = field[1]
46
+ is_array = (actual_field_value.class.to_s == "Array")
47
+ actual_field_value = actual_field_value[0] if is_array
48
+
49
+ method_name = "with_#{field_name.underscore}"
50
+ define_method(method_name) do |*input_value|
51
+ input_value = input_value[0]
52
+ assignment_value = get_assignment_value actual_field_value,input_value
53
+ @response.body.last[field_name] = assignment_value
54
+ self
55
+ end
56
+
57
+ if is_array
58
+ method_name = "with_#{field_name.classify.underscore}"
59
+ define_method(method_name) do |*input_value|
60
+ input_value = input_value[0]
61
+ assignment_value = get_assignment_value actual_field_value,input_value
62
+ if @called_methods.include? __method__
63
+ @response.body.last[field_name] << assignment_value
64
+ else
65
+ @response.body.last[field_name] = [assignment_value]
66
+ end
67
+ @called_methods << __method__
68
+ self
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ end
75
+ end
@@ -1,136 +1,69 @@
1
- module ResponseBodyBuilder
1
+ module Poisol
2
+ module ResponseBodyBuilder
2
3
 
3
- def prepare_response_body
4
- return if @stub_config.response.body.blank?
5
- if @stub_config.response.is_column_array or @stub_config.response.is_row_array
6
- generate_methods_to_alter_response_array
7
- else
8
- generate_methods_to_alter_response_object
9
- end
10
- end
11
-
12
- def generate_methods_to_alter_response_array
13
- @response_array_item = @stub_config.response.body
14
- generate_method_to_append_response_array
15
- generate_method_to_append_response_array_as_hash_params
16
- generate_method_to_alter_response_array_object
17
- end
18
-
19
- def generate_method_to_alter_response_array_object
20
- @response_array_item.each do |field|
21
- field_name = field[0]
22
- actual_field_value = field[1]
23
- is_array = (actual_field_value.class.to_s == "Array")
24
- actual_field_value = actual_field_value[0] if is_array
25
- method_name = "with_#{field_name.underscore}"
26
- define_method(method_name) do |*input_value|
27
- input_value = input_value[0]
28
- assignment_value = get_assignment_value actual_field_value,input_value
29
- @response.body.last[field_name] = assignment_value
30
- self
31
- end
32
-
33
- if is_array
34
- method_name = "with_#{field_name.classify.underscore}"
35
- define_method(method_name) do |*input_value|
36
- input_value = input_value[0]
37
- assignment_value = get_assignment_value actual_field_value,input_value
38
- @response.body.last[field_name] = @response.body.last[field_name] << assignment_value
39
- self
40
- end
41
- end
42
-
43
- end
44
- end
45
-
46
- def generate_method_to_append_response_array
47
- class_name = self.name.classify.underscore
48
- method_name = "has_#{class_name}"
49
- define_method(method_name) do |*input_value|
50
- if input_value.blank?
51
- @response.body << stub_config.response.body.deep_dup
4
+ def prepare_response_body
5
+ return if @stub_config.response.body.blank?
6
+ if @stub_config.response.is_column_array or @stub_config.response.is_row_array
7
+ make_methods_to_alter_response_array
52
8
  else
53
- input = JSON.parse(input_value[0].to_json)
54
- @response.body << (stub_config.response.body.deep_dup).deep_merge!(input_value[0].stringify_keys)
9
+ make_methods_to_alter_response_object
55
10
  end
56
- self
57
11
  end
58
- end
59
12
 
60
- def generate_method_to_append_response_array_as_hash_params
61
- class_name = self.name.underscore
62
- method_name = "has_#{class_name}"
63
- define_method(method_name) do |*input_value|
64
- input_hashes = input_value[0]
65
- input_hashes.each do |input_hash|
66
- @response.body << (stub_config.response.body.deep_dup).deep_merge!(input_hash.stringify_keys)
13
+ def make_methods_to_alter_response_object
14
+ response_body = @stub_config.response.body.clone
15
+ response_body.each do |field|
16
+ field_name = field[0]
17
+ actual_field_value = field[1]
18
+ is_array = (actual_field_value.class.to_s == "Array")
19
+ if is_array
20
+ make_method_to_alter_response_nested_array field_name,actual_field_value
21
+ else
22
+ make_method_to_alter_response_field field_name,actual_field_value
23
+ end
67
24
  end
68
- self
69
25
  end
70
- end
71
26
 
27
+ def make_method_to_alter_response_nested_array field_name,actual_field_values
28
+ actual_field_value = actual_field_values[0]
72
29
 
73
- def generate_methods_to_alter_response_object
74
- response_body = @stub_config.response.body.clone
75
- response_body.each do |field|
76
- field_name = field[0]
77
- actual_field_value = field[1]
78
- is_array = (actual_field_value.class.to_s == "Array")
79
- if is_array
80
- generate_method_to_alter_response_field_array field_name,actual_field_value
81
- else
82
- generate_method_to_alter_response_field field_name,actual_field_value
30
+ method_name = "has_#{field_name.underscore}"
31
+ define_method(method_name) do |*input_value|
32
+ @response.body[field_name] = []
33
+ input_hashes = input_value[0]
34
+ input_hashes.each do |input_hash|
35
+ assignment_value = get_assignment_value actual_field_value.deep_dup,input_hash.stringify_keys
36
+ @response.body[field_name] << assignment_value
37
+ end
38
+ self
83
39
  end
84
- end
85
- end
86
40
 
87
- def generate_method_to_alter_response_field_array field_name,actual_field_values
88
- actual_field_value = actual_field_values[0]
89
41
 
90
- method_name = "has_#{field_name.underscore}"
91
- define_method(method_name) do |*input_value|
92
- @response.body[field_name] = []
93
- input_hashes = input_value[0]
94
- input_hashes.each do |input_hash|
95
- assignment_value = get_assignment_value stub_config.response.body[field_name][0].deep_dup,input_hash.stringify_keys
96
- @response.body[field_name] << assignment_value
42
+ method_name = "has_#{field_name.classify.underscore}"
43
+ define_method(method_name) do |*input_value|
44
+ input_value = input_value[0]
45
+ assignment_value = get_assignment_value actual_field_value,input_value
46
+ @response.body[field_name] = @called_methods.include?(__method__) ? @response.body[field_name] << assignment_value :[assignment_value]
47
+ @called_methods << __method__
48
+ self
97
49
  end
98
- self
99
- end
100
-
101
-
102
- method_name = "has_#{field_name.classify.underscore}"
103
- define_method(method_name) do |*input_value|
104
- input_value = input_value[0]
105
- assignment_value = get_assignment_value actual_field_value,input_value
106
- @response.body[field_name] = [assignment_value]
107
- self
108
- end
109
50
 
110
- method_name = "has_another_#{field_name.classify.underscore}"
111
- define_method(method_name) do |*input_value|
112
- input_value = input_value[0]
113
- assignment_value = get_assignment_value actual_field_value,input_value
114
- @response.body[field_name] = @response.body[field_name] << assignment_value
115
- self
116
- end
117
-
118
- method_name = "has_no_#{field_name.classify.underscore}"
119
- define_method(method_name) do
120
- @response.body[field_name] = []
121
- self
51
+ method_name = "has_no_#{field_name.classify.underscore}"
52
+ define_method(method_name) do
53
+ @response.body[field_name] = []
54
+ self
55
+ end
122
56
  end
123
- end
124
57
 
125
- def generate_method_to_alter_response_field field_name,actual_field_value
126
- method_name = "has_#{field_name.underscore}"
127
- define_method(method_name) do |*input_value|
128
- input_value = input_value[0]
129
- assignment_value = get_assignment_value actual_field_value,input_value
130
- @response.body[field_name] = assignment_value
131
- self
58
+ def make_method_to_alter_response_field field_name,actual_field_value
59
+ method_name = "has_#{field_name.underscore}"
60
+ define_method(method_name) do |*input_value|
61
+ input_value = input_value[0]
62
+ assignment_value = get_assignment_value actual_field_value,input_value
63
+ @response.body[field_name] = assignment_value
64
+ self
65
+ end
132
66
  end
133
67
  end
134
68
 
135
-
136
69
  end
@@ -1,3 +1,5 @@
1
+ module Poisol
1
2
  module StatusBuilder
2
3
 
3
4
  end
5
+ end