poisol 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bdf61107e05bc60e3d83dcc816e0a246c788bd17
4
- data.tar.gz: 0866588b30cf3921f5b0fc3f11755ee2aba83a95
3
+ metadata.gz: 7f206a671cea7dfa6671824d22c3673487d76487
4
+ data.tar.gz: 1ed49e3fc8dbc7f78ef72b28ed3604a7fdd58256
5
5
  SHA512:
6
- metadata.gz: 7b7c112d99da4648688618f8d5a9ee37f7fc8c111b5d68f1487c596e41b6abe938adf9bf6dd0f95092b526746d40b60244fb5ff07d08969f4b8af343514156da
7
- data.tar.gz: 906006b5322d06de73e93c5110196f5628dff8869d4c8430748443c76477b6c32224166f117a203719eacdca57e5b5c77beb8fac04f9adc9a4752eb37f091e36
6
+ metadata.gz: eca8e700d164ed634ba735b7e861ecce1efecaf4ec1842f2ee317a803594b78e0db7743fc26073c7a1de3fb56103e2c20f022535c48e4bc182b66e56cf8505f2
7
+ data.tar.gz: 91d6a9fabe8b63c19251e90b33f5f1f5c9280f7bbdde2fcdc7a39bb9f4d1c11cf8ea1b1c3391e7fc0dbf82d0d6cc4c142db4cca765313b596b18ae3b59acbd7d
data/README.md CHANGED
@@ -50,7 +50,8 @@ The following can be dynamically configured
50
50
 
51
51
  |Preposition| for defining|
52
52
  |----:|:----|
53
- |for|url & query params |
53
+ |of|url |
54
+ |for|query params |
54
55
  |by|request body filed/array item|
55
56
  |having|request body array item field|
56
57
  |has|response body field/array item|
@@ -1,12 +1,99 @@
1
1
  module RequestBodyBuilder
2
- def generate_request_methods
3
- request_body = @stub_config.request.body.deep_dup
4
- request_body.each do |field|
2
+
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
9
+ end
10
+ end
11
+
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_alter_request_array_object
16
+ end
17
+
18
+ def generate_method_to_alter_request_array_object
19
+ @request_array_item.each do |field|
5
20
  field_name = field[0]
6
- define_method("by_#{field[0].underscore}") do |*value|
7
- @request.body[field_name] = value[0]
21
+ actual_field_value = field[1]
22
+ is_array = (actual_field_value.class.to_s == "Array")
23
+ actual_field_value = actual_field_value[0] if is_array
24
+ method_name = is_array ? ("with_#{field_name.classify.underscore}") : ("with_#{field_name.underscore}")
25
+ define_method(method_name) do |*input_value|
26
+ input_value = input_value[0]
27
+ assignment_value = get_assignment_value actual_field_value,input_value
28
+ @request.body.last[field_name] = is_array ? (@request.body.last[field_name] << assignment_value) : assignment_value
8
29
  self
9
30
  end
10
31
  end
11
32
  end
33
+
34
+ def generate_method_to_append_request_array
35
+ class_name = self.name.classify.underscore
36
+ method_name = "by_#{class_name}"
37
+ define_method(method_name) do |*input_value|
38
+ if input_value.blank?
39
+ @request.body << stub_config.request.body.deep_dup
40
+ else
41
+ input = JSON.parse(input_value[0].to_json)
42
+ @request.body << (stub_config.request.body.deep_dup).deep_merge!(input)
43
+ end
44
+ self
45
+ end
46
+ end
47
+
48
+ def generate_methods_to_alter_request_object
49
+ request_body = @stub_config.request.body.clone
50
+ request_body.each do |field|
51
+ field_name = field[0]
52
+ actual_field_value = field[1]
53
+ is_array = (actual_field_value.class.to_s == "Array")
54
+ if is_array
55
+ generate_method_to_alter_request_field_array field_name,actual_field_value
56
+ else
57
+ generate_method_to_alter_request_field field_name,actual_field_value
58
+ end
59
+
60
+ end
61
+ end
62
+
63
+ def generate_method_to_alter_request_field_array field_name,actual_field_values
64
+ actual_field_value = actual_field_values[0]
65
+ method_name = "by_#{field_name.classify.underscore}"
66
+ define_method(method_name) do |*input_value|
67
+ input_value = input_value[0]
68
+ assignment_value = get_assignment_value actual_field_value,input_value
69
+ @request.body[field_name] = [assignment_value]
70
+ self
71
+ end
72
+
73
+ method_name = "by_another_#{field_name.classify.underscore}"
74
+ define_method(method_name) do |*input_value|
75
+ input_value = input_value[0]
76
+ assignment_value = get_assignment_value actual_field_value,input_value
77
+ @request.body[field_name] = @request.body[field_name] << assignment_value
78
+ self
79
+ end
80
+
81
+ method_name = "by_no_#{field_name.classify.underscore}"
82
+ define_method(method_name) do
83
+ @request.body[field_name] = []
84
+ self
85
+ end
86
+ end
87
+
88
+ def generate_method_to_alter_request_field field_name,actual_field_value
89
+ method_name = "by_#{field_name.underscore}"
90
+ define_method(method_name) do |*input_value|
91
+ input_value = input_value[0]
92
+ assignment_value = get_assignment_value actual_field_value,input_value
93
+ @request.body[field_name] = assignment_value
94
+ self
95
+ end
96
+ end
97
+
98
+
12
99
  end
@@ -5,7 +5,7 @@ module UrlBuilder
5
5
  path_param = path_params[0]
6
6
  param_name = path_param.split("|")[0]
7
7
  param_default_value = path_param.split("|")[1]
8
- method_name = "for_#{param_name.underscore}"
8
+ method_name = "of_#{param_name.underscore}"
9
9
  define_method(method_name) do |*input_value|
10
10
  input_value = input_value[0]
11
11
  @request.url.sub!("{#{path_param}}","{#{param_name}|#{input_value}}") unless input_value.blank?
@@ -1,6 +1,6 @@
1
1
  module ResponseBodyBuilder
2
2
 
3
- def prepare_response
3
+ def prepare_response_body
4
4
  return if @stub_config.response.body.blank?
5
5
  if @stub_config.response.is_column_array or @stub_config.response.is_row_array
6
6
  generate_methods_to_alter_response_array
@@ -34,8 +34,13 @@ module ResponseBodyBuilder
34
34
  def generate_method_to_append_response_array
35
35
  class_name = self.name.classify.underscore
36
36
  method_name = "has_#{class_name}"
37
- define_method(method_name) do
38
- @response.body << stub_config.response.body.deep_dup
37
+ define_method(method_name) do |*input_value|
38
+ if input_value.blank?
39
+ @response.body << stub_config.response.body.deep_dup
40
+ else
41
+ input = JSON.parse(input_value[0].to_json)
42
+ @response.body << (stub_config.response.body.deep_dup).deep_merge!(input)
43
+ end
39
44
  self
40
45
  end
41
46
  end
@@ -91,4 +96,4 @@ module ResponseBodyBuilder
91
96
  end
92
97
 
93
98
 
94
- end
99
+ end
@@ -1,8 +1,10 @@
1
1
  require_relative "webmock_stub_builder"
2
2
  require_relative "stub_class_builder"
3
+ require_relative "stub_instance"
3
4
 
4
5
  class Stub
5
6
  include WebMockStubBuilder
7
+ include StubInstance
6
8
  attr_accessor :request,:response
7
9
  class << self
8
10
  include StubClassBuilder
@@ -15,36 +17,6 @@ class Stub
15
17
  end
16
18
  end
17
19
 
18
- def initialize
19
- @request = Request.new
20
- @response = Response.new
21
- @request.url = stub_config.request.url.deep_dup
22
- @request.query = stub_config.request.query.deep_dup
23
- @request.query = {} if stub_config.request.query_explicit
24
- @request.body = stub_config.request.body.deep_dup
25
- @request.body = {} if stub_config.request.body_explicit
26
- if stub_config.response.is_column_array or stub_config.response.is_row_array
27
- @response.body = []
28
- else
29
- @response.body = stub_config.response.body.deep_dup
30
- end
31
- end
32
-
33
- def set_dumb_response response_file
34
- @response.body = Parse.json_file_to_hash(response_file)
35
- @is_response_dumped = true
36
- self
37
- end
38
-
39
- def get_assignment_value actual_field_value,input_value
40
- if actual_field_value.class.to_s == "Hash"
41
- input_value = {} if input_value.blank?
42
- actual_field_value.deep_merge(input_value)
43
- else
44
- input_value
45
- end
46
- end
47
-
48
20
  end
49
21
 
50
22
  class Request
@@ -29,7 +29,8 @@ module StubClassBuilder
29
29
  generate_query_methods if @stub_config.request.query.present?
30
30
  end
31
31
 
32
- def prepare_request_body
33
- generate_request_methods if @stub_config.request.body.present?
32
+ def prepare_response
33
+ prepare_response_body
34
34
  end
35
+
35
36
  end
@@ -0,0 +1,54 @@
1
+ module StubInstance
2
+ def initialize
3
+ init_request
4
+ init_response
5
+ end
6
+
7
+ def init_request
8
+ @request = Request.new
9
+ @request.url = stub_config.request.url.deep_dup
10
+ @request.query = stub_config.request.query_explicit ? {} : stub_config.request.query.deep_dup
11
+ @request.body = stub_config.request.body_explicit ? {} : stub_config.request.body.deep_dup
12
+ end
13
+
14
+ def init_response
15
+ @response = Response.new
16
+ if stub_config.response.is_column_array or stub_config.response.is_row_array
17
+ @response.body = []
18
+ else
19
+ @response.body = stub_config.response.body.deep_dup
20
+ end
21
+ @response.status = 200
22
+ end
23
+
24
+ def set_dumb_response response_file
25
+ @response.body = Parse.json_file_to_hash(response_file)
26
+ @is_response_dumped = true
27
+ self
28
+ end
29
+
30
+ def get_assignment_value actual_field_value,input_value
31
+ if actual_field_value.class.to_s == "Hash"
32
+ input_value = {} if input_value.blank?
33
+ actual_field_value.deep_merge(input_value)
34
+ else
35
+ input_value
36
+ end
37
+ end
38
+
39
+ def has input_hash
40
+ @response.body.deep_merge! input_hash
41
+ self
42
+ end
43
+
44
+ def for input_hash
45
+ @request.query.deep_merge! input_hash
46
+ self
47
+ end
48
+
49
+ def status input
50
+ @response.status = input
51
+ self
52
+ end
53
+
54
+ end
@@ -25,7 +25,7 @@ module WebMockStubBuilder
25
25
 
26
26
  def build_response_body
27
27
  @response.body = Parse.hash_array_to_column_hash(@response.body) if stub_config.response.is_column_array and !@is_response_dumped.present?
28
- @webmock_stub.to_return(:status => 200, :body => @response.body.to_json, :headers => {'Content-Type' => 'application/json'})
28
+ @webmock_stub.to_return(:status => @response.status, :body => @response.body.to_json, :headers => {'Content-Type' => 'application/json'})
29
29
  end
30
30
 
31
31
  def remove_path_param_name_from_url
File without changes
@@ -0,0 +1,5 @@
1
+ request:
2
+ url: simple_response
3
+ type: get
4
+ response:
5
+ body: '{"a":1,"b":2}'
@@ -12,4 +12,10 @@ describe Stub, "#query_explicit" do
12
12
  expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json)
13
13
  end
14
14
 
15
+ it "full dymamic inline" do
16
+ Book.new.for(:author => 'asd',:name =>'don').build()
17
+ response = RestClient.get "http://localhost:80/book",{:params => {:author=>'asd',:name=>'don'}}
18
+ expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json)
19
+ end
20
+
15
21
  end
@@ -1,8 +1,8 @@
1
- describe Stub, "#get_books" do
1
+ describe Stub, "#implicit query params" do
2
2
 
3
3
  it "dynamic response" do
4
- Book.new.has_category({"age_group"=>"11", "publisher"=>{"name"=>"oxford"}}).build()
5
- response = RestClient.get "http://localhost:80/book",{:params => {:author=>'bharathi',:name=>"doni"}}
4
+ Book.new.for_author("bha").has_category({"age_group"=>"11", "publisher"=>{"name"=>"oxford"}}).build()
5
+ response = RestClient.get "http://localhost:80/book",{:params => {:author=>'bha',:name=>"doni"}}
6
6
  expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"11", "genre"=>"action", "publisher"=>{"name"=>"oxford", "place"=>"erode"}}}.to_json)
7
7
  end
8
8
 
@@ -12,5 +12,12 @@ describe Stub, "#get_books" do
12
12
  expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json)
13
13
  end
14
14
 
15
+ it "hash params for query" do
16
+ Book.new.for(:author=>"val").build()
17
+ response = RestClient.get "http://localhost:80/book",{:params => {:author=>'val',:name=>"doni"}}
18
+ expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json)
19
+ end
20
+
21
+
15
22
  end
16
23
 
@@ -12,6 +12,13 @@ describe Stub, "#array" do
12
12
  expect(response.body).to eq({"title"=>["independance", "abc"], "category"=>["10","12"]}.to_json)
13
13
  end
14
14
 
15
+ it "column array hash params" do
16
+ Columns.new.has_column.has_column(:title=>"abc",:category => "12").build
17
+ response = RestClient.get "http://localhost:80/column"
18
+ expect(response.body).to eq({"title"=>["independance", "abc"], "category"=>["10","12"]}.to_json)
19
+ end
20
+
21
+
15
22
  it "empty row array" do
16
23
  Rows.new.build
17
24
  response = RestClient.get "http://localhost:80/row"
@@ -24,5 +31,11 @@ describe Stub, "#array" do
24
31
  expect(response.body).to eq([{"title"=>"independance", "category"=>{"age_group"=>"10"}}, {"title"=>"abc", "category"=>{"age_group"=>"12"}}].to_json)
25
32
  end
26
33
 
34
+ it "row array hash_params" do
35
+ Rows.new.has_row.has_row(:title=>"abc",:category=>{"age_group" => "12"}).build
36
+ response = RestClient.get "http://localhost:80/row"
37
+ expect(response.body).to eq([{"title"=>"independance", "category"=>{"age_group"=>"10"}}, {"title"=>"abc", "category"=>{"age_group"=>"12"}}].to_json)
38
+ end
39
+
27
40
 
28
41
  end
@@ -0,0 +1,20 @@
1
+ describe StubInstance, "hash params" do
2
+ it "default" do
3
+ SimpleResponse.new.build
4
+ response = RestClient.get "http://localhost:80/simple_response"
5
+ expect(response.body).to eq({:a=>1,:b=>2}.to_json)
6
+ end
7
+
8
+ it "partial" do
9
+ SimpleResponse.new.has(:a=>3).build
10
+ response = RestClient.get "http://localhost:80/simple_response"
11
+ expect(response.body).to eq({:a=>3,:b=>2}.to_json)
12
+ end
13
+
14
+ it "full" do
15
+ SimpleResponse.new.has(:a=>3,:b=>5).build
16
+ response = RestClient.get "http://localhost:80/simple_response"
17
+ expect(response.body).to eq({:a=>3,:b=>5}.to_json)
18
+ end
19
+
20
+ end
@@ -7,13 +7,13 @@ describe Stub, "#url" do
7
7
  end
8
8
 
9
9
  it "dynamic" do
10
- Url.new.for_name("hitler").for_actor("mani").build()
10
+ Url.new.of_name("hitler").of_actor("mani").build()
11
11
  response = RestClient.get "http://localhost:80/cda/hitler/mani/get"
12
12
  expect(response.body).to eq({"hi"=>1}.to_json)
13
13
  end
14
-
14
+
15
15
  it "partial" do
16
- Url.new.for_actor("mani").build()
16
+ Url.new.of_actor("mani").build()
17
17
  response = RestClient.get "http://localhost:80/cda/cd/mani/get"
18
18
  expect(response.body).to eq({"hi"=>1}.to_json)
19
19
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poisol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Deepak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-11 00:00:00.000000000 Z
11
+ date: 2014-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -139,6 +139,7 @@ files:
139
139
  - lib/poisol/stub/response/status_builder.rb
140
140
  - lib/poisol/stub/stub.rb
141
141
  - lib/poisol/stub/stub_class_builder.rb
142
+ - lib/poisol/stub/stub_instance.rb
142
143
  - lib/poisol/stub/webmock_stub_builder.rb
143
144
  - lib/poisol/stub_config/stub_config.rb
144
145
  - lib/poisol/stub_config/stub_config_builder.rb
@@ -150,27 +151,29 @@ files:
150
151
  - spec/data/domain/first/first.yml
151
152
  - spec/data/domain/second/domain.yml
152
153
  - spec/data/domain/second/second.yml
153
- - spec/data/main/array/columns.yml
154
- - spec/data/main/array/rows.yml
155
154
  - spec/data/main/domain.yml
156
155
  - spec/data/main/key_value/explicit.yml
157
156
  - spec/data/main/key_value/key_value.yml
158
- - spec/data/main/nested_array.yml
159
157
  - spec/data/main/query/book.yml
160
158
  - spec/data/main/query/book_explicit.yml
159
+ - spec/data/main/response/array/columns.yml
160
+ - spec/data/main/response/array/rows.yml
161
+ - spec/data/main/response/nested_array.yml
162
+ - spec/data/main/response/simple_response.yml
161
163
  - spec/data/main/url.yml
162
164
  - spec/data/main/user/config.yml
163
165
  - spec/data/main/user/request.json
164
166
  - spec/data/main/user/response.json
165
- - spec/functional/array_spec.rb
166
- - spec/functional/dumb_response_spec.rb
167
167
  - spec/functional/key_value/explicit_inclusion_spec.rb
168
168
  - spec/functional/key_value/implicit_inclusion_spec.rb
169
169
  - spec/functional/multi_domain_spec.rb
170
- - spec/functional/nested_array_spec.rb
171
- - spec/functional/post_spec.rb
170
+ - spec/functional/post_request_spec.rb
172
171
  - spec/functional/query/query_explicit_spec.rb
173
172
  - spec/functional/query/query_implicit_spec.rb
173
+ - spec/functional/response/array_spec.rb
174
+ - spec/functional/response/dumb_response_spec.rb
175
+ - spec/functional/response/hash_params_spec.rb
176
+ - spec/functional/response/nested_array_spec.rb
174
177
  - spec/functional/url_spec.rb
175
178
  - spec/spec_helper.rb
176
179
  - spec/unit/exception_spec.rb
@@ -207,25 +210,27 @@ test_files:
207
210
  - spec/data/main/user/config.yml
208
211
  - spec/data/main/user/request.json
209
212
  - spec/data/main/user/response.json
210
- - spec/data/main/array/columns.yml
211
- - spec/data/main/array/rows.yml
212
213
  - spec/data/main/domain.yml
213
214
  - spec/data/main/url.yml
214
- - spec/data/main/nested_array.yml
215
215
  - spec/data/main/key_value/explicit.yml
216
216
  - spec/data/main/key_value/key_value.yml
217
+ - spec/data/main/response/simple_response.yml
218
+ - spec/data/main/response/array/columns.yml
219
+ - spec/data/main/response/array/rows.yml
220
+ - spec/data/main/response/nested_array.yml
217
221
  - spec/data/main/query/book_explicit.yml
218
222
  - spec/data/main/query/book.yml
219
223
  - spec/unit/exception_spec.rb
220
224
  - spec/unit/stub_spec.rb
221
225
  - spec/spec_helper.rb
222
226
  - spec/functional/multi_domain_spec.rb
223
- - spec/functional/array_spec.rb
224
227
  - spec/functional/key_value/explicit_inclusion_spec.rb
225
228
  - spec/functional/key_value/implicit_inclusion_spec.rb
226
- - spec/functional/post_spec.rb
229
+ - spec/functional/post_request_spec.rb
230
+ - spec/functional/response/hash_params_spec.rb
231
+ - spec/functional/response/array_spec.rb
232
+ - spec/functional/response/dumb_response_spec.rb
233
+ - spec/functional/response/nested_array_spec.rb
227
234
  - spec/functional/url_spec.rb
228
- - spec/functional/dumb_response_spec.rb
229
- - spec/functional/nested_array_spec.rb
230
235
  - spec/functional/query/query_implicit_spec.rb
231
236
  - spec/functional/query/query_explicit_spec.rb