poisol 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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