poisol 0.0.1 → 0.0.3
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 +4 -4
- data/README.md +17 -8
- data/lib/poisol/template/{class_template.rb → base_template.rb} +1 -1
- data/lib/poisol/template/query_handler.rb +1 -1
- data/lib/poisol/template/response_handler.rb +23 -4
- data/lib/poisol/utils/parse.rb +1 -0
- data/spec/{class_template → functional}/array_spec.rb +14 -2
- data/spec/{class_template → functional}/get_spec.rb +2 -2
- data/spec/functional/nested_array_spec.rb +21 -0
- data/spec/{class_template → functional}/post_spec.rb +2 -2
- metadata +45 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c61f7f85517d8fdce4395b7bea859c1bde46c242
|
4
|
+
data.tar.gz: 3a974a5502173940f797601f09aa44d3569cd6fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a510ded49b4c852a949dbaf07aad380803ade082bc1d0fcd0ecb2519b890c4d45dd0f92e83020cbe763db7d1d4bb9675a756b10d159347a6f36bad895cac06bc
|
7
|
+
data.tar.gz: 6caeff45c98dee0aa8b593c7100920fd4b2018c82760de49650699341499f111dd9b470bf3bd9a12a9685031f55fc5408831263b28b49039075440313c287735
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
[](https://travis-ci.org/paramadeep/poisol) [](https://gemnasium.com/paramadeep/poisol) [](https://codeclimate.com/github/paramadeep/poisol)
|
2
|
+
[](https://travis-ci.org/paramadeep/poisol) [](https://gemnasium.com/paramadeep/poisol) [](https://codeclimate.com/github/paramadeep/poisol)
|
3
3
|
|
4
4
|
#Poisol
|
5
5
|
|
@@ -37,22 +37,31 @@ Poisol, dynamically generates class called 'User', with methods 'byName' and 'ha
|
|
37
37
|
|
38
38
|
The following can be dynamically configured
|
39
39
|
- Request
|
40
|
-
- url
|
40
|
+
- url
|
41
41
|
- type
|
42
42
|
- query params
|
43
43
|
- request body
|
44
44
|
- Response
|
45
|
-
- code
|
46
|
-
- header
|
45
|
+
- code
|
46
|
+
- header
|
47
47
|
- response body
|
48
48
|
|
49
|
+
## Prepositions
|
50
|
+
|
51
|
+
|Preposition| for defining|
|
52
|
+
|----:|:----|
|
53
|
+
|for|url & query params |
|
54
|
+
|by|request body filed/array item|
|
55
|
+
|having|request body array item field|
|
56
|
+
|has|response body field/array item|
|
57
|
+
|with|response body array item field|
|
58
|
+
|
49
59
|
##ToDo
|
50
|
-
* Nested json
|
51
|
-
* Array json (column & row)
|
52
|
-
* Nested array json
|
53
60
|
* URL config
|
54
61
|
* Response code and header config
|
55
|
-
*
|
62
|
+
* Functional test for query params
|
63
|
+
* Refactor Response Handler
|
64
|
+
* Generate Request Handler, based on Response Handler
|
56
65
|
* Documentation for 'getting started' and details
|
57
66
|
* Test coverage
|
58
67
|
* Throw error when configured and input field values are different
|
@@ -30,7 +30,7 @@ module ClassTemplate
|
|
30
30
|
stub.with(:query => @query) unless @query.eql? ""
|
31
31
|
stub.with(:body => @request_body) unless @request_body.eql? ""
|
32
32
|
@response_body = Parse.hash_array_to_column_hash(@response_body) if @config.response.array_type == "column_array"
|
33
|
-
stub.to_return(:status => 200, :body => @response_body, :headers => {})
|
33
|
+
stub.to_return(:status => 200, :body => @response_body.to_s, :headers => {})
|
34
34
|
end
|
35
35
|
|
36
36
|
end
|
@@ -2,7 +2,7 @@ module ClassTemplate
|
|
2
2
|
def generate_query_methods
|
3
3
|
@query = @config.request.query
|
4
4
|
@query.each do |field|
|
5
|
-
define_singleton_method("
|
5
|
+
define_singleton_method("for_#{field[0]}") do |*value|
|
6
6
|
@query[field[0]] = value[0]
|
7
7
|
self
|
8
8
|
end
|
@@ -16,9 +16,14 @@ module ClassTemplate
|
|
16
16
|
@response_body_object.each do |field|
|
17
17
|
field_name = field[0]
|
18
18
|
actual_field_value = field[1]
|
19
|
-
|
19
|
+
is_array = (actual_field_value.class.to_s == "Array")
|
20
|
+
actual_field_value = actual_field_value[0] if is_array
|
21
|
+
@response_body.last[field_name] = [] if is_array
|
22
|
+
method_name = is_array ? ("with_#{field_name.classify.underscore}") : ("with_#{field_name.underscore}")
|
23
|
+
define_singleton_method(method_name) do |*input_value|
|
20
24
|
input_value = input_value[0]
|
21
|
-
|
25
|
+
assignment_value = get_assignment_value actual_field_value,input_value
|
26
|
+
@response_body.last[field_name] = is_array ? (@response_body.last[field_name] << assignment_value) : assignment_value
|
22
27
|
self
|
23
28
|
end
|
24
29
|
end
|
@@ -38,12 +43,26 @@ module ClassTemplate
|
|
38
43
|
@response_body.each do |field|
|
39
44
|
field_name = field[0]
|
40
45
|
actual_field_value = field[1]
|
41
|
-
|
46
|
+
is_array = (actual_field_value.class.to_s == "Array")
|
47
|
+
@response_body[field_name] = [] if is_array
|
48
|
+
actual_field_value = actual_field_value[0] if is_array
|
49
|
+
method_name = is_array ? ("has_#{field_name.classify.underscore}") : ("has_#{field_name.underscore}")
|
50
|
+
define_singleton_method(method_name) do |*input_value|
|
42
51
|
input_value = input_value[0]
|
43
|
-
|
52
|
+
assignment_value = get_assignment_value actual_field_value,input_value
|
53
|
+
@response_body[field_name] = is_array ? (@response_body[field_name] << assignment_value) : assignment_value
|
44
54
|
self
|
45
55
|
end
|
46
56
|
end
|
47
57
|
end
|
48
58
|
|
59
|
+
def get_assignment_value actual_field_value,input_value
|
60
|
+
if actual_field_value.class.to_s == "Hash"
|
61
|
+
input_value = {} if input_value.blank?
|
62
|
+
actual_field_value.deep_merge(input_value)
|
63
|
+
else
|
64
|
+
input_value
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
49
68
|
end
|
data/lib/poisol/utils/parse.rb
CHANGED
@@ -3,13 +3,25 @@ describe ClassTemplate, "#array" do
|
|
3
3
|
it "column array" do
|
4
4
|
Columns.new.has_column.has_column.with_title("abc").with_category("12").build
|
5
5
|
response = RestClient.get "http://localhost:80/column"
|
6
|
-
expect(response.body).to eq({"title"=>["independance", "abc"], "category"=>["10","12"]})
|
6
|
+
expect(response.body).to eq({"title"=>["independance", "abc"], "category"=>["10","12"]}.to_s)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "empty column array" do
|
10
|
+
Columns.new.build
|
11
|
+
response = RestClient.get "http://localhost:80/column"
|
12
|
+
expect(response.body).to eq("[]")
|
7
13
|
end
|
8
14
|
|
9
15
|
it "row array" do
|
10
16
|
Rows.new.has_row.has_row.with_title("abc").with_category("age_group" => "12").build
|
11
17
|
response = RestClient.get "http://localhost:80/row"
|
12
|
-
expect(response.body).to eq([{"title"=>"independance", "category"=>{"age_group"=>"10"}}, {"title"=>"abc", "category"=>{"age_group"=>"12"}}])
|
18
|
+
expect(response.body).to eq([{"title"=>"independance", "category"=>{"age_group"=>"10"}}, {"title"=>"abc", "category"=>{"age_group"=>"12"}}].to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "empty row array" do
|
22
|
+
Rows.new.build
|
23
|
+
response = RestClient.get "http://localhost:80/row"
|
24
|
+
expect(response.body).to eq("[]")
|
13
25
|
end
|
14
26
|
|
15
27
|
end
|
@@ -3,13 +3,13 @@ describe ClassTemplate, "#get_books" do
|
|
3
3
|
it "default request and response" do
|
4
4
|
Book.new.build()
|
5
5
|
response = RestClient.get "http://localhost:80/book",{:params => {:author=>'bharathi'}}
|
6
|
-
expect(response.body).to eq("title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}})
|
6
|
+
expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_s)
|
7
7
|
end
|
8
8
|
|
9
9
|
it "dynamic response" do
|
10
10
|
Book.new.has_category({"age_group"=>"11", "publisher"=>{"name"=>"oxford"}}).build()
|
11
11
|
response = RestClient.get "http://localhost:80/book",{:params => {:author=>'bharathi'}}
|
12
|
-
expect(response.body).to eq("title"=>"independance", "category"=>{"age_group"=>"11", "genre"=>"action", "publisher"=>{"name"=>"oxford", "place"=>"erode"}})
|
12
|
+
expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"11", "genre"=>"action", "publisher"=>{"name"=>"oxford", "place"=>"erode"}}}.to_s)
|
13
13
|
end
|
14
14
|
|
15
15
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
describe ClassTemplate, "#nested array" do
|
2
|
+
|
3
|
+
#it "empty" do
|
4
|
+
#NestedArray.new.build()
|
5
|
+
#response = RestClient.get "http://localhost:80/nested_array"
|
6
|
+
#expect(response.body).to eq({"title"=>"ind", "roles"=>[]}.to_s)
|
7
|
+
#end
|
8
|
+
|
9
|
+
it "default" do
|
10
|
+
NestedArray.new.has_role.build()
|
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)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "dynamic" do
|
16
|
+
NestedArray.new.has_role.has_role("role_id"=>"test").build()
|
17
|
+
response = RestClient.get "http://localhost:80/nested_array"
|
18
|
+
expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"},{"role_id"=>"test", "role_name"=>"sol"}]}.to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
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')
|
6
|
+
expect(response.body).to eq({"job"=>'sleeping_bag'}.to_s)
|
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)
|
14
|
+
expect(response.body).to eq({"job"=>job}.to_s)
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
metadata
CHANGED
@@ -1,128 +1,128 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poisol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Deepak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: pry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0
|
54
|
+
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rubygems-tasks
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: simplecov
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0
|
75
|
+
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0
|
82
|
+
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: webmock
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rest-client
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: activesupport
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
125
|
-
description:
|
124
|
+
version: '0'
|
125
|
+
description: Generate builders for http stubs
|
126
126
|
email:
|
127
127
|
executables: []
|
128
128
|
extensions: []
|
@@ -134,15 +134,16 @@ files:
|
|
134
134
|
- lib/poisol/domain.rb
|
135
135
|
- lib/poisol/stub_config.rb
|
136
136
|
- lib/poisol/stub_factory.rb
|
137
|
-
- lib/poisol/template/
|
137
|
+
- lib/poisol/template/base_template.rb
|
138
138
|
- lib/poisol/template/query_handler.rb
|
139
139
|
- lib/poisol/template/request_handler.rb
|
140
140
|
- lib/poisol/template/response_handler.rb
|
141
141
|
- lib/poisol/utils/file_util.rb
|
142
142
|
- lib/poisol/utils/parse.rb
|
143
|
-
- spec/
|
144
|
-
- spec/
|
145
|
-
- spec/
|
143
|
+
- spec/functional/array_spec.rb
|
144
|
+
- spec/functional/get_spec.rb
|
145
|
+
- spec/functional/nested_array_spec.rb
|
146
|
+
- spec/functional/post_spec.rb
|
146
147
|
- spec/spec_helper.rb
|
147
148
|
homepage: https://github.com/paramadeep/poisol
|
148
149
|
licenses:
|
@@ -167,9 +168,10 @@ rubyforge_project:
|
|
167
168
|
rubygems_version: 2.2.2
|
168
169
|
signing_key:
|
169
170
|
specification_version: 4
|
170
|
-
summary:
|
171
|
+
summary: Generate builders for http stubs
|
171
172
|
test_files:
|
172
173
|
- spec/spec_helper.rb
|
173
|
-
- spec/
|
174
|
-
- spec/
|
175
|
-
- spec/
|
174
|
+
- spec/functional/array_spec.rb
|
175
|
+
- spec/functional/get_spec.rb
|
176
|
+
- spec/functional/post_spec.rb
|
177
|
+
- spec/functional/nested_array_spec.rb
|