rakuten_web_service 1.1.1 → 1.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.
@@ -42,6 +42,30 @@ describe RakutenWebService::Books::Book do
42
42
  end
43
43
  end
44
44
 
45
+ describe "#genre_information" do
46
+ before do
47
+ response = JSON.parse(fixture('books/book_search_with_keyword_Ruby.json'))
48
+ @expected_request = stub_request(:get, endpoint).
49
+ with(:query => expected_query).to_return(:body => response.to_json)
50
+ end
51
+
52
+ subject { RakutenWebService::Books::Book.search(title: 'Ruby') }
53
+
54
+ it "responds GenreInformation object" do
55
+ expect(subject.genre_information).to be_a(RakutenWebService::GenreInformation)
56
+ end
57
+
58
+
59
+ describe "its attributes" do
60
+ subject { super().genre_information }
61
+
62
+ it "have current genre" do
63
+ expect(subject.current).to be_a(RakutenWebService::Books::Genre)
64
+ expect(subject.current.item_count).to eq('115')
65
+ end
66
+ end
67
+ end
68
+
45
69
  describe '#genre' do
46
70
  let(:response) { JSON.parse(fixture('books/book_search_with_keyword_Ruby.json')) }
47
71
 
@@ -0,0 +1,125 @@
1
+ require 'spec_helper'
2
+
3
+ describe RakutenWebService::GenreInformation do
4
+ describe '#initialize' do
5
+ subject { RakutenWebService::GenreInformation.new(expected_params, RWS::Ichiba::Genre) }
6
+
7
+ context "When given params only has children genres" do
8
+ let(:expected_params) do
9
+ {
10
+ "parent" => [],
11
+ "current" => [],
12
+ "children" => [
13
+ {
14
+ "child" => {
15
+ "genreId" => "564500",
16
+ "genreName" => "光回線・モバイル通信",
17
+ "itemCount" => "5",
18
+ "genreLevel" => "1"
19
+ }
20
+ }
21
+ ]
22
+ }
23
+ end
24
+
25
+ it { is_expected.to be_a(RakutenWebService::GenreInformation) }
26
+ specify "its parent should be nil" do
27
+ expect(subject.parent).to be_nil
28
+ end
29
+ specify "its current should be nil" do
30
+ expect(subject.current).to be_nil
31
+ end
32
+ specify "its children should returns a array of Genre" do
33
+ expect(subject.children).to_not be_empty
34
+ end
35
+
36
+ describe "each child" do
37
+ subject { super().children.first }
38
+
39
+ it "has genre id" do
40
+ expect(subject.id).to eq('564500')
41
+ end
42
+ it "has genre name" do
43
+ expect(subject.name).to eq('光回線・モバイル通信')
44
+ end
45
+ it "has its genre level" do
46
+ expect(subject.level).to eq('1')
47
+ end
48
+ it "has its item count" do
49
+ expect(subject.item_count).to eq('5')
50
+ end
51
+ end
52
+ end
53
+ context "When given params has current genre" do
54
+ let(:expected_params) do
55
+ {
56
+ "parent" => [],
57
+ "current" => [
58
+ {
59
+ "genreId" => "564500",
60
+ "genreName" => "スマートフォン・タブレット",
61
+ "itemCount" => "313045",
62
+ "genreLevel" => "1"
63
+ }
64
+ ],
65
+ "children" => [
66
+ ]
67
+ }
68
+ end
69
+ specify "its parent should be nil" do expect(subject.parent).to be_nil
70
+ end
71
+ specify "its current should be a Genre object" do
72
+ expect(subject.current).to be_a(RWS::Ichiba::Genre)
73
+ end
74
+ specify "its children should be empty" do
75
+ expect(subject.children).to be_empty
76
+ end
77
+ end
78
+ context "When given params has parent genre" do
79
+ let(:expected_params) do
80
+ {
81
+ "parent" => [
82
+ {
83
+ "genreId" => "564500",
84
+ "genreName" => "スマートフォン・タブレット",
85
+ "itemCount" => "313045",
86
+ "genreLevel" => "1"
87
+ }
88
+ ],
89
+ "current" => [
90
+ {
91
+ "genreId" => "560029",
92
+ "genreName" => "タブレットPC本体",
93
+ "itemCount" => "0",
94
+ "genreLevel" => "2"
95
+ }
96
+ ],
97
+ "children" => [
98
+ ]
99
+ }
100
+ end
101
+
102
+ specify "its parent should be a Genre object" do
103
+ expect(subject.parent).to be_a(RWS::Ichiba::Genre)
104
+ end
105
+ specify "its current should be a Gere object" do
106
+ expect(subject.current).to be_a(RWS::Ichiba::Genre)
107
+ end
108
+ specify "its children should be empty" do
109
+ expect(subject.children).to be_empty
110
+ end
111
+
112
+ context "After re-initialize Genre with same genre id" do
113
+ let(:genre) { RWS::Ichiba::Genre.new('560029') }
114
+
115
+ before do
116
+ subject.current
117
+ end
118
+
119
+ it "doesn't have item_count value" do
120
+ expect(genre.item_count).to be_nil
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
@@ -141,6 +141,25 @@ describe RakutenWebService::Ichiba::Genre do
141
141
  end
142
142
  end
143
143
 
144
+ describe '#parents' do
145
+ let(:genre_id) { 559887 }
146
+ let(:genre) { RakutenWebService::Ichiba::Genre.new(genre_id) }
147
+
148
+ before do
149
+ stub_request(:get, endpoint).with(
150
+ query: {
151
+ affiliateId: affiliate_id,
152
+ applicationId: application_id,
153
+ genreId: genre_id
154
+ }
155
+ ).to_return(body: fixture('ichiba/parents_genre_search.json'))
156
+ end
157
+
158
+ specify "should respond an array of parents Genres" do
159
+ expect(genre.parents).to be_a(Array)
160
+ end
161
+ end
162
+
144
163
  describe '#ranking' do
145
164
  let(:genre) { RakutenWebService::Ichiba::Genre.new(genre_id) }
146
165
 
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  require 'spec_helper'
4
2
 
5
3
  describe RakutenWebService::Ichiba::Item do
@@ -30,6 +28,7 @@ describe RakutenWebService::Ichiba::Item do
30
28
  response['page'] = 2
31
29
  response['first'] = 31
32
30
  response['last'] = 60
31
+ response['pageCount'] = 2
33
32
  @second_request = stub_request(:get, endpoint).
34
33
  with(:query => expected_query.merge(:page => 2)).
35
34
  to_return(:body => response.to_json)
@@ -139,6 +138,7 @@ describe RakutenWebService::Ichiba::Item do
139
138
  response['page'] = 2
140
139
  response['first'] = 31
141
140
  response['last'] = 60
141
+ response['pageCount'] = 2
142
142
  @second_request = stub_request(:get, endpoint).
143
143
  with(:query => expected_query.merge(:page => 2)).
144
144
  to_return(:body => response.to_json)
@@ -163,6 +163,14 @@ describe RakutenWebService::Ichiba::Item do
163
163
  end
164
164
  end
165
165
 
166
+ describe ".genre_class" do
167
+ subject { RakutenWebService::Ichiba::Item }
168
+
169
+ it "returns RakutenWebService::Ichiba::Genre" do
170
+ expect(subject.genre_class).to eq(RakutenWebService::Ichiba::Genre)
171
+ end
172
+ end
173
+
166
174
  describe '#genre' do
167
175
  let(:response) { JSON.parse(fixture('ichiba/item_search_with_keyword_Ruby.json')) }
168
176
 
@@ -217,4 +225,18 @@ describe RakutenWebService::Ichiba::Item do
217
225
  expect(second_query.params[:sort]).to eq('-affiliateRate')
218
226
  end
219
227
  end
228
+
229
+ describe '#genre_information' do
230
+ before do
231
+ response = JSON.parse(fixture('ichiba/item_search_with_keyword_Ruby.json'))
232
+ @expected_request = stub_request(:get, endpoint).
233
+ with(query: expected_query).to_return(body: response.to_json)
234
+ end
235
+
236
+ subject { RWS::Ichiba::Item.search(keyword: 'Ruby').genre_information }
237
+
238
+ it "should be a GenreInformation" do
239
+ expect(subject).to be_a(RWS::GenreInformation)
240
+ end
241
+ end
220
242
  end
@@ -36,6 +36,29 @@ describe RakutenWebService::Kobo::Ebook do
36
36
  end
37
37
  end
38
38
 
39
+ describe "#genre_information" do
40
+ before do
41
+ response = JSON.parse(fixture('kobo/ebook_search_with_Ruby.json'))
42
+ stub_request(:get, endpoint).
43
+ with(:query => expected_query).to_return(:body => response.to_json)
44
+ end
45
+
46
+ subject { RakutenWebService::Kobo::Ebook.search(title: 'Ruby') }
47
+
48
+ it "returns GenreInformation object" do
49
+ expect(subject.genre_information).to be_a(RakutenWebService::GenreInformation)
50
+ end
51
+
52
+ describe "its current attributes" do
53
+ subject { super().genre_information.current }
54
+
55
+ it "returns the current genre information" do
56
+ expect(subject.name).to eq("電子書籍")
57
+ expect(subject.item_count).to eq("660")
58
+ end
59
+ end
60
+ end
61
+
39
62
  describe '#genre' do
40
63
  let(:response) { JSON.parse(fixture('kobo/ebook_search_with_Ruby.json')) }
41
64
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rakuten_web_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tatsuya Sato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-12 00:00:00.000000000 Z
11
+ date: 2016-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -117,6 +117,7 @@ files:
117
117
  - lib/rakuten_web_service/configuration.rb
118
118
  - lib/rakuten_web_service/error.rb
119
119
  - lib/rakuten_web_service/genre.rb
120
+ - lib/rakuten_web_service/genre_information.rb
120
121
  - lib/rakuten_web_service/gora.rb
121
122
  - lib/rakuten_web_service/gora/course.rb
122
123
  - lib/rakuten_web_service/gora/course_detail.rb
@@ -151,6 +152,7 @@ files:
151
152
  - spec/fixtures/gora/plan_search_with_area_code.json
152
153
  - spec/fixtures/ichiba/genre_search.json
153
154
  - spec/fixtures/ichiba/item_search_with_keyword_Ruby.json
155
+ - spec/fixtures/ichiba/parents_genre_search.json
154
156
  - spec/fixtures/ichiba/product_search.json
155
157
  - spec/fixtures/ichiba/ranking_search.json
156
158
  - spec/fixtures/kobo/ebook_search_with_Ruby.json
@@ -168,6 +170,7 @@ files:
168
170
  - spec/rakuten_web_service/books/total_spec.rb
169
171
  - spec/rakuten_web_service/client_spec.rb
170
172
  - spec/rakuten_web_service/configuration_spec.rb
173
+ - spec/rakuten_web_service/genre_information_spec.rb
171
174
  - spec/rakuten_web_service/gora/course_detail_spec.rb
172
175
  - spec/rakuten_web_service/gora/course_spec.rb
173
176
  - spec/rakuten_web_service/gora/plan_spec.rb
@@ -221,6 +224,7 @@ test_files:
221
224
  - spec/fixtures/gora/plan_search_with_area_code.json
222
225
  - spec/fixtures/ichiba/genre_search.json
223
226
  - spec/fixtures/ichiba/item_search_with_keyword_Ruby.json
227
+ - spec/fixtures/ichiba/parents_genre_search.json
224
228
  - spec/fixtures/ichiba/product_search.json
225
229
  - spec/fixtures/ichiba/ranking_search.json
226
230
  - spec/fixtures/kobo/ebook_search_with_Ruby.json
@@ -238,6 +242,7 @@ test_files:
238
242
  - spec/rakuten_web_service/books/total_spec.rb
239
243
  - spec/rakuten_web_service/client_spec.rb
240
244
  - spec/rakuten_web_service/configuration_spec.rb
245
+ - spec/rakuten_web_service/genre_information_spec.rb
241
246
  - spec/rakuten_web_service/gora/course_detail_spec.rb
242
247
  - spec/rakuten_web_service/gora/course_spec.rb
243
248
  - spec/rakuten_web_service/gora/plan_spec.rb