poisol 0.0.7 → 0.0.8

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: 8abf193ecda6405403135d4a97ef83f8624a473d
4
- data.tar.gz: 6437b016ab0c650a7cc8d538a9bcfbc9d7cae960
3
+ metadata.gz: 534d85b7e97186a0fb7bb51365f92dd513431be2
4
+ data.tar.gz: ad63697e35dce8bef219598deef37270b0f67afb
5
5
  SHA512:
6
- metadata.gz: 92d9e28ab866ad697989d0606676873606a000206a1d8f7d05ffcd9c9f51f61fc2c91b50bd307084979c7f6255c4f750827eef18b6e3eea22934f9c4aae1bba3
7
- data.tar.gz: 07e667e2ea26181722cc3bcf2a44474ee79735babd771e21803cadb67dcde5aa002f224413a7366831100f12b5ba816e1921e30a1f5f9a144e35ad5a1c907162
6
+ metadata.gz: 998572b0699167bbc9ed8bacfee2b9e31a44bf61fb018b330094d821af9fd91539a056513130742509fba0ef1a1b19db800b94405b62180fedb153b3a50ec217
7
+ data.tar.gz: d6c72a945f02c74fd70098399a3f0ee386a8414a26d04c1edd515ec283a2d9541dcdacc2c379d9dae584413db5de3b3d87d6eea2155521ba5d97c7ab09f7d43e
data/lib/poisol/domain.rb CHANGED
@@ -1,12 +1,9 @@
1
1
  class Domain
2
- def self.load domain_config
2
+ def load domain_config
3
3
  base_hash = Parse.yaml_file domain_config
4
4
  domain = base_hash["domain"]
5
5
  port = base_hash["port"]
6
- @@base_url = "#{domain.chomp('\\')}#{ port.present? ? ":#{port}" : "" }"
6
+ "#{domain.chomp('\\')}#{ port.present? ? ":#{port}" : "" }"
7
7
  end
8
8
 
9
- def self.base_url
10
- @@base_url
11
- end
12
9
  end
@@ -7,6 +7,11 @@ class StubConfig
7
7
  self
8
8
  end
9
9
 
10
+ def with_domain domain
11
+ @domain = domain
12
+ self
13
+ end
14
+
10
15
  def is_inline
11
16
  @is_inline = true
12
17
  self
@@ -26,6 +31,7 @@ class StubConfig
26
31
  private
27
32
  def build_request
28
33
  @request = Request.new
34
+ @request.domain=@domain.clone
29
35
  @request.url = @config_yml["request"]["url"]
30
36
  @request.type = @config_yml["request"]["type"].intern
31
37
  @request.query = @config_yml["request"]["query"]
@@ -80,7 +86,7 @@ end
80
86
 
81
87
 
82
88
  class Request
83
- attr_accessor :url,:type,:query,:body,:is_body_key_value,:include_explicit_only
89
+ attr_accessor :domain,:url,:type,:query,:body,:is_body_key_value,:include_explicit_only
84
90
  end
85
91
 
86
92
  class Response
@@ -4,7 +4,7 @@ class StubFactory
4
4
  domain_config = Dir["#{folder}/domain.yml"].first
5
5
  explolded_configs = Dir["#{folder}/**/config.yml"]
6
6
  inline_configs = Dir["#{folder}/**/*.yml"] - ( (explolded_configs.nil?) ? [] : explolded_configs) - [domain_config]
7
- Domain.load domain_config
7
+ @domain = Domain.new.load domain_config
8
8
  generate_exploded_config explolded_configs unless explolded_configs.nil?
9
9
  generate_inline_config inline_configs unless inline_configs.nil?
10
10
  end
@@ -15,7 +15,7 @@ class StubFactory
15
15
  def generate_exploded_config explolded_configs
16
16
  explolded_configs.each do |config_file|
17
17
  dynamic_name = FileUtil.titilze_parent_dir config_file
18
- config = StubConfig.new.is_exploded.with_file(config_file).build
18
+ config = StubConfig.new.is_exploded.with_file(config_file).with_domain(@domain).build
19
19
  create_class dynamic_name,config
20
20
  end
21
21
  end
@@ -23,7 +23,7 @@ class StubFactory
23
23
  def generate_inline_config inline_configs
24
24
  inline_configs.each do |config_file|
25
25
  dynamic_name = FileUtil.titilze_file_name config_file
26
- config = StubConfig.new.is_inline.with_file(config_file).build
26
+ config = StubConfig.new.is_inline.with_file(config_file).with_domain(@domain).build
27
27
  create_class dynamic_name,config
28
28
  end
29
29
  end
@@ -8,7 +8,7 @@ module ClassTemplate
8
8
 
9
9
  def build_url
10
10
  remove_path_param_name_from_url
11
- @stub = stub_request(@type, "http://#{Domain.base_url}/#{@url}")
11
+ @stub = stub_request(@type, "http://#{@config.request.domain}/#{@url}")
12
12
  end
13
13
 
14
14
  def build_query
@@ -23,7 +23,7 @@ module ClassTemplate
23
23
 
24
24
  def build_response_body
25
25
  @response_body = Parse.hash_array_to_column_hash(@response_body) if @config.response.is_column_array
26
- @stub.to_return(:status => 200, :body => @response_body.to_s, :headers => {})
26
+ @stub.to_return(:status => 200, :body => @response_body.to_json, :headers => {'Content-Type' => 'application/json'})
27
27
  end
28
28
  end
29
29
 
@@ -1,6 +1,8 @@
1
1
  module ClassTemplate
2
2
  def generate_methods_to_alter_path_params
3
3
  @url = @config.request.url.clone
4
+ @url.strip!
5
+ @url.sub!("/","") if @url[0].eql? "/"
4
6
  @url.scan(/{(.+?)}/).each do |path_params|
5
7
  path_param = path_params[0]
6
8
  param_name = path_param.split("|")[0]
@@ -14,7 +16,6 @@ module ClassTemplate
14
16
  end
15
17
  end
16
18
 
17
-
18
19
  def remove_path_param_name_from_url
19
20
  @url.scan(/{(.+?)}/).each do |path_params|
20
21
  path_param = path_params[0]
@@ -0,0 +1,2 @@
1
+ domain: "localhos"
2
+ port: "801"
@@ -0,0 +1,7 @@
1
+ request:
2
+ url: first
3
+ type: get
4
+ response:
5
+ body: '{
6
+ "title": "1"
7
+ }'
@@ -0,0 +1,2 @@
1
+ domain: "localhos"
2
+ port: "802"
@@ -0,0 +1,7 @@
1
+ request:
2
+ url: second
3
+ type: get
4
+ response:
5
+ body: '{
6
+ "title": "1"
7
+ }'
@@ -0,0 +1,9 @@
1
+ request:
2
+ url: column
3
+ type: get
4
+ response:
5
+ array_type: column
6
+ body: '{
7
+ "title": "independance",
8
+ "category": "10"
9
+ }'
@@ -0,0 +1,11 @@
1
+ request:
2
+ url: row
3
+ type: get
4
+ response:
5
+ array_type: row
6
+ body: '{
7
+ "title": "independance",
8
+ "category": {
9
+ "age_group": "10"
10
+ }
11
+ }'
@@ -0,0 +1,17 @@
1
+ request:
2
+ url: book
3
+ type: get
4
+ query:
5
+ author: "bharathi"
6
+ response:
7
+ body: '{
8
+ "title": "independance",
9
+ "category": {
10
+ "age_group": "10",
11
+ "genre": "action",
12
+ "publisher": {
13
+ "name": "summa",
14
+ "place":"erode"
15
+ }
16
+ }
17
+ }'
@@ -0,0 +1,2 @@
1
+ domain: "localhost"
2
+ port: "80"
@@ -0,0 +1,9 @@
1
+ request:
2
+ url: explicit
3
+ type: post
4
+ include_explicit_only: true
5
+ body:
6
+ name: "sea"
7
+ age: 10
8
+ response:
9
+ body: '{"hi": 1}'
@@ -0,0 +1,8 @@
1
+ request:
2
+ url: keyvalue
3
+ type: post
4
+ body:
5
+ name: "sea"
6
+ age: 10
7
+ response:
8
+ body: '{"hi": 1}'
@@ -0,0 +1,13 @@
1
+ request:
2
+ url: nested_array
3
+ type: get
4
+ response:
5
+ body: '{
6
+ "title": "ind",
7
+ "roles": [
8
+ {
9
+ "role_id": "chumma",
10
+ "role_name": "sol"
11
+ }
12
+ ]
13
+ }'
@@ -0,0 +1,5 @@
1
+ request:
2
+ url: 'cda/{name|cd}/{actor|ragavan}/get'
3
+ type: get
4
+ response:
5
+ body: '{"hi": 1}'
@@ -0,0 +1,3 @@
1
+ request:
2
+ url: users
3
+ type: post
@@ -0,0 +1,3 @@
1
+ {
2
+ "name":"deepak"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "job":"sleeping_bag"
3
+ }
@@ -9,7 +9,7 @@ describe ClassTemplate, "#array" do
9
9
  it "column array" do
10
10
  Columns.new.has_column.has_column.with_title("abc").with_category("12").build
11
11
  response = RestClient.get "http://localhost:80/column"
12
- expect(response.body).to eq({"title"=>["independance", "abc"], "category"=>["10","12"]}.to_s)
12
+ expect(response.body).to eq({"title"=>["independance", "abc"], "category"=>["10","12"]}.to_json)
13
13
  end
14
14
 
15
15
  it "empty row array" do
@@ -21,7 +21,7 @@ describe ClassTemplate, "#array" do
21
21
  it "row array" do
22
22
  Rows.new.has_row.has_row.with_title("abc").with_category("age_group" => "12").build
23
23
  response = RestClient.get "http://localhost:80/row"
24
- expect(response.body).to eq([{"title"=>"independance", "category"=>{"age_group"=>"10"}}, {"title"=>"abc", "category"=>{"age_group"=>"12"}}].to_s)
24
+ expect(response.body).to eq([{"title"=>"independance", "category"=>{"age_group"=>"10"}}, {"title"=>"abc", "category"=>{"age_group"=>"12"}}].to_json)
25
25
  end
26
26
 
27
27
 
@@ -1,9 +1,9 @@
1
1
  describe ClassTemplate, "#dumb response" do
2
2
 
3
3
  it "column array" do
4
- Columns.new.set_dumb_response("data/user/response.json").build
4
+ Columns.new.set_dumb_response("spec/data/main/user/response.json").build
5
5
  response = RestClient.get "http://localhost:80/column"
6
- expect(response.body).to eq( "{\"job\"=>\"sleeping_bag\"}")
6
+ expect(response.body).to eq({"job"=>"sleeping_bag"}.to_json)
7
7
  end
8
8
 
9
9
  end
@@ -3,13 +3,13 @@ describe ClassTemplate, "#get_books" do
3
3
  it "dynamic response" do
4
4
  Book.new.has_category({"age_group"=>"11", "publisher"=>{"name"=>"oxford"}}).build()
5
5
  response = RestClient.get "http://localhost:80/book",{:params => {:author=>'bharathi'}}
6
- expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"11", "genre"=>"action", "publisher"=>{"name"=>"oxford", "place"=>"erode"}}}.to_s)
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
 
9
9
  it "default request and response" do
10
10
  Book.new.build()
11
11
  response = RestClient.get "http://localhost:80/book",{:params => {:author=>'bharathi'}}
12
- expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_s)
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
15
  end
@@ -3,13 +3,13 @@ describe ClassTemplate, "#key_value" do
3
3
  it "partial dynamic request" do
4
4
  Explicit.new.by_name("ram").build()
5
5
  response = RestClient.post "http://localhost:80/explicit","name=ram"
6
- expect(response.body).to eq({"hi"=>1}.to_s)
6
+ expect(response.body).to eq({"hi"=>1}.to_json)
7
7
  end
8
8
 
9
9
  it "dynamic request" do
10
10
  Explicit.new.by_name("ram").by_age(11).build()
11
11
  response = RestClient.post "http://localhost:80/explicit","name=ram&age=11"
12
- expect(response.body).to eq({"hi"=>1}.to_s)
12
+ expect(response.body).to eq({"hi"=>1}.to_json)
13
13
  end
14
14
 
15
15
  end
@@ -3,19 +3,19 @@ describe ClassTemplate, "#key_value" do
3
3
  it "default request" do
4
4
  KeyValue.new.build()
5
5
  response = RestClient.post "http://localhost:80/keyvalue","name=sea&age=10"
6
- expect(response.body).to eq({"hi"=>1}.to_s)
6
+ expect(response.body).to eq({"hi"=>1}.to_json)
7
7
  end
8
8
 
9
9
  it "partial dynamic request" do
10
10
  KeyValue.new.by_name("ram").build()
11
11
  response = RestClient.post "http://localhost:80/keyvalue","name=ram&age=10"
12
- expect(response.body).to eq({"hi"=>1}.to_s)
12
+ expect(response.body).to eq({"hi"=>1}.to_json)
13
13
  end
14
14
 
15
15
  it "dynamic request" do
16
16
  KeyValue.new.by_name("ram").by_age(11).build()
17
17
  response = RestClient.post "http://localhost:80/keyvalue","name=ram&age=11"
18
- expect(response.body).to eq({"hi"=>1}.to_s)
18
+ expect(response.body).to eq({"hi"=>1}.to_json)
19
19
  end
20
20
 
21
21
  end
@@ -0,0 +1,13 @@
1
+ describe ClassTemplate, "#multi domain" do
2
+
3
+ it "support multi domain" do
4
+ First.new.build
5
+ response = RestClient.get "http://localhos:801/first"
6
+ expect(response.body).to eq({"title"=>"1"}.to_json)
7
+ Second.new.build
8
+ response = RestClient.get "http://localhos:802/second"
9
+ expect(response.body).to eq({"title"=>"1"}.to_json)
10
+ end
11
+ end
12
+
13
+
@@ -3,31 +3,31 @@ describe ClassTemplate, "#nested array" do
3
3
  it "empty" do
4
4
  NestedArray.new.has_no_role.build()
5
5
  response = RestClient.get "http://localhost:80/nested_array"
6
- expect(response.body).to eq({"title"=>"ind", "roles"=>[]}.to_s)
6
+ expect(response.body).to eq({"title"=>"ind", "roles"=>[]}.to_json)
7
7
  end
8
8
 
9
9
  it "without mentioning field" do
10
10
  NestedArray.new.build()
11
11
  response = RestClient.get "http://localhost:80/nested_array"
12
- expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"}]}.to_s)
12
+ expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"}]}.to_json)
13
13
  end
14
14
 
15
15
  it "mentioning one field" do
16
16
  NestedArray.new.has_role.build()
17
17
  response = RestClient.get "http://localhost:80/nested_array"
18
- expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"}]}.to_s)
18
+ expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"}]}.to_json)
19
19
  end
20
20
 
21
21
  it "mentioning one field with altered values" do
22
22
  NestedArray.new.has_role("role_id"=>"test1").build()
23
23
  response = RestClient.get "http://localhost:80/nested_array"
24
- expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"test1", "role_name"=>"sol"}]}.to_s)
24
+ expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"test1", "role_name"=>"sol"}]}.to_json)
25
25
  end
26
26
 
27
27
  it "multiple fields with altered values" do
28
28
  NestedArray.new.has_role.has_another_role("role_id"=>"test").build()
29
29
  response = RestClient.get "http://localhost:80/nested_array"
30
- expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"},{"role_id"=>"test", "role_name"=>"sol"}]}.to_s)
30
+ expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"},{"role_id"=>"test", "role_name"=>"sol"}]}.to_json)
31
31
  end
32
32
 
33
33
  end
@@ -3,7 +3,7 @@ describe ClassTemplate, "#post_user" do
3
3
  it "default request and response" do
4
4
  User.new.build()
5
5
  response = RestClient.post "http://localhost:80/users","name"=>"deepak"
6
- expect(response.body).to eq({"job"=>'sleeping_bag'}.to_s)
6
+ expect(response.body).to eq({"job"=>'sleeping_bag'}.to_json)
7
7
  end
8
8
 
9
9
  it "dynamic request and response" do
@@ -11,7 +11,7 @@ describe ClassTemplate, "#post_user" do
11
11
  job = "vetti"
12
12
  User.new.by_name(name).has_job(job).build()
13
13
  response = RestClient.post "http://localhost:80/users","name"=>name
14
- expect(response.body).to eq({"job"=>job}.to_s)
14
+ expect(response.body).to eq({"job"=>job}.to_json)
15
15
  end
16
16
 
17
17
  end
@@ -3,19 +3,19 @@ describe ClassTemplate, "#url" do
3
3
  it "default" do
4
4
  Url.new.build()
5
5
  response = RestClient.get "http://localhost:80/cda/cd/ragavan/get"
6
- expect(response.body).to eq({"hi"=>1}.to_s)
6
+ expect(response.body).to eq({"hi"=>1}.to_json)
7
7
  end
8
8
 
9
9
  it "dynamic" do
10
10
  Url.new.for_name("hitler").for_actor("mani").build()
11
11
  response = RestClient.get "http://localhost:80/cda/hitler/mani/get"
12
- expect(response.body).to eq({"hi"=>1}.to_s)
12
+ expect(response.body).to eq({"hi"=>1}.to_json)
13
13
  end
14
14
 
15
15
  it "partial" do
16
16
  Url.new.for_actor("mani").build()
17
17
  response = RestClient.get "http://localhost:80/cda/cd/mani/get"
18
- expect(response.body).to eq({"hi"=>1}.to_s)
18
+ expect(response.body).to eq({"hi"=>1}.to_json)
19
19
  end
20
20
 
21
21
  end
data/spec/spec_helper.rb CHANGED
@@ -21,7 +21,9 @@ RSpec.configure do |config|
21
21
 
22
22
  config.before(:suite) do
23
23
  WebMock.disable_net_connect!(:allow_localhost => true)
24
- factory = StubFactory.new.build("data")
24
+ factory = StubFactory.new.build("spec/data/main")
25
+ factory = StubFactory.new.build("spec/data/domain/first/")
26
+ factory = StubFactory.new.build("spec/data/domain/second/")
25
27
  end
26
28
 
27
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poisol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Deepak
@@ -142,11 +142,27 @@ files:
142
142
  - lib/poisol/template/url_handler.rb
143
143
  - lib/poisol/utils/file_util.rb
144
144
  - lib/poisol/utils/parse.rb
145
+ - spec/data/domain/first/domain.yml
146
+ - spec/data/domain/first/first.yml
147
+ - spec/data/domain/second/domain.yml
148
+ - spec/data/domain/second/second.yml
149
+ - spec/data/main/array/columns.yml
150
+ - spec/data/main/array/rows.yml
151
+ - spec/data/main/book.yml
152
+ - spec/data/main/domain.yml
153
+ - spec/data/main/key_value/explicit.yml
154
+ - spec/data/main/key_value/key_value.yml
155
+ - spec/data/main/nested_array.yml
156
+ - spec/data/main/url.yml
157
+ - spec/data/main/user/config.yml
158
+ - spec/data/main/user/request.json
159
+ - spec/data/main/user/response.json
145
160
  - spec/functional/array_spec.rb
146
161
  - spec/functional/dumb_response_spec.rb
147
162
  - spec/functional/get_spec.rb
148
163
  - spec/functional/key_value/explicit_inclusion_spec.rb
149
164
  - spec/functional/key_value/implicit_inclusion_spec.rb
165
+ - spec/functional/multi_domain_spec.rb
150
166
  - spec/functional/nested_array_spec.rb
151
167
  - spec/functional/post_spec.rb
152
168
  - spec/functional/url_spec.rb
@@ -176,7 +192,23 @@ signing_key:
176
192
  specification_version: 4
177
193
  summary: Generate builders for http stubs
178
194
  test_files:
195
+ - spec/data/domain/first/domain.yml
196
+ - spec/data/domain/first/first.yml
197
+ - spec/data/domain/second/domain.yml
198
+ - spec/data/domain/second/second.yml
199
+ - spec/data/main/user/config.yml
200
+ - spec/data/main/user/request.json
201
+ - spec/data/main/user/response.json
202
+ - spec/data/main/array/columns.yml
203
+ - spec/data/main/array/rows.yml
204
+ - spec/data/main/domain.yml
205
+ - spec/data/main/url.yml
206
+ - spec/data/main/nested_array.yml
207
+ - spec/data/main/key_value/explicit.yml
208
+ - spec/data/main/key_value/key_value.yml
209
+ - spec/data/main/book.yml
179
210
  - spec/spec_helper.rb
211
+ - spec/functional/multi_domain_spec.rb
180
212
  - spec/functional/array_spec.rb
181
213
  - spec/functional/get_spec.rb
182
214
  - spec/functional/key_value/explicit_inclusion_spec.rb