rakumarket 0.0.3 → 0.1.0

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.
@@ -90,28 +90,6 @@ describe Rakumarket do
90
90
  end
91
91
  end
92
92
 
93
- context "given a search with genre information" do
94
- before do
95
- @genre_info = Rakumarket.item_search("roomba", :include_genre_info => true).genre_info
96
- end
97
-
98
- it "returns genre information" do
99
- @genre_info.should_not be_empty
100
- end
101
-
102
- it "returns an array of children" do
103
- @genre_info.children.should be_a(Array)
104
- end
105
-
106
- it "returns a single parent" do
107
- @genre_info.parent.should_not be_a(Array)
108
- end
109
-
110
- it "returns the current" do
111
- @genre_info.current.should_not be_a(Array)
112
- end
113
- end
114
-
115
93
  context "given a fruitless search" do
116
94
  it "raises an error " do
117
95
  expect{
@@ -135,17 +113,14 @@ describe Rakumarket do
135
113
  before do
136
114
  @response = Rakumarket.genre_search
137
115
  end
138
- it "returns a list of items" do
116
+ it "returns a list of genres" do
139
117
  @response.children.should be_a(Array)
140
118
  end
141
119
  it "returns a single parent" do
142
120
  @response.parent.should_not be_a(Array)
143
121
  end
144
- it "returns a single current" do
145
- @response.current.should_not be_a(Array)
146
- end
147
- it "returns genres with rubyish attributes" do
148
- @response.children.first.genre_name.should eq('CD・DVD・楽器')
122
+ it "returns genres with attributes" do
123
+ @response.children.first.name.should eq('CD・DVD・楽器')
149
124
  end
150
125
  end
151
126
 
@@ -153,21 +128,18 @@ describe Rakumarket do
153
128
  before do
154
129
  @response = Rakumarket.genre_search(101240)
155
130
  end
156
- it "returns a list of items" do
131
+ it "returns a list of genres" do
157
132
  @response.children.should be_a(Array)
158
133
  end
159
134
  it "returns a single parent" do
160
135
  @response.parent.should_not be_a(Array)
161
136
  end
162
- it "returns a single current" do
163
- @response.current.should_not be_a(Array)
164
- end
165
- it "returns genres with rubyish attributes" do
166
- @response.children.first.genre_name.should eq('DVD')
137
+ it "returns genres with attributes" do
138
+ @response.children.first.name.should eq('DVD')
167
139
  end
168
140
  it "returns the topmost parent" do
169
141
  response = Rakumarket.genre_search(204491)
170
- response.parent.genre_name.should eq('家電')
142
+ response.parent.name.should eq('家電')
171
143
  end
172
144
  end
173
145
 
@@ -178,7 +150,7 @@ describe Rakumarket do
178
150
  end
179
151
  it "returns the immediate parent" do
180
152
  response = Rakumarket.genre_search(204491, :return_immediate_parent => true)
181
- response.parent.genre_name.should eq('生活家電')
153
+ response.parent.name.should eq('生活家電')
182
154
  end
183
155
  end
184
156
 
@@ -191,4 +163,28 @@ describe Rakumarket do
191
163
  end
192
164
  end
193
165
 
166
+ describe "#item_lookup" do
167
+ before do
168
+ VCR.insert_cassette 'item_lookup', :record => :new_episodes
169
+ end
170
+
171
+ after do
172
+ VCR.eject_cassette
173
+ end
174
+
175
+ context "given a simple search" do
176
+ before do
177
+ @response = Rakumarket.item_lookup "act-corp:10000580"
178
+ end
179
+
180
+ it "returns an item" do
181
+ @response.should be_a(Rakumarket::Item)
182
+ end
183
+
184
+ it "returns an item with item attributes" do
185
+ @response.code.should eq("act-corp:10000580")
186
+ end
187
+ end
188
+ end
189
+
194
190
  end
data/spec/spec_helper.rb CHANGED
@@ -7,5 +7,6 @@ VCR.configure do |c|
7
7
  c.hook_into :webmock
8
8
  c.cassette_library_dir = 'fixtures/vcr_casettes'
9
9
  c.filter_sensitive_data("<DEVELOPER_ID>") { Rakumarket.developer_id }
10
+ c.allow_http_connections_when_no_cassette = true
10
11
  end
11
12
 
@@ -0,0 +1,121 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Spitter do
5
+
6
+ context "no conversion" do
7
+ before do
8
+ @params = {:code => "1234"}
9
+ @spitter = Class.new(Spitter){ parameter :code }.new(@params)
10
+ end
11
+
12
+ it "should create the rules" do
13
+ @spitter.class.rules.should eq({:code => ['code',nil]})
14
+ end
15
+
16
+ it "should transform the params" do
17
+ new_params = @spitter.parse
18
+ new_params.should eq({'code' => '1234'})
19
+ end
20
+ end
21
+
22
+ context "simple conversion" do
23
+ before do
24
+ @params = {:item_id => 1}
25
+ @spitter = Class.new(Spitter){ parameter :item_id => 'itemId' }.new(@params)
26
+ end
27
+
28
+ it "should create the rules" do
29
+ @spitter.class.rules.should eq({:item_id => ['itemId',nil]})
30
+ end
31
+
32
+ it "should transform the params" do
33
+ new_params = @spitter.parse
34
+ new_params.should eq({'itemId' => 1})
35
+ end
36
+ end
37
+
38
+ context "proc conversion" do
39
+ before do
40
+ @params = {:item_id => 1}
41
+ @spitter = Class.new(Spitter){ parameter :item_id => lambda {|i| i.to_s.upcase }}.new(@params)
42
+ end
43
+
44
+ it "should create the rules" do
45
+ @spitter.class.rules.should eq({:item_id => ['ITEM_ID',nil]})
46
+ end
47
+
48
+ it "should transform the params" do
49
+ new_params = @spitter.parse
50
+ new_params.should eq({'ITEM_ID' => 1})
51
+ end
52
+ end
53
+
54
+ context "class conversion" do
55
+ before do
56
+ @params = {:item_id => 1}
57
+ klass = Class.new do
58
+ def self.parse val
59
+ val.upcase
60
+ end
61
+ end
62
+ @spitter = Class.new(Spitter){ parameter :item_id => klass }.new(@params)
63
+ end
64
+
65
+ it "should create the rules" do
66
+ @spitter.class.rules.should eq({:item_id => ['ITEM_ID',nil]})
67
+ end
68
+
69
+ it "should transform the params" do
70
+ new_params = @spitter.parse
71
+ new_params.should eq({'ITEM_ID' => 1})
72
+ end
73
+ end
74
+
75
+ context "value conversion with proc" do
76
+ before do
77
+ @params = {:is_cool => true}
78
+ @spitter = Class.new(Spitter){ parameter :is_cool => 'isCool', :with => lambda { |a| a ? "1" : "0" } }.new(@params)
79
+ end
80
+
81
+ it "should transform the params" do
82
+ new_params = @spitter.parse
83
+ new_params.should eq({'isCool' => '1'})
84
+ end
85
+ end
86
+
87
+ context "value conversion with class" do
88
+ before do
89
+ @params = {:is_cool => true}
90
+ klass = Class.new do
91
+ def self.parse val
92
+ val ? "1" : "0"
93
+ end
94
+ end
95
+ @spitter = Class.new(Spitter){ parameter :is_cool => 'isCool', :with => klass }.new(@params)
96
+ end
97
+
98
+ it "should transform the params" do
99
+ new_params = @spitter.parse
100
+ new_params.should eq({'isCool' => '1'})
101
+ end
102
+ end
103
+
104
+ context "nested conversion" do
105
+ before do
106
+ @params = {:shop => {:name => "roomba", :code => "123"} }
107
+ @spitter = Class.new(Spitter) do
108
+ parameters :shop do
109
+ parameter :name => 'shopName'
110
+ parameter :code => 'shopCode'
111
+ end
112
+ end.new(@params)
113
+ end
114
+
115
+ it "should transform the params" do
116
+ new_params = @spitter.parse
117
+ new_params.should eq({'shopName' => 'roomba', 'shopCode' => '123'})
118
+ end
119
+ end
120
+
121
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rakumarket
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-19 00:00:00.000000000 Z
12
+ date: 2012-06-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: hashie
15
+ name: nibbler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.1.3
21
+ version: 1.3.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  none: false
26
26
  requirements:
27
- - - ! '>='
27
+ - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 0.1.3
29
+ version: 1.3.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: httparty
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -120,15 +120,20 @@ files:
120
120
  - README.rdoc
121
121
  - Rakefile
122
122
  - fixtures/vcr_casettes/genre_search.yml
123
+ - fixtures/vcr_casettes/item_lookup.yml
123
124
  - fixtures/vcr_casettes/item_search.yml
124
125
  - lib/rakumarket.rb
125
126
  - lib/rakumarket/client.rb
126
- - lib/rakumarket/genre_search_client.rb
127
- - lib/rakumarket/item_search_client.rb
127
+ - lib/rakumarket/constants.rb
128
+ - lib/rakumarket/models.rb
129
+ - lib/rakumarket/spitter.rb
128
130
  - lib/rakumarket/version.rb
129
131
  - rakumarket.gemspec
132
+ - spec/rakumarket/client_spec.rb
133
+ - spec/rakumarket/models_spec.rb
130
134
  - spec/rakumarket_spec.rb
131
135
  - spec/spec_helper.rb
136
+ - spec/spitter_spec.rb
132
137
  homepage: http://github.com/bonsaiben/rakumarket
133
138
  licenses: []
134
139
  post_install_message:
@@ -1,77 +0,0 @@
1
- module Rakumarket
2
- class GenreSearchClient < Client
3
-
4
- OPERATION = "GenreSearch"
5
- VERSION = "2007-04-11"
6
-
7
- VALID_REQUEST_KEYS = [
8
- :developer_id,
9
- :affiliate_id,
10
- :operation,
11
- :call_back,
12
- :genre_id,
13
- :version,
14
- :return_immediate_parent
15
- ]
16
-
17
- REQUEST_KEYS_TO_TRANSFORM = {
18
- :developer_id => :developerId,
19
- :affiliate_id => :affiliateId,
20
- :call_back => :callBack,
21
- :genre_id => :genreId,
22
- :return_immediate_parent => :genrePath
23
- }
24
-
25
- REQUEST_VALUES_TO_TRANSFORM = {
26
- :genrePath => {false => 1, true => 0}
27
- }
28
-
29
- RESPONSE_GENRE_KEYS_TO_TRANSFORM = {
30
- :genreId => :genre_id,
31
- :genreName => :genre_name,
32
- :itemCount => :item_count,
33
- :genreLevel => :genre_level
34
- }
35
-
36
- private
37
- def respond
38
- @response = @response['Body']['GenreSearch']
39
- super
40
- end
41
-
42
- def default_options
43
- { :developer_id => @developer_id,
44
- :operation => OPERATION,
45
- :version => VERSION }
46
- end
47
-
48
- def transform_response_values!
49
- custom_transform!(@response, 'parent'){|h,k| h[k].first }
50
- custom_transform!(@response, 'current'){|h,k| h[k].first }
51
- super
52
- end
53
-
54
- def transform_response_keys!
55
- custom_transform(@response,'child'){|h,k| h[:children] = h.delete(k) }
56
- @response['children'].each do |child|
57
- transform_keys! child, RESPONSE_GENRE_KEYS_TO_TRANSFORM
58
- end
59
- transform_keys! @response['parent'], RESPONSE_GENRE_KEYS_TO_TRANSFORM if @response['parent']
60
- transform_keys! @response['current'], RESPONSE_GENRE_KEYS_TO_TRANSFORM if @response['current']
61
- super
62
- end
63
-
64
- def valid_request_keys
65
- VALID_REQUEST_KEYS
66
- end
67
-
68
- def request_keys_to_transform
69
- REQUEST_KEYS_TO_TRANSFORM
70
- end
71
-
72
- def request_values_to_transform
73
- REQUEST_VALUES_TO_TRANSFORM
74
- end
75
-
76
- end
77
- end