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.
- data/Gemfile.lock +3 -3
- data/README.rdoc +14 -13
- data/lib/rakumarket.rb +5 -0
- data/lib/rakumarket/client.rb +53 -13
- data/lib/rakumarket/models.rb +29 -7
- data/lib/rakumarket/spitter.rb +12 -0
- data/lib/rakumarket/version.rb +1 -1
- data/rakumarket.gemspec +1 -1
- data/spec/fixtures/genre_search.json +213 -0
- data/spec/fixtures/item_code_search.json +71 -0
- data/spec/fixtures/item_ranking.json +1060 -0
- data/spec/fixtures/item_search.json +1035 -0
- data/spec/fixtures/item_search_not_found.json +31 -0
- data/spec/rakumarket/client_spec.rb +108 -53
- data/spec/rakumarket/models_spec.rb +69 -65
- data/spec/rakumarket_spec.rb +32 -138
- data/spec/spec_helper.rb +7 -7
- metadata +22 -20
- data/fixtures/vcr_casettes/genre_search.yml +0 -730
- data/fixtures/vcr_casettes/item_lookup.yml +0 -163
- data/fixtures/vcr_casettes/item_search.yml +0 -28366
@@ -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(
|
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
|
-
|
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
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
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
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
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
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
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
|
-
|
190
|
-
|
191
|
-
|
220
|
+
describe "parameters" do
|
221
|
+
before do
|
222
|
+
params = {}
|
223
|
+
@request = Rakumarket::ItemLookupClient.new(params)
|
192
224
|
end
|
193
225
|
|
194
|
-
it "should
|
195
|
-
|
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
|
-
|
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
|
-
|
203
|
-
|
204
|
-
|
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
|
-
|
208
|
-
|
209
|
-
|
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
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
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
|
-
|
229
|
-
|
230
|
-
|
278
|
+
describe "default parameters" do
|
279
|
+
before do
|
280
|
+
params = {}
|
281
|
+
@request = Rakumarket::ItemRankingClient.new(params)
|
282
|
+
end
|
231
283
|
|
232
|
-
|
233
|
-
|
234
|
-
|
284
|
+
it "should have an operation by default" do
|
285
|
+
@request.parse['operation'].should eq("ItemRanking")
|
286
|
+
end
|
235
287
|
|
236
|
-
|
237
|
-
|
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 "
|
5
|
+
describe ".parse" do
|
6
6
|
before do
|
7
|
-
@response = {"
|
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 "
|
11
|
+
it "parses item_count" do
|
12
12
|
@item_list.total_item_count.should eq(3507)
|
13
13
|
end
|
14
14
|
|
15
|
-
it "
|
15
|
+
it "parses page_count" do
|
16
16
|
@item_list.page_count.should eq(100)
|
17
17
|
end
|
18
18
|
|
19
|
-
it "
|
19
|
+
it "parses page" do
|
20
20
|
@item_list.page.should eq(1)
|
21
21
|
end
|
22
22
|
|
23
|
-
it "
|
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 "
|
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 "
|
38
|
+
it "parses name" do
|
39
39
|
@item.name.should eq("Roomba")
|
40
40
|
end
|
41
41
|
|
42
|
-
it "
|
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 "
|
50
|
+
it "parses code" do
|
47
51
|
@item.code.should eq("abc123")
|
48
52
|
end
|
49
53
|
|
50
|
-
it "
|
54
|
+
it "parses price" do
|
51
55
|
@item.price.should eq('2000')
|
52
56
|
end
|
53
57
|
|
54
|
-
it "
|
58
|
+
it "parses caption" do
|
55
59
|
@item.caption.should eq("thecaption")
|
56
60
|
end
|
57
61
|
|
58
|
-
it "
|
62
|
+
it "parses url" do
|
59
63
|
@item.url.should eq("theurl")
|
60
64
|
end
|
61
65
|
|
62
|
-
it "
|
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 "
|
71
|
+
it "parses shop name" do
|
68
72
|
@item.shop.name.should eq("theshopname")
|
69
73
|
end
|
70
74
|
|
71
|
-
it "
|
75
|
+
it "parses shop code" do
|
72
76
|
@item.shop.code.should eq("theshopcode")
|
73
77
|
end
|
74
78
|
|
75
|
-
it "
|
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 "
|
85
|
+
it "parses cost_included?" do
|
82
86
|
@item.shipping.cost_included?.should be_true
|
83
87
|
end
|
84
88
|
|
85
|
-
it "
|
86
|
-
@response = {"
|
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 "
|
95
|
+
it "parses international?" do
|
92
96
|
@item.shipping.international?.should be_true
|
93
97
|
end
|
94
98
|
|
95
|
-
it "
|
96
|
-
@response = {"
|
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 "
|
102
|
-
@response = {"
|
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 "
|
111
|
+
it "parses countries" do
|
108
112
|
@item.shipping.countries.should eq(["france","italy"])
|
109
113
|
end
|
110
114
|
|
111
|
-
it "
|
115
|
+
it "parses next_day?" do
|
112
116
|
@item.shipping.next_day?.should be_true
|
113
117
|
end
|
114
118
|
|
115
|
-
it "
|
116
|
-
@response = {"
|
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 "
|
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 "
|
130
|
+
it "parses affiliate_url" do
|
127
131
|
@item.affiliate_url.should eq("theaffiliateurl")
|
128
132
|
end
|
129
133
|
|
130
|
-
it "
|
134
|
+
it "parses has_image?" do
|
131
135
|
@item.has_image?.should be_false
|
132
136
|
end
|
133
137
|
|
134
|
-
it "
|
138
|
+
it "parses small_image_url" do
|
135
139
|
@item.small_image_url.should eq("thesmallimage")
|
136
140
|
end
|
137
141
|
|
138
|
-
it "
|
142
|
+
it "parses medium_image_url" do
|
139
143
|
@item.medium_image_url.should eq("themediumimage")
|
140
144
|
end
|
141
145
|
|
142
|
-
it "
|
146
|
+
it "parses available?" do
|
143
147
|
@item.available?.should be_false
|
144
148
|
end
|
145
149
|
|
146
|
-
it "
|
150
|
+
it "parses tax_included?" do
|
147
151
|
@item.tax_included?.should be_false
|
148
152
|
end
|
149
153
|
|
150
|
-
it "
|
154
|
+
it "parses credit_cards_accepted?" do
|
151
155
|
@item.credit_cards_accepted?.should be_false
|
152
156
|
end
|
153
157
|
|
154
|
-
it "
|
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 "
|
159
|
-
@response = {"
|
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 "
|
168
|
+
it "parses affiliate_rate" do
|
165
169
|
@item.affiliate_rate.should eq('435')
|
166
170
|
end
|
167
171
|
|
168
|
-
it "
|
172
|
+
it "parses start_time" do
|
169
173
|
@item.start_time.should be_a(Time)
|
170
174
|
end
|
171
175
|
|
172
|
-
it "
|
173
|
-
@response = {"
|
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 "
|
182
|
+
it "parses end_time" do
|
179
183
|
@item.end_time.should be_a(Time)
|
180
184
|
end
|
181
185
|
|
182
|
-
it "
|
183
|
-
@response = {"
|
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 "
|
192
|
+
it "parses review_count" do
|
189
193
|
@item.review_count.should eq("3")
|
190
194
|
end
|
191
195
|
|
192
|
-
it "
|
196
|
+
it "parses review_average" do
|
193
197
|
@item.review_average.should eq("4")
|
194
198
|
end
|
195
199
|
|
196
|
-
it "
|
200
|
+
it "parses point_multiplication_factor" do
|
197
201
|
@item.point_multiplication_factor.should eq("2")
|
198
202
|
end
|
199
203
|
|
200
|
-
it "
|
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 "
|
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::
|
214
|
-
describe "
|
217
|
+
describe Rakumarket::GenreFamily do
|
218
|
+
describe ".parse" do
|
215
219
|
context "root" do
|
216
220
|
before do
|
217
|
-
@response = {"
|
218
|
-
@genre = Rakumarket::
|
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 '
|
225
|
+
it 'parses children' do
|
222
226
|
@genre.children.should be_a(Array)
|
223
227
|
end
|
224
228
|
|
225
|
-
it '
|
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 = {"
|
233
|
-
@genre = Rakumarket::
|
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 "
|
240
|
+
it "parses id" do
|
237
241
|
@genre.id.should eq(204491)
|
238
242
|
end
|
239
243
|
|
240
|
-
it "
|
244
|
+
it "parses name" do
|
241
245
|
@genre.name.should eq("洗濯機")
|
242
246
|
end
|
243
247
|
|
244
|
-
it "
|
248
|
+
it "parses parent" do
|
245
249
|
@genre.parent.should be_a(Rakumarket::Genre)
|
246
250
|
end
|
247
251
|
|
248
|
-
it '
|
252
|
+
it 'parses children' do
|
249
253
|
@genre.children.should be_a(Array)
|
250
254
|
end
|
251
255
|
|
252
|
-
it '
|
256
|
+
it 'parses child genres' do
|
253
257
|
@genre.children.first.should be_a(Rakumarket::Genre)
|
254
258
|
end
|
255
259
|
end
|