vacuum 2.2.0 → 3.4.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/README.md +96 -128
- data/lib/vacuum.rb +8 -2
- data/lib/vacuum/locale.rb +64 -0
- data/lib/vacuum/matcher.rb +71 -0
- data/lib/vacuum/operation.rb +75 -0
- data/lib/vacuum/request.rb +165 -98
- data/lib/vacuum/resource.rb +62 -0
- data/lib/vacuum/response.rb +21 -9
- data/lib/vacuum/version.rb +1 -1
- data/test/cassettes/vacuum.yml +1904 -765
- data/test/helper.rb +10 -0
- data/test/integration/test_requests.rb +62 -0
- data/test/integration_helper.rb +51 -0
- data/test/locales.rb +23 -0
- data/test/locales.yml +28 -0
- data/test/locales.yml.example +28 -0
- data/test/unit/test_locale.rb +43 -0
- data/test/unit/test_operation.rb +31 -0
- data/test/unit/test_request.rb +61 -0
- data/test/unit/test_resource.rb +12 -0
- data/test/unit/test_response.rb +26 -0
- metadata +58 -20
- data/test/test_integration.rb +0 -69
- data/test/test_unit.rb +0 -106
data/test/helper.rb
ADDED
@@ -0,0 +1,62 @@
|
|
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
|
+
def test_get_items_with_all_resources
|
22
|
+
requests.each do |request|
|
23
|
+
response = request.get_items(item_ids: 'B07212L4G2',
|
24
|
+
resources: Resource.all)
|
25
|
+
assert_equal 200, response.status
|
26
|
+
item = response.dig('ItemsResult', 'Items').first
|
27
|
+
assert item.key?('BrowseNodeInfo')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_get_variations
|
32
|
+
requests.each do |request|
|
33
|
+
response = request.get_variations(asin: 'B07212L4G2')
|
34
|
+
assert_equal 200, response.status
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_search_items
|
39
|
+
requests.each do |request|
|
40
|
+
response = request.search_items(keywords: 'Harry Potter')
|
41
|
+
assert_equal 200, response.status
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_persistent
|
46
|
+
request = requests.sample
|
47
|
+
refute request.client.persistent?
|
48
|
+
request.persistent
|
49
|
+
assert request.client.persistent?
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_logging
|
53
|
+
require 'logger'
|
54
|
+
logdev = StringIO.new
|
55
|
+
logger = Logger.new(logdev)
|
56
|
+
request = requests.sample
|
57
|
+
request.use(logging: { logger: logger })
|
58
|
+
request.search_items(keywords: 'Harry Potter')
|
59
|
+
refute_empty logdev.string
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,51 @@
|
|
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
ADDED
@@ -0,0 +1,23 @@
|
|
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
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
- :marketplace: CA
|
2
|
+
:access_key: AKIAIWQTVHVWCQA5THXQ
|
3
|
+
:secret_key: VOhSIqIY1wF5selhhJYJGVnIET9k5q0J8QjTX38i
|
4
|
+
:partner_tag: adabo00-20
|
5
|
+
- :marketplace: ES
|
6
|
+
:access_key: AKIAJJF26BJLZLSJLFBQ
|
7
|
+
:secret_key: txz+ESbb9Gzw6adcdKtIsLGOP0POFxtP0GHDw1ul
|
8
|
+
:partner_tag: adabo00-21
|
9
|
+
- :marketplace: DE
|
10
|
+
:access_key: AKIAJGN5UNM43HHV5MZA
|
11
|
+
:secret_key: ZdccSATM45MN9mjRTTw89mee5VbFoTRd9hYI2sMV
|
12
|
+
:partner_tag: adabo23-21
|
13
|
+
- :marketplace: FR
|
14
|
+
:access_key: AKIAJDNYBNMN23YBFK3A
|
15
|
+
:secret_key: hMet2Z4I5tgT6M8mHlGBGUajGyAZN/h2DPFb9z3j
|
16
|
+
:partner_tag: adabo-21
|
17
|
+
- :marketplace: IT
|
18
|
+
:access_key: AKIAJVBAH4XJHK6YF46Q
|
19
|
+
:secret_key: aCb2AeLxjNf4KM+Fxx2+ZOw0ftOnnMkuWqVR1kuE
|
20
|
+
:partner_tag: adabo0c-21
|
21
|
+
- :marketplace: GB
|
22
|
+
:access_key: AKIAJPAXMP45DOQJPHJQ
|
23
|
+
:secret_key: feZKxFjRGLtmEO3JXpmCGdDaCPA7AHiVFBhQ/fkf
|
24
|
+
:partner_tag: adabo21-21
|
25
|
+
- :marketplace: US
|
26
|
+
:access_key: AKIAIWQTVHVWCQA5THXQ
|
27
|
+
:secret_key: VOhSIqIY1wF5selhhJYJGVnIET9k5q0J8QjTX38i
|
28
|
+
:partner_tag: adabo-20
|
@@ -0,0 +1,28 @@
|
|
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
|
@@ -0,0 +1,43 @@
|
|
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
|
@@ -0,0 +1,31 @@
|
|
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
|
@@ -0,0 +1,61 @@
|
|
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 test_search_resources
|
17
|
+
err = assert_raises(ArgumentError) do
|
18
|
+
api.search_items(
|
19
|
+
keywords: 'Harry Potter',
|
20
|
+
resources: %w[Images.Primary.Large ItemInfo.ExternalIds Offer.Listings.Price]
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
assert_equal 'There is not such resource: Offer.Listings.Price', err.message
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_get_items_wrong_resource
|
28
|
+
err = assert_raises(ArgumentError) do
|
29
|
+
api.get_items(
|
30
|
+
item_ids: :B07212L4G2,
|
31
|
+
resources: %w[BrowseNodeInfo.BrowseNode.SalesRank]
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
assert_equal 'There is not such resource: BrowseNodeInfo.BrowseNode.SalesRank', err.message
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_get_variations_wrong_resource
|
39
|
+
err = assert_raises(ArgumentError) do
|
40
|
+
api.get_variations(asin: 'B07212L4G2', resources: %w[BrowseNodeInfo.BrowseNode.SalesRank])
|
41
|
+
end
|
42
|
+
|
43
|
+
assert_equal 'There is not such resource: BrowseNodeInfo.BrowseNode.SalesRank', err.message
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_resource_not_array
|
47
|
+
err = assert_raises(ArgumentError) do
|
48
|
+
api.get_items(item_ids: :B07212L4G2, resources: 'foo')
|
49
|
+
end
|
50
|
+
|
51
|
+
assert_equal ':resources argument expects an Array', err.message
|
52
|
+
end
|
53
|
+
|
54
|
+
def api
|
55
|
+
@api ||= Vacuum::Request.new(marketplace: 'US',
|
56
|
+
access_key: 'key',
|
57
|
+
secret_key: 'secret',
|
58
|
+
partner_tag: 'tag')
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,26 @@
|
|
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
|
metadata
CHANGED
@@ -1,45 +1,46 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vacuum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hakan Ensari
|
8
|
+
- Stanislav Katkov
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2020-05-27 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: aws-sigv4
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
18
|
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
+
version: '1.0'
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
25
|
- - "~>"
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
27
|
+
version: '1.0'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
29
|
+
name: http
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
32
|
- - "~>"
|
32
33
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
+
version: '4.0'
|
34
35
|
type: :runtime
|
35
36
|
prerelease: false
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
39
|
- - "~>"
|
39
40
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
41
|
+
version: '4.0'
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
43
|
+
name: minitest
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
45
46
|
- - ">="
|
@@ -53,7 +54,7 @@ dependencies:
|
|
53
54
|
- !ruby/object:Gem::Version
|
54
55
|
version: '0'
|
55
56
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
57
|
+
name: rake
|
57
58
|
requirement: !ruby/object:Gem::Requirement
|
58
59
|
requirements:
|
59
60
|
- - ">="
|
@@ -67,7 +68,7 @@ dependencies:
|
|
67
68
|
- !ruby/object:Gem::Version
|
68
69
|
version: '0'
|
69
70
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
71
|
+
name: rubocop
|
71
72
|
requirement: !ruby/object:Gem::Requirement
|
72
73
|
requirements:
|
73
74
|
- - ">="
|
@@ -81,7 +82,21 @@ dependencies:
|
|
81
82
|
- !ruby/object:Gem::Version
|
82
83
|
version: '0'
|
83
84
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
85
|
+
name: simplecov
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 0.17.1
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - '='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 0.17.1
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: vcr
|
85
100
|
requirement: !ruby/object:Gem::Requirement
|
86
101
|
requirements:
|
87
102
|
- - ">="
|
@@ -95,7 +110,7 @@ dependencies:
|
|
95
110
|
- !ruby/object:Gem::Version
|
96
111
|
version: '0'
|
97
112
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
113
|
+
name: webmock
|
99
114
|
requirement: !ruby/object:Gem::Requirement
|
100
115
|
requirements:
|
101
116
|
- - ">="
|
@@ -109,7 +124,7 @@ dependencies:
|
|
109
124
|
- !ruby/object:Gem::Version
|
110
125
|
version: '0'
|
111
126
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
127
|
+
name: yard
|
113
128
|
requirement: !ruby/object:Gem::Requirement
|
114
129
|
requirements:
|
115
130
|
- - ">="
|
@@ -125,6 +140,7 @@ dependencies:
|
|
125
140
|
description: A wrapper to the Amazon Product Advertising API
|
126
141
|
email:
|
127
142
|
- me@hakanensari.com
|
143
|
+
- sk@skylup.com
|
128
144
|
executables: []
|
129
145
|
extensions: []
|
130
146
|
extra_rdoc_files: []
|
@@ -132,12 +148,25 @@ files:
|
|
132
148
|
- LICENSE
|
133
149
|
- README.md
|
134
150
|
- lib/vacuum.rb
|
151
|
+
- lib/vacuum/locale.rb
|
152
|
+
- lib/vacuum/matcher.rb
|
153
|
+
- lib/vacuum/operation.rb
|
135
154
|
- lib/vacuum/request.rb
|
155
|
+
- lib/vacuum/resource.rb
|
136
156
|
- lib/vacuum/response.rb
|
137
157
|
- lib/vacuum/version.rb
|
138
158
|
- test/cassettes/vacuum.yml
|
139
|
-
- test/
|
140
|
-
- test/
|
159
|
+
- test/helper.rb
|
160
|
+
- test/integration/test_requests.rb
|
161
|
+
- test/integration_helper.rb
|
162
|
+
- test/locales.rb
|
163
|
+
- test/locales.yml
|
164
|
+
- test/locales.yml.example
|
165
|
+
- test/unit/test_locale.rb
|
166
|
+
- test/unit/test_operation.rb
|
167
|
+
- test/unit/test_request.rb
|
168
|
+
- test/unit/test_resource.rb
|
169
|
+
- test/unit/test_response.rb
|
141
170
|
homepage: https://github.com/hakanensari/vacuum
|
142
171
|
licenses:
|
143
172
|
- MIT
|
@@ -150,18 +179,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
150
179
|
requirements:
|
151
180
|
- - ">="
|
152
181
|
- !ruby/object:Gem::Version
|
153
|
-
version: '2.
|
182
|
+
version: '2.5'
|
154
183
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
184
|
requirements:
|
156
185
|
- - ">="
|
157
186
|
- !ruby/object:Gem::Version
|
158
187
|
version: '0'
|
159
188
|
requirements: []
|
160
|
-
rubygems_version: 3.
|
189
|
+
rubygems_version: 3.1.2
|
161
190
|
signing_key:
|
162
191
|
specification_version: 4
|
163
192
|
summary: Amazon Product Advertising in Ruby
|
164
193
|
test_files:
|
165
|
-
- test/
|
194
|
+
- test/unit/test_operation.rb
|
195
|
+
- test/unit/test_request.rb
|
196
|
+
- test/unit/test_resource.rb
|
197
|
+
- test/unit/test_response.rb
|
198
|
+
- test/unit/test_locale.rb
|
199
|
+
- test/helper.rb
|
200
|
+
- test/integration/test_requests.rb
|
166
201
|
- test/cassettes/vacuum.yml
|
167
|
-
- test/
|
202
|
+
- test/integration_helper.rb
|
203
|
+
- test/locales.rb
|
204
|
+
- test/locales.yml
|
205
|
+
- test/locales.yml.example
|