rakumarket 0.0.1
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/.gitignore +24 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +43 -0
- data/README.rdoc +79 -0
- data/Rakefile +2 -0
- data/fixtures/vcr_casettes/item_search.yml +20787 -0
- data/lib/rakumarket/client.rb +84 -0
- data/lib/rakumarket/item_search_client.rb +455 -0
- data/lib/rakumarket/version.rb +3 -0
- data/lib/rakumarket.rb +67 -0
- data/rakumarket.gemspec +28 -0
- data/spec/rakumarket_spec.rb +125 -0
- data/spec/spec_helper.rb +11 -0
- metadata +170 -0
@@ -0,0 +1,125 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe Rakumarket do
|
5
|
+
|
6
|
+
it "slices a hash" do
|
7
|
+
{:keep => "this", :drop => "that"}.slice(:keep).should eq({:keep => "this"})
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "GET item_search" do
|
11
|
+
before do
|
12
|
+
VCR.insert_cassette 'item_search', :record => :new_episodes
|
13
|
+
end
|
14
|
+
|
15
|
+
after do
|
16
|
+
VCR.eject_cassette
|
17
|
+
end
|
18
|
+
|
19
|
+
context "given a simple search" do
|
20
|
+
before do
|
21
|
+
@items = Rakumarket.item_search("roomba").items
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns a list of items" do
|
25
|
+
@items.should be_present
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns items with attributes" do
|
29
|
+
@items.first.name.should eq('【現定数在庫有り】ルンバ 530 新品 楽天最安挑戦価格 安心の3年保証 オマケ付き ルンバ530 ホワイト iRobot Roomba 正規品 【c_1011】【2sp_120528_b】')
|
30
|
+
end
|
31
|
+
|
32
|
+
it "returns items with rubyish attributes" do
|
33
|
+
@items.first.review_count.should be_present
|
34
|
+
end
|
35
|
+
|
36
|
+
it "returns items with nested attributes" do
|
37
|
+
@items.first.shipping.international?.should_not be_nil
|
38
|
+
end
|
39
|
+
|
40
|
+
it "returns time objects for attributes representing time" do
|
41
|
+
items = Rakumarket.item_search("roomba").items
|
42
|
+
items[20].start_time.should be_a(Time)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "returns nil for blank attributes representing time" do
|
46
|
+
items = Rakumarket.item_search("roomba").items
|
47
|
+
items.first.start_time.should be_nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context "given a search with parameters" do
|
52
|
+
it "accepts rubyish parameter names" do
|
53
|
+
items = Rakumarket.item_search("roomba", :must_have_image => true).items
|
54
|
+
items.should be_present
|
55
|
+
end
|
56
|
+
|
57
|
+
it "accepts nested parameters" do
|
58
|
+
items = Rakumarket.item_search("roomba", :price => {:maximum => 30000} ).items
|
59
|
+
items.should be_present
|
60
|
+
end
|
61
|
+
|
62
|
+
it "accepts SQL-style order specification" do
|
63
|
+
items = Rakumarket.item_search("roomba", :order => 'updated_at asc' ).items
|
64
|
+
items.should be_present
|
65
|
+
end
|
66
|
+
|
67
|
+
it "accepts case insensitive SQL-style order specification" do
|
68
|
+
items = Rakumarket.item_search("roomba", :order => 'updated_at ASC' ).items
|
69
|
+
items.should be_present
|
70
|
+
end
|
71
|
+
|
72
|
+
it "accepts plain country names for international shipping" do
|
73
|
+
items = Rakumarket.item_search("roomba", :shipping => {:must_ship_international => true, :country => 'usa'} ).items
|
74
|
+
items.should be_present
|
75
|
+
end
|
76
|
+
|
77
|
+
it "accepts plain prefecture names for next day shipping" do
|
78
|
+
items = Rakumarket.item_search("roomba", :shipping => {:must_ship_next_day => true, :next_day_area => 'kanagawa'} ).items
|
79
|
+
items.should be_present
|
80
|
+
end
|
81
|
+
|
82
|
+
it "returns plain country names for international shipping" do
|
83
|
+
items = Rakumarket.item_search("roomba", :shipping => {:must_ship_international => true, :country => 'usa'} ).items
|
84
|
+
items.first.shipping.countries.should eq(["worldwide"])
|
85
|
+
end
|
86
|
+
|
87
|
+
it "returns plain prefecture names for next day shipping" do
|
88
|
+
items = Rakumarket.item_search("roomba", :shipping => {:must_ship_next_day => true, :next_day_area => 'kanagawa'} ).items
|
89
|
+
items.first.shipping.next_day_areas.should include("kanagawa")
|
90
|
+
end
|
91
|
+
end
|
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 be_present
|
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
|
+
context "given a fruitless search" do
|
116
|
+
it "raises an error " do
|
117
|
+
expect{
|
118
|
+
items = Rakumarket.item_search("askdjfalsjdf")
|
119
|
+
}.to raise_error(Rakumarket::RakumarketError)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rakumarket'
|
2
|
+
require 'vcr'
|
3
|
+
|
4
|
+
Rakumarket.developer_id = ENV['DEVELOPER_ID'] || "foobar"
|
5
|
+
|
6
|
+
VCR.configure do |c|
|
7
|
+
c.hook_into :webmock
|
8
|
+
c.cassette_library_dir = 'fixtures/vcr_casettes'
|
9
|
+
c.filter_sensitive_data("<DEVELOPER_ID>") { Rakumarket.developer_id }
|
10
|
+
end
|
11
|
+
|
metadata
ADDED
@@ -0,0 +1,170 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rakumarket
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Benjamin Sullivan
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: hashie
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.1.3
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.1.3
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: httparty
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.1.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.1.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: activesupport
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.3.2
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.3.2
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: bundler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.0.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.0.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rspec
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '2.6'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '2.6'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: webmock
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: vcr
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: A reader-friendly Ruby abstraction of the Rakuten Market API
|
127
|
+
email: bsullivan2@gmail.com
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- .gitignore
|
133
|
+
- Gemfile
|
134
|
+
- Gemfile.lock
|
135
|
+
- README.rdoc
|
136
|
+
- Rakefile
|
137
|
+
- fixtures/vcr_casettes/item_search.yml
|
138
|
+
- lib/rakumarket.rb
|
139
|
+
- lib/rakumarket/client.rb
|
140
|
+
- lib/rakumarket/item_search_client.rb
|
141
|
+
- lib/rakumarket/version.rb
|
142
|
+
- rakumarket.gemspec
|
143
|
+
- spec/rakumarket_spec.rb
|
144
|
+
- spec/spec_helper.rb
|
145
|
+
homepage: http://github.com/bonsaiben/rakumarket
|
146
|
+
licenses: []
|
147
|
+
post_install_message:
|
148
|
+
rdoc_options: []
|
149
|
+
require_paths:
|
150
|
+
- lib
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
152
|
+
none: false
|
153
|
+
requirements:
|
154
|
+
- - ! '>='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
none: false
|
159
|
+
requirements:
|
160
|
+
- - ! '>='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: 1.3.6
|
163
|
+
requirements: []
|
164
|
+
rubyforge_project:
|
165
|
+
rubygems_version: 1.8.24
|
166
|
+
signing_key:
|
167
|
+
specification_version: 3
|
168
|
+
summary: A reader-friendly Ruby abstraction of the Rakuten Market API
|
169
|
+
test_files: []
|
170
|
+
has_rdoc:
|