poisol 0.1.2 → 0.1.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2e1cd1ceb6ee666315fd0d1205ec3e6340f3cbfa
4
- data.tar.gz: ca968b177598825a8ded4b7bafd87d8e988f3807
3
+ metadata.gz: b1c5569b1dd57a37a9f736b8f08c9d7ec346f345
4
+ data.tar.gz: 49b4121cbebf8c66beae87918fe297fd0335b57d
5
5
  SHA512:
6
- metadata.gz: 30aad4d3e9f02dc9abf814101422a153b08bf245b0e12612d746d610ef666a028b87f92d6553d847826aa11ab17f61b80f2405e4197e45df57d8e45b9ddf2008
7
- data.tar.gz: 19defa95fed165a05a64a0911a66c454459aec4f00b1ebd30ed4c003612e74d262a167dbb770b558cc1051ac71dda2d290966d32a50df047b70180f1dbc515c4
6
+ metadata.gz: 5edede84a64c6fbf6b928ba02de24929359b32390fe46da5884b9f879a1f0d2f1b40be5d773b15e4f2b5ff0176ec507ca968953ba8285b0d01309cfc9c05f2fc
7
+ data.tar.gz: 6124dff351c4e4a059c7108fb817dc28367696319934735faa12907737893a2a244828e353ff89bacd3c696e28c5583627ebe9b707bfad1cdf45959d701c63ec
@@ -0,0 +1,53 @@
1
+ module Poisol
2
+ module BuildStub
3
+ def build
4
+ @stub = Stub.new
5
+ build_url
6
+ build_query
7
+ build_request_body
8
+ build_response
9
+ Stubs.add @stub
10
+ @stub
11
+ end
12
+
13
+ private
14
+ def build_url
15
+ remove_path_param_name_from_url
16
+ @stub.request.type = @request.type
17
+ @stub.request.url = "#{stub_config.request.domain}/#{@request.path}"
18
+ end
19
+
20
+ def build_query
21
+ return if @request.query.blank?
22
+ @stub.request.query = @request.query.to_query
23
+ end
24
+
25
+ def build_request_body
26
+ if stub_config.request.is_body_key_value
27
+ @stub.request.body = Parse.hash_to_concatenated_key_value(@request.body)
28
+ else
29
+ @stub.request.body = @request.body
30
+ end
31
+ end
32
+
33
+ def build_response
34
+ @stub.response.status = @response.status
35
+ @stub.response.header = @response.header
36
+ if stub_config.response.is_column_array and !@is_response_dumped.present?
37
+ @stub.response.body = Parse.hash_array_to_column_hash(@response.body)
38
+ else
39
+ @stub.response.body = @response.body
40
+ end
41
+ end
42
+
43
+ def remove_path_param_name_from_url
44
+ @request.path.scan(/{(.+?)}/).each do |path_params|
45
+ path_param = path_params[0]
46
+ param_name = path_param.split("|")[0]
47
+ param_value = path_param.split("|")[1]
48
+ @request.path.sub!("{#{path_param}}",param_value)
49
+ end
50
+ end
51
+
52
+ end
53
+ end
@@ -1,36 +1,10 @@
1
- require_relative "webrick_stub_builder"
2
- require_relative "stub_class_builder"
3
- require_relative "stub_instance"
4
-
5
- module Poisol
1
+ module Poisol
6
2
  class Stub
7
- include WebrickStubBuilder
8
- include StubInstance
9
- attr_accessor :request,:response
10
- class << self
11
- include StubClassBuilder
12
-
13
- def set_stub_config stub_config
14
- @stub_config = stub_config
15
- define_method("stub_config") do
16
- return stub_config
17
- end
18
- end
3
+ attr_accessor :request,:response,:called_count
4
+ def initialize
5
+ @called_count = 0
6
+ @request = Request.new
7
+ @response = Response.new
19
8
  end
20
-
21
9
  end
22
-
23
- class Request
24
- attr_accessor :url,:query,:body,:path,:type
25
-
26
- def to_s
27
- "#{self.type} #{self.url} #{"Query:#{self.query}" if self.query.present?} #{"\nBody: #{self.body}" if self.body.present?} "
28
- end
29
-
30
- end
31
-
32
- class Response
33
- attr_accessor :body,:status,:header
34
- end
35
-
36
10
  end
@@ -0,0 +1,36 @@
1
+ require_relative "build_stub"
2
+ require_relative "stub_builder_class"
3
+ require_relative "stub_builder_instance"
4
+
5
+ module Poisol
6
+ class StubBuilder
7
+ include BuildStub
8
+ include StubInstance
9
+ attr_accessor :request,:response
10
+ class << self
11
+ include StubClassBuilder
12
+
13
+ def set_stub_config stub_config
14
+ @stub_config = stub_config
15
+ define_method("stub_config") do
16
+ return stub_config
17
+ end
18
+ end
19
+ end
20
+
21
+ end
22
+
23
+ class Request
24
+ attr_accessor :url,:query,:body,:path,:type
25
+
26
+ def to_s
27
+ "#{self.type} #{self.url} #{"Query:#{self.query}" if self.query.present?} #{"\nBody: #{self.body}" if self.body.present?} "
28
+ end
29
+
30
+ end
31
+
32
+ class Response
33
+ attr_accessor :body,:status,:header
34
+ end
35
+
36
+ end
@@ -46,12 +46,13 @@ module Poisol
46
46
  end
47
47
 
48
48
  def has input_hash
49
- @response.body.deep_merge! input_hash.camelize_keys
49
+ @response.body.deep_merge! input_hash.stringify_keys
50
50
  self
51
51
  end
52
52
 
53
53
  def is_empty
54
- @response.body = stub_config.response.is_column_array or stub_config.response.is_row_array ? [] : {}
54
+ @response.body = (stub_config.response.is_column_array or stub_config.response.is_row_array) ? [] : {}
55
+ @is_response_dumped = true
55
56
  self
56
57
  end
57
58
 
@@ -1,4 +1,4 @@
1
- require_relative "stub/stub"
1
+ require_relative "stub/stub_builder"
2
2
  module Poisol
3
3
  class StubFactory
4
4
  def build folder
@@ -41,7 +41,7 @@ module Poisol
41
41
  end
42
42
 
43
43
  def create_class class_name,stub_config
44
- dynamic_stub_class = Object.const_set class_name,Class.new(Stub)
44
+ dynamic_stub_class = Object.const_set class_name,Class.new(StubBuilder)
45
45
  dynamic_stub_class.set_stub_config stub_config
46
46
  dynamic_stub_class.generate_methods_to_alter_sutb
47
47
  PoisolLog.info "Generated #{class_name}"
@@ -19,7 +19,14 @@ module Poisol
19
19
  def get_match actual_request
20
20
  return nil if @stubs.blank?
21
21
  matches = @stubs.select{|stub| Poisol::RequestMatcher.matches? actual_request,stub.request}
22
- return matches.present? ? matches[0] : nil
22
+ return nil unless matches.present?
23
+ match = matches[0]
24
+ match.called_count = match.called_count + 1
25
+ return match
26
+ end
27
+
28
+ def unused
29
+ @stubs.select{|stub| stub.called_count ==0}
23
30
  end
24
31
 
25
32
 
data/lib/poisol.rb CHANGED
@@ -22,4 +22,8 @@ module Poisol
22
22
  Server.stop
23
23
  reset_data
24
24
  end
25
+
26
+ def wasted
27
+ Stubs.unused
28
+ end
25
29
  end
@@ -56,5 +56,10 @@ describe Poisol::Stub, "#array" do
56
56
  end
57
57
 
58
58
 
59
+ it "empty row array" do
60
+ Rows.new.is_empty.build
61
+ response = RestClient.get "http://localhost:3030/row"
62
+ expect(response.body).to eq([].to_json)
63
+ end
59
64
 
60
65
  end
@@ -0,0 +1,14 @@
1
+ describe Poisol,"#wasted" do
2
+
3
+ it "is wasted" do
4
+ url = Url.new.build()
5
+ url1 = Url.new.build()
6
+ expect(Poisol.wasted).to eq [url,url1]
7
+ end
8
+
9
+ it "is not wasted" do
10
+ url = Url.new.build()
11
+ response = RestClient.get "http://localhost:3030/cda/cd/ragavan/get"
12
+ expect(Poisol.wasted).to eq []
13
+ end
14
+ 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.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Deepak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-01 00:00:00.000000000 Z
11
+ date: 2015-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -134,6 +134,7 @@ files:
134
134
  - lib/poisol/extensions/hash.rb
135
135
  - lib/poisol/extensions/webmock_extensions.rb
136
136
  - lib/poisol/server.rb
137
+ - lib/poisol/stub/build_stub.rb
137
138
  - lib/poisol/stub/request/query_builder.rb
138
139
  - lib/poisol/stub/request/request_body_builder.rb
139
140
  - lib/poisol/stub/request/url_builder.rb
@@ -141,9 +142,9 @@ files:
141
142
  - lib/poisol/stub/response/response_body_builder.rb
142
143
  - lib/poisol/stub/response/status_builder.rb
143
144
  - lib/poisol/stub/stub.rb
144
- - lib/poisol/stub/stub_class_builder.rb
145
- - lib/poisol/stub/stub_instance.rb
146
- - lib/poisol/stub/webrick_stub_builder.rb
145
+ - lib/poisol/stub/stub_builder.rb
146
+ - lib/poisol/stub/stub_builder_class.rb
147
+ - lib/poisol/stub/stub_builder_instance.rb
147
148
  - lib/poisol/stub_config/stub_config.rb
148
149
  - lib/poisol/stub_config/stub_config_builder.rb
149
150
  - lib/poisol/stub_factory.rb
@@ -181,6 +182,7 @@ files:
181
182
  - spec/functional/response/hash_params_spec.rb
182
183
  - spec/functional/response/nested_array_spec.rb
183
184
  - spec/functional/url_spec.rb
185
+ - spec/functional/wasted_spec.rb
184
186
  - spec/spec_helper.rb
185
187
  - spec/unit/exception_spec.rb
186
188
  - spec/unit/extension/hash_spec.rb
@@ -231,6 +233,7 @@ test_files:
231
233
  - spec/unit/exception_spec.rb
232
234
  - spec/unit/stub_spec.rb
233
235
  - spec/spec_helper.rb
236
+ - spec/functional/wasted_spec.rb
234
237
  - spec/functional/multi_domain_spec.rb
235
238
  - spec/functional/key_value/explicit_inclusion_spec.rb
236
239
  - spec/functional/key_value/implicit_inclusion_spec.rb
@@ -1,42 +0,0 @@
1
- module Poisol
2
- module WebrickStubBuilder
3
- def build
4
- build_url
5
- build_query
6
- build_request_body
7
- build_response_body
8
- Stubs.add self
9
- self
10
- end
11
-
12
- private
13
- def build_url
14
- remove_path_param_name_from_url
15
- @request.url = "#{stub_config.request.domain}/#{@request.path}"
16
- end
17
-
18
- def build_query
19
- return if @request.query.blank?
20
- @request.query = @request.query.to_query
21
- end
22
-
23
- def build_request_body
24
- return if @request.body.blank?
25
- @request.body = Parse.hash_to_concatenated_key_value(@request.body) if stub_config.request.is_body_key_value
26
- end
27
-
28
- def build_response_body
29
- @response.body = Parse.hash_array_to_column_hash(@response.body) if stub_config.response.is_column_array and !@is_response_dumped.present?
30
- end
31
-
32
- def remove_path_param_name_from_url
33
- @request.path.scan(/{(.+?)}/).each do |path_params|
34
- path_param = path_params[0]
35
- param_name = path_param.split("|")[0]
36
- param_value = path_param.split("|")[1]
37
- @request.path.sub!("{#{path_param}}",param_value)
38
- end
39
- end
40
-
41
- end
42
- end