vacuum 4.0.0 → 4.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.
- checksums.yaml +4 -4
- data/lib/vacuum/locale.rb +5 -1
- data/lib/vacuum/response.rb +1 -1
- data/lib/vacuum/version.rb +1 -1
- metadata +7 -154
- data/test/cassettes/vacuum.yml +0 -2027
- data/test/helper.rb +0 -10
- data/test/integration/test_requests.rb +0 -105
- data/test/integration_helper.rb +0 -51
- data/test/locales.rb +0 -23
- data/test/locales.yml +0 -8
- data/test/locales.yml.example +0 -28
- data/test/unit/test_locale.rb +0 -43
- data/test/unit/test_operation.rb +0 -31
- data/test/unit/test_request.rb +0 -23
- data/test/unit/test_response.rb +0 -26
data/test/helper.rb
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'integration_helper'
|
|
4
|
-
|
|
5
|
-
module Vacuum
|
|
6
|
-
class TestRequests < IntegrationTest
|
|
7
|
-
def test_get_browse_nodes
|
|
8
|
-
requests.each do |request|
|
|
9
|
-
response = request.get_browse_nodes(browse_node_ids: ['3045'])
|
|
10
|
-
assert_equal 200, response.status
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def test_get_items
|
|
15
|
-
requests.each do |request|
|
|
16
|
-
response = request.get_items(item_ids: ['B07212L4G2'])
|
|
17
|
-
assert_equal 200, response.status
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
RESOURCE_ALL = %w[BrowseNodeInfo.BrowseNodes
|
|
22
|
-
BrowseNodeInfo.BrowseNodes.Ancestor
|
|
23
|
-
BrowseNodeInfo.BrowseNodes.SalesRank
|
|
24
|
-
BrowseNodeInfo.WebsiteSalesRank
|
|
25
|
-
Images.Primary.Small
|
|
26
|
-
Images.Primary.Medium
|
|
27
|
-
Images.Primary.Large
|
|
28
|
-
Images.Variants.Small
|
|
29
|
-
Images.Variants.Medium
|
|
30
|
-
Images.Variants.Large
|
|
31
|
-
ItemInfo.ByLineInfo
|
|
32
|
-
ItemInfo.Classifications
|
|
33
|
-
ItemInfo.ContentInfo
|
|
34
|
-
ItemInfo.ContentRating
|
|
35
|
-
ItemInfo.ExternalIds
|
|
36
|
-
ItemInfo.Features
|
|
37
|
-
ItemInfo.ManufactureInfo
|
|
38
|
-
ItemInfo.ProductInfo
|
|
39
|
-
ItemInfo.TechnicalInfo
|
|
40
|
-
ItemInfo.Title
|
|
41
|
-
ItemInfo.TradeInInfo
|
|
42
|
-
Offers.Listings.Availability.MaxOrderQuantity
|
|
43
|
-
Offers.Listings.Availability.Message
|
|
44
|
-
Offers.Listings.Availability.MinOrderQuantity
|
|
45
|
-
Offers.Listings.Availability.Type
|
|
46
|
-
Offers.Listings.Condition
|
|
47
|
-
Offers.Listings.Condition.SubCondition
|
|
48
|
-
Offers.Listings.DeliveryInfo.IsAmazonFulfilled
|
|
49
|
-
Offers.Listings.DeliveryInfo.IsFreeShippingEligible
|
|
50
|
-
Offers.Listings.DeliveryInfo.IsPrimeEligible
|
|
51
|
-
Offers.Listings.IsBuyBoxWinner
|
|
52
|
-
Offers.Listings.LoyaltyPoints.Points
|
|
53
|
-
Offers.Listings.MerchantInfo
|
|
54
|
-
Offers.Listings.Price
|
|
55
|
-
Offers.Listings.ProgramEligibility.IsPrimeExclusive
|
|
56
|
-
Offers.Listings.ProgramEligibility.IsPrimePantry
|
|
57
|
-
Offers.Listings.Promotions
|
|
58
|
-
Offers.Listings.SavingBasis
|
|
59
|
-
Offers.Summaries.HighestPrice
|
|
60
|
-
Offers.Summaries.LowestPrice
|
|
61
|
-
Offers.Summaries.OfferCount
|
|
62
|
-
ParentASIN].freeze
|
|
63
|
-
|
|
64
|
-
def test_get_items_with_all_resources
|
|
65
|
-
requests.each do |request|
|
|
66
|
-
response = request.get_items(item_ids: 'B07212L4G2',
|
|
67
|
-
resources: RESOURCE_ALL)
|
|
68
|
-
assert_equal 200, response.status
|
|
69
|
-
item = response.dig('ItemsResult', 'Items').first
|
|
70
|
-
assert item.key?('BrowseNodeInfo')
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def test_get_variations
|
|
75
|
-
requests.each do |request|
|
|
76
|
-
response = request.get_variations(asin: 'B07212L4G2')
|
|
77
|
-
assert_equal 200, response.status
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def test_search_items
|
|
82
|
-
requests.each do |request|
|
|
83
|
-
response = request.search_items(keywords: 'Harry Potter')
|
|
84
|
-
assert_equal 200, response.status
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def test_persistent
|
|
89
|
-
request = requests.sample
|
|
90
|
-
refute request.client.persistent?
|
|
91
|
-
request.persistent
|
|
92
|
-
assert request.client.persistent?
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def test_logging
|
|
96
|
-
require 'logger'
|
|
97
|
-
logdev = StringIO.new
|
|
98
|
-
logger = Logger.new(logdev)
|
|
99
|
-
request = requests.sample
|
|
100
|
-
request.use(logging: { logger: logger })
|
|
101
|
-
request.search_items(keywords: 'Harry Potter')
|
|
102
|
-
refute_empty logdev.string
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
data/test/integration_helper.rb
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'helper'
|
|
4
|
-
require 'vcr'
|
|
5
|
-
|
|
6
|
-
require 'locales'
|
|
7
|
-
require 'vacuum'
|
|
8
|
-
require 'vacuum/matcher'
|
|
9
|
-
|
|
10
|
-
VCR.configure do |c|
|
|
11
|
-
c.hook_into :webmock
|
|
12
|
-
c.cassette_library_dir = 'test/cassettes'
|
|
13
|
-
c.default_cassette_options = {
|
|
14
|
-
match_requests_on: [Vacuum::Matcher],
|
|
15
|
-
record: ENV['RECORD'] ? :new_episodes : :none
|
|
16
|
-
}
|
|
17
|
-
c.before_record do |interaction|
|
|
18
|
-
interaction.ignore! if interaction.response.status.code != 200
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
Locales.each do |record|
|
|
22
|
-
record.each do |key, val|
|
|
23
|
-
next if key == :marketplace
|
|
24
|
-
|
|
25
|
-
c.filter_sensitive_data(key.upcase) { val }
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
module Vacuum
|
|
31
|
-
class IntegrationTest < Minitest::Test
|
|
32
|
-
def setup
|
|
33
|
-
if ENV['LIVE']
|
|
34
|
-
VCR.turn_off!
|
|
35
|
-
WebMock.allow_net_connect!
|
|
36
|
-
else
|
|
37
|
-
VCR.insert_cassette('vacuum')
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def teardown
|
|
42
|
-
VCR.eject_cassette if VCR.turned_on?
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
private
|
|
46
|
-
|
|
47
|
-
def requests
|
|
48
|
-
Locales.map { |credentials| Vacuum.new(**credentials) }.shuffle
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
data/test/locales.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'forwardable'
|
|
4
|
-
require 'yaml'
|
|
5
|
-
|
|
6
|
-
module Locales
|
|
7
|
-
class << self
|
|
8
|
-
extend Forwardable
|
|
9
|
-
include Enumerable
|
|
10
|
-
|
|
11
|
-
attr_reader :all
|
|
12
|
-
|
|
13
|
-
def_delegators :all, :each
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
%w[locales.yml locales.yml.example].each do |filename|
|
|
17
|
-
path = File.expand_path(filename, __dir__)
|
|
18
|
-
if File.exist?(path)
|
|
19
|
-
@all = YAML.load_file(path)
|
|
20
|
-
break
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
data/test/locales.yml
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
- :marketplace: UK
|
|
2
|
-
:access_key: AKIAJPAXMP45DOQJPHJQ
|
|
3
|
-
:secret_key: feZKxFjRGLtmEO3JXpmCGdDaCPA7AHiVFBhQ/fkf
|
|
4
|
-
:partner_tag: adabo08-21
|
|
5
|
-
- :marketplace: US
|
|
6
|
-
:access_key: AKIAIWQTVHVWCQA5THXQ
|
|
7
|
-
:secret_key: VOhSIqIY1wF5selhhJYJGVnIET9k5q0J8QjTX38i
|
|
8
|
-
:partner_tag: adabo-20
|
data/test/locales.yml.example
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
- :marketplace: CA
|
|
2
|
-
:access_key: access_key
|
|
3
|
-
:secret_key: secret_key
|
|
4
|
-
:partner_tag: partner_tag
|
|
5
|
-
- :marketplace: ES
|
|
6
|
-
:access_key: access_key
|
|
7
|
-
:secret_key: secret_key
|
|
8
|
-
:partner_tag: partner_tag
|
|
9
|
-
- :marketplace: DE
|
|
10
|
-
:access_key: access_key
|
|
11
|
-
:secret_key: secret_key
|
|
12
|
-
:partner_tag: partner_tag
|
|
13
|
-
- :marketplace: FR
|
|
14
|
-
:access_key: access_key
|
|
15
|
-
:secret_key: secret_key
|
|
16
|
-
:partner_tag: partner_tag
|
|
17
|
-
- :marketplace: IT
|
|
18
|
-
:access_key: access_key
|
|
19
|
-
:secret_key: secret_key
|
|
20
|
-
:partner_tag: partner_tag
|
|
21
|
-
- :marketplace: GB
|
|
22
|
-
:access_key: access_key
|
|
23
|
-
:secret_key: secret_key
|
|
24
|
-
:partner_tag: partner_tag
|
|
25
|
-
- :marketplace: US
|
|
26
|
-
:access_key: access_key
|
|
27
|
-
:secret_key: secret_key
|
|
28
|
-
:partner_tag: partner_tag
|
data/test/unit/test_locale.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'helper'
|
|
4
|
-
require 'vacuum/locale'
|
|
5
|
-
|
|
6
|
-
module Vacuum
|
|
7
|
-
class TestLocale < Minitest::Test
|
|
8
|
-
def test_host
|
|
9
|
-
locale = Locale.new(:us, **credentials)
|
|
10
|
-
assert locale.host
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def test_region
|
|
14
|
-
locale = Locale.new(:us, **credentials)
|
|
15
|
-
assert locale.region
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_partner_type_default
|
|
19
|
-
locale = Locale.new(:us, **credentials)
|
|
20
|
-
assert locale.partner_type
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def test_upcased_marketplace
|
|
24
|
-
Locale.new('US', **credentials) # does not raise
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_uk
|
|
28
|
-
Locale.new(:uk, **credentials) # does not raise
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_not_found
|
|
32
|
-
assert_raises Locale::NotFound do
|
|
33
|
-
Locale.new(:foo, **credentials)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
private
|
|
38
|
-
|
|
39
|
-
def credentials
|
|
40
|
-
{ access_key: '123', secret_key: '123', partner_tag: 'xyz-20' }
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
data/test/unit/test_operation.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'helper'
|
|
4
|
-
require 'vacuum/locale'
|
|
5
|
-
require 'vacuum/operation'
|
|
6
|
-
|
|
7
|
-
module Vacuum
|
|
8
|
-
class TestOperation < Minitest::Test
|
|
9
|
-
def setup
|
|
10
|
-
@operation = Operation.new('Action', params: { foo: 1 }, locale: locale)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def test_body
|
|
14
|
-
assert @operation.body
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def test_url
|
|
18
|
-
assert @operation.url
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_headers
|
|
22
|
-
assert @operation.headers
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
def locale
|
|
28
|
-
Locale.new(:us, access_key: '123', secret_key: '123', partner_tag: 'xyz')
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
data/test/unit/test_request.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'helper'
|
|
4
|
-
require 'vacuum/request'
|
|
5
|
-
|
|
6
|
-
module Vacuum
|
|
7
|
-
class TestRequest < Minitest::Test
|
|
8
|
-
def test_search_keywords
|
|
9
|
-
err = assert_raises(ArgumentError) do
|
|
10
|
-
api.search_items(keywords: ['Harry Potter'])
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
assert_equal ':keyword argument expects a String', err.message
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def api
|
|
17
|
-
@api ||= Vacuum::Request.new(marketplace: 'US',
|
|
18
|
-
access_key: 'key',
|
|
19
|
-
secret_key: 'secret',
|
|
20
|
-
partner_tag: 'tag')
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
data/test/unit/test_response.rb
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'helper'
|
|
4
|
-
require 'vacuum/response'
|
|
5
|
-
|
|
6
|
-
module Vacuum
|
|
7
|
-
class TestResponse < Minitest::Test
|
|
8
|
-
def setup
|
|
9
|
-
mock = Minitest::Mock.new
|
|
10
|
-
mock.expect(:body, %({"ItemsResult":{"Items":[{"ASIN":"B07212L4G2"}]}}))
|
|
11
|
-
@response = Response.new(mock)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def test_parse
|
|
15
|
-
assert @response.parse
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_cast_to_hash
|
|
19
|
-
assert_kind_of Hash, @response.to_h
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_dig
|
|
23
|
-
assert @response.dig('ItemsResult', 'Items')
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|