hollownest-ruby-aws 0.0.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.
@@ -0,0 +1,217 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+ require 'amazon/aws/shoppingcart'
4
+
5
+ include Amazon::AWS::ShoppingCart
6
+
7
+ class TestShoppingCart < Test::Unit::TestCase
8
+
9
+ def setup
10
+ # B00151HZA6 B000WC4AH0 B0006L16N8
11
+ @asins = ['0805006001', '1599867419', '0689875886']
12
+ @add_asins = ['8850700148', '0816648999', '1604596813', '0785822577', '044023865X']
13
+ end
14
+
15
+ def test_shopping_cart1
16
+ cart = Cart.new(@@key_id, @@associates_id)
17
+ cart.locale = 'us'
18
+
19
+ # Check that initial quantities are zero.
20
+ #
21
+ items = cart.items
22
+ sfl_items = cart.saved_for_later_items
23
+ assert_equal( 0, items.size )
24
+ assert_equal( 0, sfl_items.size )
25
+
26
+ # Create a cart with three items. The last two are given as multiple
27
+ # single-element hashes. MergeCart is false.
28
+ #
29
+ cart.cart_create( :ASIN, @asins[0], 3, false,
30
+ { @asins[1] => 2 },
31
+ { @asins[2] => 1 } )
32
+ items = cart.items
33
+
34
+ # Check that the quantities match what we expect.
35
+ #
36
+ assert_equal( 3, items.size )
37
+ item = items.find { |item| item.asin == @asins[0] }
38
+ assert_equal( '3', item.quantity[0] )
39
+ item = items.find { |item| item.asin == @asins[1] }
40
+ assert_equal( '2', item.quantity[0] )
41
+ item = items.find { |item| item.asin == @asins[2] }
42
+ assert_equal( '1', item.quantity[0] )
43
+
44
+ # Check purchase URL.
45
+ #
46
+
47
+ # Check for correct Cart Id.
48
+ #
49
+ assert_match( /cart-id=#{cart.cart_id}/,
50
+ cart.purchase_url,
51
+ 'Cart Id incorrect' )
52
+
53
+ # Check for correct value of MergeCart.
54
+ #
55
+ assert_match( /MergeCart=False/,
56
+ cart.purchase_url,
57
+ 'MergeCart is not False' )
58
+
59
+ # Clear cart.
60
+ #
61
+ cart.cart_clear
62
+
63
+ # Ensure that clearing the cart actually empties it.
64
+ #
65
+ assert_equal( 0, cart.cart_items.size )
66
+ end
67
+
68
+ def test_shopping_cart2
69
+ cart = Cart.new(@@key_id, @@associates_id)
70
+ cart.locale = 'us'
71
+
72
+ # Create a cart with three items. The last two are given in a single
73
+ # hash. MergeCart is true. Cart#create is used as an alias of
74
+ # Cart#cart_create.
75
+ #
76
+ cart.create( :ASIN, @asins[0], 1, true,
77
+ { @asins[1] => 2,
78
+ @asins[2] => 3 } )
79
+ items = cart.items
80
+
81
+ # Check that the quantities match what we expect.
82
+ #
83
+ assert_equal( 3, items.size )
84
+ item = items.find { |item| item.asin == @asins[0] }
85
+ assert_equal( '1', item.quantity[0] )
86
+ item = items.find { |item| item.asin == @asins[1] }
87
+ assert_equal( '2', item.quantity[0] )
88
+ item = items.find { |item| item.asin == @asins[2] }
89
+ assert_equal( '3', item.quantity[0] )
90
+
91
+ # Check purchase URL.
92
+ #
93
+
94
+ # Check for correct Cart Id.
95
+ #
96
+ assert_match( /cart-id=#{cart.cart_id}/,
97
+ cart.purchase_url,
98
+ 'Cart Id incorrect' )
99
+
100
+ # Check for correct value of MergeCart.
101
+ #
102
+ assert_match( /MergeCart=True/,
103
+ cart.purchase_url,
104
+ 'MergeCart is not True' )
105
+
106
+ # Add some items.
107
+ #
108
+ cart.cart_add( :ASIN, @add_asins[0], 1,
109
+ { @add_asins[1] => 1,
110
+ @add_asins[2] => 4 },
111
+ { @add_asins[3] => 3,
112
+ @add_asins[4] => 2 } )
113
+
114
+ # Check that the quantities match what we expect.
115
+ #
116
+ items = cart.items
117
+ assert_equal( 8, items.size )
118
+ item = items.find { |item| item.asin == @add_asins[0] }
119
+ assert_equal( '1', item.quantity[0] )
120
+ item = items.find { |item| item.asin == @add_asins[1] }
121
+ assert_equal( '1', item.quantity[0] )
122
+ item = items.find { |item| item.asin == @add_asins[2] }
123
+ assert_equal( '4', item.quantity[0] )
124
+ item = items.find { |item| item.asin == @add_asins[3] }
125
+ assert_equal( '3', item.quantity[0] )
126
+ item = items.find { |item| item.asin == @add_asins[4] }
127
+ assert_equal( '2', item.quantity[0] )
128
+
129
+ # Modify an item quantity.
130
+ #
131
+ cart.cart_modify( :ASIN, @asins[0], 2 )
132
+ items = cart.items
133
+ assert_equal( 8, items.size )
134
+ item = items.find { |item| item.asin == @asins[0] }
135
+ assert_equal( '2', item.quantity[0] )
136
+
137
+ # Move item to 'Save For Later' area.
138
+ #
139
+ cart.cart_modify( :ASIN, @add_asins[0], 1, true )
140
+ sfl_items = cart.saved_for_later_items
141
+ assert_equal( 1, sfl_items.size )
142
+ item = sfl_items.find { |item| item.asin == @add_asins[0] }
143
+ assert_equal( '1', item.quantity[0] )
144
+ items = cart.items
145
+ assert_equal( 7, items.size )
146
+ assert( ! cart.active?( :ASIN, @add_asins[0] ) )
147
+
148
+ # Move item back to 'Active' area.
149
+ #
150
+ cart.cart_modify( :ASIN, @add_asins[0], 1, false )
151
+ items = cart.items
152
+ assert_equal( 8, items.size )
153
+ item = items.find { |item| item.asin == @add_asins[0] }
154
+ assert_equal( '1', item.quantity[0] )
155
+ sfl_items = cart.saved_for_later_items
156
+ assert_equal( 0, sfl_items.size )
157
+ assert( ! cart.saved_for_later?( :ASIN, @add_asins[0] ) )
158
+
159
+ # Remove an item.
160
+ #
161
+ cart.cart_modify( :ASIN, @add_asins[0], 0 )
162
+
163
+ # Check that the number of items in the cart has been reduced by one.
164
+ #
165
+ items = cart.items
166
+ assert_equal( 7, items.size )
167
+
168
+ # Check that the item is no longer in the cart.
169
+ #
170
+ assert( ! cart.include?( :ASIN, @add_asins[0] ) )
171
+
172
+ # Check that modifying non-existent item raises exception.
173
+ #
174
+ assert_raise( Amazon::AWS::ShoppingCart::CartError ) do
175
+ cart.cart_modify( :ASIN, @add_asins[0], 1 )
176
+ end
177
+
178
+ # Move another item to the 'Save For Later' area.
179
+ #
180
+ cart.cart_modify( :ASIN, @asins[0], 2, true )
181
+ items = cart.items
182
+ assert_equal( 6, items.size )
183
+ sfl_items = cart.saved_for_later_items
184
+ assert_equal( 1, sfl_items.size )
185
+
186
+ # Now remove that item while it's still in the 'Save For Later' area.
187
+ #
188
+ cart.cart_modify( :ASIN, @asins[0], 0 )
189
+ items = cart.items
190
+ assert_equal( 6, items.size )
191
+ sfl_items = cart.saved_for_later_items
192
+ assert_equal( 0, sfl_items.size )
193
+
194
+ # Ensure that the item is no longer in either area of the cart.
195
+ #
196
+ assert( ! cart.include?( :ASIN, @add_asins[0] ) )
197
+ assert( ! cart.active?( :ASIN, @add_asins[0] ) )
198
+ assert( ! cart.saved_for_later?( :ASIN, @add_asins[0] ) )
199
+
200
+ # Check that modifying non-existent item raises exception.
201
+ #
202
+ assert_raise( Amazon::AWS::ShoppingCart::CartError ) do
203
+ cart.cart_modify( :ASIN, @asins[0], 1 )
204
+ end
205
+
206
+ # Check that retrieving the cart at a later time works properly.
207
+ #
208
+ old_cart = cart
209
+ cart = Cart.new(@@key_id, @@associates_id)
210
+ cart.locale = 'us'
211
+ cart.cart_get( old_cart.cart_id, old_cart.hmac )
212
+ assert_equal( old_cart.cart_id, cart.cart_id )
213
+ assert_equal( old_cart.hmac, cart.hmac )
214
+ assert_equal( old_cart.items, cart.items )
215
+ end
216
+
217
+ end
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+
4
+ class TestVehicles < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @rg = ResponseGroup.new( :Small )
8
+ @req = Request.new(@@key_id, @@associates_id)
9
+ @req.locale = 'uk'
10
+ @req.cache = false
11
+ end
12
+
13
+ def test_vehicle_search
14
+ @req.locale = 'us'
15
+
16
+ # Get all cars for year 2008.
17
+ #
18
+ vs = VehicleSearch.new( { 'Year' => 2008 } )
19
+ rg = ResponseGroup.new( 'VehicleMakes' )
20
+ response = @req.search( vs, rg )
21
+
22
+ makes = response.vehicle_search_response[0].vehicle_years[0].
23
+ vehicle_year[0].vehicle_makes[0].vehicle_make
24
+ assert( makes.size > 0 )
25
+
26
+ make_id = makes.find { |make| make.make_name == 'Audi' }.make_id.to_i
27
+
28
+
29
+ # Get all Audi models from 2008.
30
+ #
31
+ vs = VehicleSearch.new( { 'Year' => 2008,
32
+ 'MakeId' => make_id } )
33
+ rg = ResponseGroup.new( 'VehicleModels' )
34
+ response = @req.search( vs, rg )
35
+
36
+ models = response.vehicle_search_response[0].vehicle_years[0].
37
+ vehicle_year[0].vehicle_makes[0].vehicle_make[0].
38
+ vehicle_models[0].vehicle_model
39
+ assert( models.size > 0 )
40
+
41
+ model_id = models.find { |model| model.model_name == 'R8' }.model_id.to_i
42
+
43
+ # Get all Audi R8 trim packages from 2008.
44
+ #
45
+ vs = VehicleSearch.new( { 'Year' => 2008,
46
+ 'MakeId' => make_id,
47
+ 'ModelId' => model_id } )
48
+ rg = ResponseGroup.new( 'VehicleTrims' )
49
+ response = @req.search( vs, rg )
50
+
51
+ trims = response.vehicle_search_response[0].vehicle_years[0].
52
+ vehicle_year[0].vehicle_makes[0].vehicle_make[0].
53
+ vehicle_models[0].vehicle_model[0].vehicle_trims[0].vehicle_trim
54
+ assert( trims.size > 0 )
55
+
56
+ trim_id = trims.find { |trim| trim.trim_name == 'Base' }.trim_id.to_i
57
+
58
+ vs = VehicleSearch.new( { 'Year' => 2008,
59
+ 'MakeId' => make_id,
60
+ 'ModelId' => model_id,
61
+ 'TrimId' => trim_id } )
62
+ rg = ResponseGroup.new( 'VehicleOptions' )
63
+ response = @req.search( vs, rg )
64
+
65
+ options = response.vehicle_search_response[0].vehicle_years[0].
66
+ vehicle_year[0].vehicle_makes[0].vehicle_make[0].
67
+ vehicle_models[0].vehicle_model[0].vehicle_trims[0].
68
+ vehicle_trim[0].vehicle_options[0]
69
+ engine = options.vehicle_engine_options.vehicle_engine
70
+ engine_name = engine.engine_name
71
+ engine_id = engine.engine_id
72
+ assert_not_nil( engine_name )
73
+
74
+ # Find parts for our 2008 Audi R8 with Base trim and whatever engine that
75
+ # trim package has.
76
+ #
77
+ vps = VehiclePartSearch.new( 2008, make_id, model_id,
78
+ { 'TrimId' => trim_id,
79
+ 'EngineId' => engine_id } )
80
+ rg = ResponseGroup.new( 'VehicleParts' )
81
+ response = @req.search( vps, rg )
82
+
83
+ parts = response.vehicle_part_search_response[0].vehicle_parts[0].part
84
+ assert( parts.size > 0 )
85
+
86
+ # Now, we do a reverse look-up.
87
+ #
88
+ # Go through all parts and test to see if they fit in our 2008 Audi R8
89
+ # Base trim. The answer should always be yes.
90
+ #
91
+ # part = parts[rand( parts.size - 1 )].item.asin
92
+
93
+ parts.each do |part|
94
+ vpl = VehiclePartLookup.new( part.item.asin,
95
+ { 'Year' => 2008,
96
+ 'MakeId' => make_id,
97
+ 'ModelId' => model_id,
98
+ 'TrimId' => trim_id } )
99
+
100
+ rg = ResponseGroup.new( 'VehiclePartFit' )
101
+ response = @req.search( vpl, rg )
102
+
103
+ fit = response.vehicle_part_lookup_response[0].vehicle_parts[0].part.
104
+ vehicle_part_fit.is_fit
105
+ assert_equal( 'YES', fit )
106
+ end
107
+ end
108
+
109
+ end
@@ -0,0 +1,16 @@
1
+ lib_dir = File.dirname(__FILE__) + '/../lib'
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+ $:.unshift lib_dir unless $:.include?(lib_dir)
5
+ require 'amazon'
6
+ require 'amazon/aws'
7
+ require 'amazon/aws/search'
8
+
9
+ include Amazon::AWS
10
+ include Amazon::AWS::Search
11
+
12
+
13
+ class Test::Unit::TestCase
14
+ @@associates_id = "reagif-20"
15
+ @@key_id = "15QN36861J5Q5KH0KZR2"
16
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hollownest-ruby-aws
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - hollownest
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-28 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: TODO
17
+ email: pac@hollownest.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - README.rdoc
26
+ - lib/amazon
27
+ - lib/amazon/aws
28
+ - lib/amazon/aws/cache.rb
29
+ - lib/amazon/aws/search.rb
30
+ - lib/amazon/aws/shoppingcart.rb
31
+ - lib/amazon/aws.rb
32
+ - lib/amazon/locale.rb
33
+ - lib/amazon.rb
34
+ - test/local
35
+ - test/local/cache_files
36
+ - test/local/cache_files/books.xml
37
+ - test/local/cache_files/electronics.xml
38
+ - test/local/cache_files/movies.xml
39
+ - test/local/cache_files/music.xml
40
+ - test/local/tc_local_search.rb
41
+ - test/network
42
+ - test/network/tc_amazon.rb
43
+ - test/network/tc_aws.rb
44
+ - test/network/tc_item_search.rb
45
+ - test/network/tc_multiple_operation.rb
46
+ - test/network/tc_operation_request.rb
47
+ - test/network/tc_serialisation.rb
48
+ - test/network/tc_shopping_cart.rb
49
+ - test/network/tc_vehicle_operations.rb
50
+ - test/test_helper.rb
51
+ has_rdoc: true
52
+ homepage: http://github.com/hollownest/ruby-aws
53
+ post_install_message:
54
+ rdoc_options:
55
+ - --inline-source
56
+ - --charset=UTF-8
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
70
+ version:
71
+ requirements: []
72
+
73
+ rubyforge_project:
74
+ rubygems_version: 1.2.0
75
+ signing_key:
76
+ specification_version: 2
77
+ summary: TODO
78
+ test_files: []
79
+