rakumarket 0.1.0 → 0.2.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.
@@ -0,0 +1,31 @@
1
+ {
2
+ "Body": null,
3
+ "Header": {
4
+ "Status": "NotFound",
5
+ "Args": {
6
+ "Arg": {
7
+ "apiVersion": {
8
+ "content": true,
9
+ "value": "30"
10
+ },
11
+ "operation": {
12
+ "content": true,
13
+ "value": "ItemSearch"
14
+ },
15
+ "developerId": {
16
+ "content": true,
17
+ "value": "***"
18
+ },
19
+ "keyword": {
20
+ "content": true,
21
+ "value": "askdjfalsjdf"
22
+ },
23
+ "version": {
24
+ "content": true,
25
+ "value": "2010-09-15"
26
+ }
27
+ }
28
+ },
29
+ "StatusMsg": ""
30
+ }
31
+ }
@@ -14,7 +14,6 @@ end
14
14
 
15
15
 
16
16
  describe Rakumarket::ItemSearchClient do
17
-
18
17
  describe "parameters" do
19
18
  it "should have an operation by default" do
20
19
  params = {}
@@ -28,7 +27,7 @@ describe Rakumarket::ItemSearchClient do
28
27
 
29
28
  it "should have a developer_id by default" do
30
29
  params = {}
31
- Rakumarket::ItemSearchClient.new(params).parse['developerId'].should eq(ENV['DEVELOPER_ID'])
30
+ Rakumarket::ItemSearchClient.new(params).parse['developerId'].should eq(Rakumarket.developer_id)
32
31
  end
33
32
 
34
33
  it "should transform a keyword" do
@@ -166,77 +165,133 @@ describe Rakumarket::ItemSearchClient do
166
165
  Rakumarket::ItemSearchClient.new(params).parse['creditCardFlag'].should eq("1")
167
166
  end
168
167
  end
168
+ end
169
169
 
170
- describe Rakumarket::GenreSearchClient do
170
+ describe Rakumarket::GenreSearchClient do
171
+ describe "parameters" do
172
+ it "should have an operation by default" do
173
+ params = {}
174
+ Rakumarket::GenreSearchClient.new(params).parse['operation'].should eq("GenreSearch")
175
+ end
171
176
 
172
- describe "parameters" do
173
- it "should have an operation by default" do
174
- params = {}
175
- Rakumarket::GenreSearchClient.new(params).parse['operation'].should eq("GenreSearch")
176
- end
177
+ it "should have a version by default" do
178
+ params = {}
179
+ Rakumarket::GenreSearchClient.new(params).parse['version'].should eq("2007-04-11")
180
+ end
177
181
 
178
- it "should have a version by default" do
179
- params = {}
180
- Rakumarket::GenreSearchClient.new(params).parse['version'].should eq("2007-04-11")
181
- end
182
+ it "should have a developer_id by default" do
183
+ params = {}
184
+ Rakumarket::GenreSearchClient.new(params).parse['developerId'].should eq(Rakumarket.developer_id)
185
+ end
186
+ end
182
187
 
183
- it "should have a developer_id by default" do
184
- params = {}
185
- Rakumarket::GenreSearchClient.new(params).parse['developerId'].should eq(ENV['DEVELOPER_ID'])
186
- end
188
+ it "should transform genre_id" do
189
+ params = {:genre_id => "abc"}
190
+ Rakumarket::GenreSearchClient.new(params).parse['genreId'].should eq("abc")
191
+ end
192
+
193
+ it "should transform return_immediate_parent" do
194
+ params = {:return_immediate_parent => true}
195
+ Rakumarket::GenreSearchClient.new(params).parse['genrePath'].should eq("0")
196
+ end
197
+ end
198
+
199
+ describe Rakumarket::ItemLookupClient do
200
+ it "should transform code to itemCode" do
201
+ params = {:code => "abc"}
202
+ Rakumarket::ItemLookupClient.new(params).parse['itemCode'].should eq("abc")
203
+ end
204
+
205
+ context "with mobile" do
206
+ it "should transform mobile to carrier" do
207
+ params = {:mobile => true}
208
+ Rakumarket::ItemLookupClient.new(params).parse.should have_key('carrier')
209
+ end
210
+ it "should transform true to 1" do
211
+ params = {:mobile => true}
212
+ Rakumarket::ItemLookupClient.new(params).parse['carrier'].should eq("1")
213
+ end
214
+ it "should transform false to 0" do
215
+ params = {:mobile => false}
216
+ Rakumarket::ItemLookupClient.new(params).parse['carrier'].should eq("0")
187
217
  end
218
+ end
188
219
 
189
- it "should transform genre_id" do
190
- params = {:genre_id => "abc"}
191
- Rakumarket::GenreSearchClient.new(params).parse['genreId'].should eq("abc")
220
+ describe "parameters" do
221
+ before do
222
+ params = {}
223
+ @request = Rakumarket::ItemLookupClient.new(params)
192
224
  end
193
225
 
194
- it "should transform return_immediate_parent" do
195
- params = {:return_immediate_parent => true}
196
- Rakumarket::GenreSearchClient.new(params).parse['genrePath'].should eq("0")
226
+ it "should have an operation by default" do
227
+ @request.parse['operation'].should eq("ItemCodeSearch")
197
228
  end
229
+
230
+ it "should have a version by default" do
231
+ @request.parse['version'].should eq("2010-08-05")
232
+ end
233
+
234
+ it "should have a developer_id by default" do
235
+ @request.parse['developerId'].should eq(Rakumarket.developer_id)
236
+ end
237
+ end
238
+ end
239
+
240
+ describe Rakumarket::ItemRankingClient do
241
+ it "should transform genre_id to genreId" do
242
+ params = {:genre_id => "abc"}
243
+ Rakumarket::ItemRankingClient.new(params).parse['genreId'].should eq("abc")
198
244
  end
199
245
 
200
- describe Rakumarket::ItemLookupClient do
246
+ it "should transform age_range to age" do
247
+ params = {:age_range => 10..19}
248
+ Rakumarket::ItemRankingClient.new(params).parse['age'].should eq("10")
249
+ end
201
250
 
202
- it "should transform code to itemCode" do
203
- params = {:code => "abc"}
204
- Rakumarket::ItemLookupClient.new(params).parse['itemCode'].should eq("abc")
251
+ context "with sex" do
252
+ it "should transform sex male" do
253
+ params = {:sex => :male}
254
+ Rakumarket::ItemRankingClient.new(params).parse['sex'].should eq("0")
205
255
  end
206
256
 
207
- context "with mobile" do
208
- it "should transform mobile to carrier" do
209
- params = {:mobile => true}
210
- Rakumarket::ItemLookupClient.new(params).parse.should have_key('carrier')
211
- end
212
- it "should transform true to 1" do
213
- params = {:mobile => true}
214
- Rakumarket::ItemLookupClient.new(params).parse['carrier'].should eq("1")
215
- end
216
- it "should transform false to 0" do
217
- params = {:mobile => false}
218
- Rakumarket::ItemLookupClient.new(params).parse['carrier'].should eq("0")
219
- end
257
+ it "should transform sex female" do
258
+ params = {:sex => 'female'}
259
+ Rakumarket::ItemRankingClient.new(params).parse['sex'].should eq("1")
220
260
  end
261
+ end
221
262
 
222
- describe "parameters" do
223
- before do
224
- params = {}
225
- @request = Rakumarket::ItemLookupClient.new(params)
226
- end
263
+ context "with mobile" do
264
+ it "should transform mobile to carrier" do
265
+ params = {:mobile => true}
266
+ Rakumarket::ItemRankingClient.new(params).parse.should have_key('carrier')
267
+ end
268
+ it "should transform true to 1" do
269
+ params = {:mobile => true}
270
+ Rakumarket::ItemRankingClient.new(params).parse['carrier'].should eq("1")
271
+ end
272
+ it "should transform false to 0" do
273
+ params = {:mobile => false}
274
+ Rakumarket::ItemRankingClient.new(params).parse['carrier'].should eq("0")
275
+ end
276
+ end
227
277
 
228
- it "should have an operation by default" do
229
- @request.parse['operation'].should eq("ItemCodeSearch")
230
- end
278
+ describe "default parameters" do
279
+ before do
280
+ params = {}
281
+ @request = Rakumarket::ItemRankingClient.new(params)
282
+ end
231
283
 
232
- it "should have a version by default" do
233
- @request.parse['version'].should eq("2010-08-05")
234
- end
284
+ it "should have an operation by default" do
285
+ @request.parse['operation'].should eq("ItemRanking")
286
+ end
235
287
 
236
- it "should have a developer_id by default" do
237
- @request.parse['developerId'].should eq(ENV['DEVELOPER_ID'])
238
- end
288
+ it "should have a version by default" do
289
+ @request.parse['version'].should eq("2010-08-05")
239
290
  end
240
291
 
292
+ it "should have a developer_id by default" do
293
+ @request.parse['developerId'].should eq(Rakumarket.developer_id)
294
+ end
241
295
  end
242
296
  end
297
+
@@ -2,30 +2,30 @@
2
2
  require File.join(File.dirname(__FILE__), '..', 'spec_helper')
3
3
 
4
4
  describe Rakumarket::ItemList do
5
- describe "#parse" do
5
+ describe ".parse" do
6
6
  before do
7
- @response = {"Body" => {"ItemSearch" => {"Items" => {"Item" => [{"shopOfTheYearFlag" => "0", "pointRate" => "2", "affiliateRate" => "435", "shipOverseasFlag" => "1", "asurakuFlag" => "1", "endTime" => "2012-02-05 14:23", "taxFlag" => "1", "startTime" => "2000-01-01 12:00", "itemCaption" => "thecaption", "catchcopy" => "great item", "mediumImageUrl" => "themediumimage", "imageFlag" => "0", "availability" => "0", "itemCode" => "abc123", "postageFlag" => "0", "itemName" => "Roomba", "smallImageUrl" => "thesmallimage", "itemPrice" => "2000", "pointRateEndTime" => "1999-12-30 09:01", "shopCode" => "theshopcode", "affiliateUrl" => "theaffiliateurl", "shopName" => "theshopname", "asurakuArea" => "神奈川県/滋賀県", "reviewCount" => "3", "shopUrl" => "theshopurl", "creditCardFlag" => "0", "reviewAverage" => "4", "shipOverseasArea" => "フランス/イタリア", "genreId" => "23", "pointRateStartTime" => "2007-03-03 03:33", "itemUrl" => "theurl"}]}, "pageCount" => 100, "hits" => 30, "last" => 30, "count" => 3507, "page" => 1, "carrier" => 0, "first" => 1}}, "Header" => {"Status" => "Success", "Args" => {"Arg" => {"apiVersion" => {"content" => true, "value" => "30"}, "operation" => {"content" => true, "value" => "ItemSearch"}, "developerId" => {"content" => true, "value" => "dffe027ae45a5b59b47ec3514f9cc17b"}, "keyword" => {"content" => true, "value" => "roomba"}, "version" => {"content" => true, "value" => "2010-09-15"}}}, "StatusMsg" => ""}}
7
+ @response = {"Items" => {"Item" => [{"shopOfTheYearFlag" => "0", "pointRate" => "2", "affiliateRate" => "435", "shipOverseasFlag" => "1", "asurakuFlag" => "1", "endTime" => "2012-02-05 14:23", "taxFlag" => "1", "startTime" => "2000-01-01 12:00", "itemCaption" => "thecaption", "catchcopy" => "great item", "mediumImageUrl" => "themediumimage", "imageFlag" => "0", "availability" => "0", "itemCode" => "abc123", "postageFlag" => "0", "itemName" => "Roomba", "rank" => "1", "smallImageUrl" => "thesmallimage", "itemPrice" => "2000", "pointRateEndTime" => "1999-12-30 09:01", "shopCode" => "theshopcode", "affiliateUrl" => "theaffiliateurl", "shopName" => "theshopname", "asurakuArea" => "神奈川県/滋賀県", "reviewCount" => "3", "shopUrl" => "theshopurl", "creditCardFlag" => "0", "reviewAverage" => "4", "shipOverseasArea" => "フランス/イタリア", "genreId" => "23", "pointRateStartTime" => "2007-03-03 03:33", "itemUrl" => "theurl"}]}, "pageCount" => 100, "hits" => 30, "last" => 30, "count" => 3507, "page" => 1, "carrier" => 0, "first" => 1}
8
8
  @item_list = Rakumarket::ItemList.parse(@response)
9
9
  end
10
10
 
11
- it "should parse item_count" do
11
+ it "parses item_count" do
12
12
  @item_list.total_item_count.should eq(3507)
13
13
  end
14
14
 
15
- it "should parse page_count" do
15
+ it "parses page_count" do
16
16
  @item_list.page_count.should eq(100)
17
17
  end
18
18
 
19
- it "should parse page" do
19
+ it "parses page" do
20
20
  @item_list.page.should eq(1)
21
21
  end
22
22
 
23
- it "should parse items" do
23
+ it "parses items" do
24
24
  @item_list.items.should be_a(Array)
25
25
  end
26
26
 
27
27
  describe "items" do
28
- it "should contain a list of items" do
28
+ it "contain a list of items" do
29
29
  items = @item_list.items
30
30
  items.first.should be_a(Rakumarket::Item)
31
31
  end
@@ -35,173 +35,177 @@ describe Rakumarket::ItemList do
35
35
  @item = @item_list.items.first
36
36
  end
37
37
 
38
- it "should parse name" do
38
+ it "parses name" do
39
39
  @item.name.should eq("Roomba")
40
40
  end
41
41
 
42
- it "should parse catchphrase" do
42
+ it "parses rank" do
43
+ @item.rank.should eq('1')
44
+ end
45
+
46
+ it "parses catchphrase" do
43
47
  @item.catchphrase.should eq("great item")
44
48
  end
45
49
 
46
- it "should parse code" do
50
+ it "parses code" do
47
51
  @item.code.should eq("abc123")
48
52
  end
49
53
 
50
- it "should parse price" do
54
+ it "parses price" do
51
55
  @item.price.should eq('2000')
52
56
  end
53
57
 
54
- it "should parse caption" do
58
+ it "parses caption" do
55
59
  @item.caption.should eq("thecaption")
56
60
  end
57
61
 
58
- it "should parse url" do
62
+ it "parses url" do
59
63
  @item.url.should eq("theurl")
60
64
  end
61
65
 
62
- it "should parse genre_id" do
66
+ it "parses genre_id" do
63
67
  @item.genre_id.should eq('23')
64
68
  end
65
69
 
66
70
  describe "shop" do
67
- it "should parse shop name" do
71
+ it "parses shop name" do
68
72
  @item.shop.name.should eq("theshopname")
69
73
  end
70
74
 
71
- it "should parse shop code" do
75
+ it "parses shop code" do
72
76
  @item.shop.code.should eq("theshopcode")
73
77
  end
74
78
 
75
- it "should parse shop url" do
79
+ it "parses shop url" do
76
80
  @item.shop.url.should eq("theshopurl")
77
81
  end
78
82
  end
79
83
 
80
84
  describe "shipping" do
81
- it "should parse cost_included?" do
85
+ it "parses cost_included?" do
82
86
  @item.shipping.cost_included?.should be_true
83
87
  end
84
88
 
85
- it "should parse cost_included? false" do
86
- @response = {"Body" => {"ItemSearch" => {"Items" => {"Item" => [{"postageFlag" => "1"}]}}}}
89
+ it "parses cost_included? false" do
90
+ @response = {"Items" => {"Item" => [{"postageFlag" => "1"}]}}
87
91
  @item = Rakumarket::ItemList.parse(@response).items.first
88
92
  @item.shipping.cost_included?.should be_false
89
93
  end
90
94
 
91
- it "should parse international?" do
95
+ it "parses international?" do
92
96
  @item.shipping.international?.should be_true
93
97
  end
94
98
 
95
- it "should parse international? false" do
96
- @response = {"Body" => {"ItemSearch" => {"Items" => {"Item" => [{"shipOverseasFlag" => "0"}]}}}}
99
+ it "parses international? false" do
100
+ @response = {"Items" => {"Item" => [{"shipOverseasFlag" => "0"}]}}
97
101
  @item = Rakumarket::ItemList.parse(@response).items.first
98
102
  @item.shipping.international?.should be_false
99
103
  end
100
104
 
101
- it "should parse international? numeric true" do
102
- @response = {"Body" => {"ItemSearch" => {"Items" => {"Item" => [{"shipOverseasFlag" => 1}]}}}}
105
+ it "parses international? numeric true" do
106
+ @response = {"Items" => {"Item" => [{"shipOverseasFlag" => 1}]}}
103
107
  @item = Rakumarket::ItemList.parse(@response).items.first
104
108
  @item.shipping.international?.should be_true
105
109
  end
106
110
 
107
- it "should parse countries" do
111
+ it "parses countries" do
108
112
  @item.shipping.countries.should eq(["france","italy"])
109
113
  end
110
114
 
111
- it "should parse next_day?" do
115
+ it "parses next_day?" do
112
116
  @item.shipping.next_day?.should be_true
113
117
  end
114
118
 
115
- it "should parse next_day? false" do
116
- @response = {"Body" => {"ItemSearch" => {"Items" => {"Item" => [{"asurakuFlag" => "0"}]}}}}
119
+ it "parses next_day? false" do
120
+ @response = {"Items" => {"Item" => [{"asurakuFlag" => "0"}]}}
117
121
  @item = Rakumarket::ItemList.parse(@response).items.first
118
122
  @item.shipping.next_day?.should be_false
119
123
  end
120
124
 
121
- it "should parse next_day_areas" do
125
+ it "parses next_day_areas" do
122
126
  @item.shipping.next_day_areas.should eq(["kanagawa","shiga"])
123
127
  end
124
128
  end
125
129
 
126
- it "should parse affiliate_url" do
130
+ it "parses affiliate_url" do
127
131
  @item.affiliate_url.should eq("theaffiliateurl")
128
132
  end
129
133
 
130
- it "should parse has_image?" do
134
+ it "parses has_image?" do
131
135
  @item.has_image?.should be_false
132
136
  end
133
137
 
134
- it "should parse small_image_url" do
138
+ it "parses small_image_url" do
135
139
  @item.small_image_url.should eq("thesmallimage")
136
140
  end
137
141
 
138
- it "should parse medium_image_url" do
142
+ it "parses medium_image_url" do
139
143
  @item.medium_image_url.should eq("themediumimage")
140
144
  end
141
145
 
142
- it "should parse available?" do
146
+ it "parses available?" do
143
147
  @item.available?.should be_false
144
148
  end
145
149
 
146
- it "should parse tax_included?" do
150
+ it "parses tax_included?" do
147
151
  @item.tax_included?.should be_false
148
152
  end
149
153
 
150
- it "should parse credit_cards_accepted?" do
154
+ it "parses credit_cards_accepted?" do
151
155
  @item.credit_cards_accepted?.should be_false
152
156
  end
153
157
 
154
- it "should parse shop_of_the_year?" do
158
+ it "parses shop_of_the_year?" do
155
159
  @item.shop_of_the_year?.should be_false
156
160
  end
157
161
 
158
- it "should parse shop_of_the_year? true" do
159
- @response = {"Body" => {"ItemSearch" => {"Items" => {"Item" => [{"shopOfTheYearFlag" => "1"}]}}}}
162
+ it "parses shop_of_the_year? true" do
163
+ @response = {"Items" => {"Item" => [{"shopOfTheYearFlag" => "1"}]}}
160
164
  @item = Rakumarket::ItemList.parse(@response).items.first
161
165
  @item.shop_of_the_year?.should be_true
162
166
  end
163
167
 
164
- it "should parse affiliate_rate" do
168
+ it "parses affiliate_rate" do
165
169
  @item.affiliate_rate.should eq('435')
166
170
  end
167
171
 
168
- it "should parse start_time" do
172
+ it "parses start_time" do
169
173
  @item.start_time.should be_a(Time)
170
174
  end
171
175
 
172
- it "should parse start_time as nil if blank" do
173
- @response = {"Body" => {"ItemSearch" => {"Items" => {"Item" => [{"startTime" => ""}]}}}}
176
+ it "parses start_time as nil if blank" do
177
+ @response = {"Items" => {"Item" => [{"startTime" => ""}]}}
174
178
  @item = Rakumarket::ItemList.parse(@response).items.first
175
179
  @item.start_time.should be_nil
176
180
  end
177
181
 
178
- it "should parse end_time" do
182
+ it "parses end_time" do
179
183
  @item.end_time.should be_a(Time)
180
184
  end
181
185
 
182
- it "should parse end_time as nil if blank" do
183
- @response = {"Body" => {"ItemSearch" => {"Items" => {"Item" => [{"endTime" => ""}]}}}}
186
+ it "parses end_time as nil if blank" do
187
+ @response = {"Items" => {"Item" => [{"endTime" => ""}]}}
184
188
  @item = Rakumarket::ItemList.parse(@response).items.first
185
189
  @item.end_time.should be_nil
186
190
  end
187
191
 
188
- it "should parse review_count" do
192
+ it "parses review_count" do
189
193
  @item.review_count.should eq("3")
190
194
  end
191
195
 
192
- it "should parse review_average" do
196
+ it "parses review_average" do
193
197
  @item.review_average.should eq("4")
194
198
  end
195
199
 
196
- it "should parse point_multiplication_factor" do
200
+ it "parses point_multiplication_factor" do
197
201
  @item.point_multiplication_factor.should eq("2")
198
202
  end
199
203
 
200
- it "should parse point_multiplication_start_time" do
204
+ it "parses point_multiplication_start_time" do
201
205
  @item.point_multiplication_start_time.should be_a(Time)
202
206
  end
203
207
 
204
- it "should parse point_multiplication_end_time" do
208
+ it "parses point_multiplication_end_time" do
205
209
  @item.point_multiplication_end_time.should be_a(Time)
206
210
  end
207
211
  end
@@ -210,46 +214,46 @@ describe Rakumarket::ItemList do
210
214
  end
211
215
  end
212
216
 
213
- describe Rakumarket::ItemList do
214
- describe "#parse" do
217
+ describe Rakumarket::GenreFamily do
218
+ describe ".parse" do
215
219
  context "root" do
216
220
  before do
217
- @response = {"Body" => {"GenreSearch" => {"child" => [{"genreLevel" => 1,"genreName" => "CD・DVD・楽器","genreId" => 101240},{"genreLevel" => 1,"genreName" => "インテリア・寝具・収納","genreId" => 100804},{"genreLevel" => 1,"genreName" => "おもちゃ・ホビー・ゲーム","genreId" => 101164},{"genreLevel" => 1,"genreName" => "キッズ・ベビー・マタニティ","genreId" => 100533},{"genreLevel" => 1,"genreName" => " 日用品雑貨・文房具・手芸","genreId" => 215783},{"genreLevel" => 1,"genreName" => "ジュエリー・アクセサリー","genreId" => 216129},{"genreLevel" => 1,"genreName" => "スポーツ・アウトドア","genreId" => 101070},{"genreLevel" => 1,"genreName" => "ダイエット・健康","genreId" => 100938},{"genreLevel" => 1,"genreName" => "水・ソフトドリンク","genreId" => 100316},{"genreLevel" => 1,"genreName" => "パソコン・周辺機器","genreId" => 100026},{"genreLevel" => 1,"genreName" => "バッグ・小物・ブランド雑貨","genreId" => 216131},{"genreLevel" => 1,"genreName" => "レディースファッション","genreId" => 100371},{"genreLevel" => 1,"genreName" => "花・ガーデン・DIY","genreId" => 100005},{"genreLevel" => 1,"genreName" => "ペット・ペットグッズ","genreId" => 101213},{"genreLevel" => 1,"genreName" => "TV・オーディオ・カメラ","genreId" => 211742},{"genreLevel" => 1,"genreName" => "車・バイク","genreId" => 101114},{"genreLevel" => 1,"genreName" => "食品","genreId" => 100227},{"genreLevel" => 1,"genreName" => "美容・コスメ・香水","genreId" => 100939},{"genreLevel" => 1,"genreName" => "本・雑誌・コミック","genreId" => 200162},{"genreLevel" => 1,"genreName" => "旅行・出張・チケット","genreId" => 101381},{"genreLevel" => 1,"genreName" => "不動産・住まい","genreId" => 200163},{"genreLevel" => 1,"genreName" => "学び・サービス・保険","genreId" => 101438},{"genreLevel" => 1,"genreName" => "百貨店・総合通販・ギフト","genreId" => 100000},{"genreLevel" => 1,"genreName" => "デジタルコンテンツ","genreId" => 402853},{"genreLevel" => 1,"genreName" => "車用品・バイク用品","genreId" => 503190},{"genreLevel" => 1,"genreName" => "インナー・下着・ナイトウエア","genreId" => 100433},{"genreLevel" => 1,"genreName" => "日本酒・焼酎","genreId" => 510901},{"genreLevel" => 1,"genreName" => "ビール・洋酒","genreId" => 510915},{"genreLevel" => 1,"genreName" => "スイーツ・お菓子","genreId" => 551167},{"genreLevel" => 1,"genreName" => "医薬品・コンタクト・介護","genreId" => 551169},{"genreLevel" => 1,"genreName" => "メンズファッション","genreId" => 551177},{"genreLevel" => 1,"genreName" => "靴","genreId" => 558885},{"genreLevel" => 1,"genreName" => "腕時計","genreId" => 558929},{"genreLevel" => 1,"genreName" => "キッチン用品・食器・調理器具","genreId" => 558944},{"genreLevel" => 1,"genreName" => "家電","genreId" => 562637}],"current" => [],"parent" => []}},"Header" => {"Status" => "Success","Args" => {"Arg" => {"apiVersion" => {"content" => true,"value" => "30"},"operation" => {"content" => true,"value" => "GenreSearch"},"developerId" => {"content" => true,"value" => "dffe027ae45a5b59b47ec3514f9cc17b"},"genreId" => {"content" => true,"value" => "0"},"version" => {"content" => true,"value" => "2007-04-11"}}},"StatusMsg" => ""}}
218
- @genre = Rakumarket::Genre.parse(@response)
221
+ @response = {"child" => [{"genreLevel" => 1,"genreName" => "CD・DVD・楽器","genreId" => 101240},{"genreLevel" => 1,"genreName" => "インテリア・寝具・収納","genreId" => 100804},{"genreLevel" => 1,"genreName" => "おもちゃ・ホビー・ゲーム","genreId" => 101164},{"genreLevel" => 1,"genreName" => "キッズ・ベビー・マタニティ","genreId" => 100533},{"genreLevel" => 1,"genreName" => " 日用品雑貨・文房具・手芸","genreId" => 215783},{"genreLevel" => 1,"genreName" => "ジュエリー・アクセサリー","genreId" => 216129},{"genreLevel" => 1,"genreName" => "スポーツ・アウトドア","genreId" => 101070},{"genreLevel" => 1,"genreName" => "ダイエット・健康","genreId" => 100938},{"genreLevel" => 1,"genreName" => "水・ソフトドリンク","genreId" => 100316},{"genreLevel" => 1,"genreName" => "パソコン・周辺機器","genreId" => 100026},{"genreLevel" => 1,"genreName" => "バッグ・小物・ブランド雑貨","genreId" => 216131},{"genreLevel" => 1,"genreName" => "レディースファッション","genreId" => 100371},{"genreLevel" => 1,"genreName" => "花・ガーデン・DIY","genreId" => 100005},{"genreLevel" => 1,"genreName" => "ペット・ペットグッズ","genreId" => 101213},{"genreLevel" => 1,"genreName" => "TV・オーディオ・カメラ","genreId" => 211742},{"genreLevel" => 1,"genreName" => "車・バイク","genreId" => 101114},{"genreLevel" => 1,"genreName" => "食品","genreId" => 100227},{"genreLevel" => 1,"genreName" => "美容・コスメ・香水","genreId" => 100939},{"genreLevel" => 1,"genreName" => "本・雑誌・コミック","genreId" => 200162},{"genreLevel" => 1,"genreName" => "旅行・出張・チケット","genreId" => 101381},{"genreLevel" => 1,"genreName" => "不動産・住まい","genreId" => 200163},{"genreLevel" => 1,"genreName" => "学び・サービス・保険","genreId" => 101438},{"genreLevel" => 1,"genreName" => "百貨店・総合通販・ギフト","genreId" => 100000},{"genreLevel" => 1,"genreName" => "デジタルコンテンツ","genreId" => 402853},{"genreLevel" => 1,"genreName" => "車用品・バイク用品","genreId" => 503190},{"genreLevel" => 1,"genreName" => "インナー・下着・ナイトウエア","genreId" => 100433},{"genreLevel" => 1,"genreName" => "日本酒・焼酎","genreId" => 510901},{"genreLevel" => 1,"genreName" => "ビール・洋酒","genreId" => 510915},{"genreLevel" => 1,"genreName" => "スイーツ・お菓子","genreId" => 551167},{"genreLevel" => 1,"genreName" => "医薬品・コンタクト・介護","genreId" => 551169},{"genreLevel" => 1,"genreName" => "メンズファッション","genreId" => 551177},{"genreLevel" => 1,"genreName" => "靴","genreId" => 558885},{"genreLevel" => 1,"genreName" => "腕時計","genreId" => 558929},{"genreLevel" => 1,"genreName" => "キッチン用品・食器・調理器具","genreId" => 558944},{"genreLevel" => 1,"genreName" => "家電","genreId" => 562637}],"current" => [],"parent" => []}
222
+ @genre = Rakumarket::GenreFamily.parse(@response)
219
223
  end
220
224
 
221
- it 'should parse children' do
225
+ it 'parses children' do
222
226
  @genre.children.should be_a(Array)
223
227
  end
224
228
 
225
- it 'should parse child genres' do
229
+ it 'parses child genres' do
226
230
  @genre.children.first.should be_a(Rakumarket::Genre)
227
231
  end
228
232
  end
229
233
 
230
234
  context "child" do
231
235
  before do
232
- @response = {"Body" => {"GenreSearch" => {"child" => [{"genreLevel" => 4,"genreName" => "ドラム式","genreId" => 550648},{"genreLevel" => 4,"genreName" => "全自動(乾燥機能あり)","genreId" => 211835},{"genreLevel" => 4,"genreName" => "全自動(乾燥機能なし)","genreId" => 211851},{"genreLevel" => 4,"genreName" => "2槽式","genreId" => 211859},{"genreLevel" => 4,"genreName" => "洗濯機関連用品","genreId" => 211874},{"genreLevel" => 4,"genreName" => "その他","genreId" => 100180}],"current" => [{"genreLevel" => 3,"genreName" => "洗濯機","genreId" => 204491}],"parent" => [{"genreLevel" => 2,"genreName" => "生活 家電","genreId" => 204200}]}},"Header" => {"Status" => "Success","Args" => {"Arg" => {"apiVersion" => {"content" => true,"value" => "30"},"operation" => {"content" => true,"value" => "GenreSearch"},"developerId" => {"content" => true,"value" => "dffe027ae45a5b59b47ec3514f9cc17b"},"genrePath" => {"content" => true,"value" => "0"},"genreId" => {"content" => true,"value" => "204491"},"version" => {"content" => true,"value" => "2007-04-11"}}},"StatusMsg" => ""}}
233
- @genre = Rakumarket::Genre.parse(@response)
236
+ @response = {"child" => [{"genreLevel" => 4,"genreName" => "ドラム式","genreId" => 550648},{"genreLevel" => 4,"genreName" => "全自動(乾燥機能あり)","genreId" => 211835},{"genreLevel" => 4,"genreName" => "全自動(乾燥機能なし)","genreId" => 211851},{"genreLevel" => 4,"genreName" => "2槽式","genreId" => 211859},{"genreLevel" => 4,"genreName" => "洗濯機関連用品","genreId" => 211874},{"genreLevel" => 4,"genreName" => "その他","genreId" => 100180}],"current" => [{"genreLevel" => 3,"genreName" => "洗濯機","genreId" => 204491}],"parent" => [{"genreLevel" => 2,"genreName" => "生活 家電","genreId" => 204200}]}
237
+ @genre = Rakumarket::GenreFamily.parse(@response)
234
238
  end
235
239
 
236
- it "should parse id" do
240
+ it "parses id" do
237
241
  @genre.id.should eq(204491)
238
242
  end
239
243
 
240
- it "should parse name" do
244
+ it "parses name" do
241
245
  @genre.name.should eq("洗濯機")
242
246
  end
243
247
 
244
- it "should parse parent" do
248
+ it "parses parent" do
245
249
  @genre.parent.should be_a(Rakumarket::Genre)
246
250
  end
247
251
 
248
- it 'should parse children' do
252
+ it 'parses children' do
249
253
  @genre.children.should be_a(Array)
250
254
  end
251
255
 
252
- it 'should parse child genres' do
256
+ it 'parses child genres' do
253
257
  @genre.children.first.should be_a(Rakumarket::Genre)
254
258
  end
255
259
  end