ruby-paa 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.
Files changed (51) hide show
  1. data/example/batch_operation +28 -0
  2. data/example/browse_node_lookup1 +46 -0
  3. data/example/customer_content_lookup1 +27 -0
  4. data/example/customer_content_search1 +21 -0
  5. data/example/example1 +78 -0
  6. data/example/help1 +24 -0
  7. data/example/item_lookup1 +54 -0
  8. data/example/item_lookup2 +56 -0
  9. data/example/item_search1 +30 -0
  10. data/example/item_search2 +37 -0
  11. data/example/item_search3 +23 -0
  12. data/example/list_lookup1 +29 -0
  13. data/example/list_search1 +31 -0
  14. data/example/multiple_operation1 +69 -0
  15. data/example/seller_listing_lookup1 +30 -0
  16. data/example/seller_listing_search1 +29 -0
  17. data/example/seller_lookup1 +45 -0
  18. data/example/shopping_cart1 +42 -0
  19. data/example/similarity_lookup1 +48 -0
  20. data/example/tag_lookup1 +34 -0
  21. data/example/transaction_lookup1 +25 -0
  22. data/example/vehicle_search +22 -0
  23. data/lib/ruby-paa.rb +165 -0
  24. data/lib/ruby-paa/aws.rb +1489 -0
  25. data/lib/ruby-paa/aws/cache.rb +141 -0
  26. data/lib/ruby-paa/aws/search.rb +463 -0
  27. data/lib/ruby-paa/aws/shoppingcart.rb +536 -0
  28. data/lib/ruby-paa/locale.rb +102 -0
  29. data/test/setup.rb +56 -0
  30. data/test/tc_amazon.rb +20 -0
  31. data/test/tc_aws.rb +160 -0
  32. data/test/tc_browse_node_lookup.rb +49 -0
  33. data/test/tc_customer_content_lookup.rb +49 -0
  34. data/test/tc_help.rb +44 -0
  35. data/test/tc_item_lookup.rb +47 -0
  36. data/test/tc_item_search.rb +105 -0
  37. data/test/tc_list_lookup.rb +60 -0
  38. data/test/tc_list_search.rb +44 -0
  39. data/test/tc_multiple_operation.rb +375 -0
  40. data/test/tc_operation_request.rb +64 -0
  41. data/test/tc_seller_listing_lookup.rb +47 -0
  42. data/test/tc_seller_listing_search.rb +55 -0
  43. data/test/tc_seller_lookup.rb +44 -0
  44. data/test/tc_serialisation.rb +107 -0
  45. data/test/tc_shopping_cart.rb +214 -0
  46. data/test/tc_similarity_lookup.rb +48 -0
  47. data/test/tc_tag_lookup.rb +24 -0
  48. data/test/tc_transaction_lookup.rb +24 -0
  49. data/test/tc_vehicle_operations.rb +118 -0
  50. data/test/ts_aws.rb +24 -0
  51. metadata +132 -0
@@ -0,0 +1,47 @@
1
+ # $Id: tc_item_lookup.rb,v 1.3 2010/02/20 17:15:17 ianmacd Exp $
2
+ #
3
+
4
+ require 'test/unit'
5
+ require './setup'
6
+
7
+ class TestItemLookup < AWSTest
8
+
9
+ def test_item_lookup
10
+
11
+ is = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC' } )
12
+ is.response_group = @rg
13
+ response = @req.search( is )
14
+
15
+ results = response.kernel
16
+
17
+ # Ensure we got some actual results back.
18
+ #
19
+ assert( results.size > 0 )
20
+
21
+ end
22
+
23
+ def test_item_lookup_class_method
24
+
25
+ response = Amazon::AWS.item_lookup( 'ASIN', { 'ItemId' => 'B000AE4QEC' } )
26
+
27
+ results = response.kernel
28
+
29
+ # Ensure we got some actual results back.
30
+ #
31
+ assert( results.size > 0 )
32
+
33
+ end
34
+
35
+ def test_item_search_class_method_block
36
+
37
+ Amazon::AWS.item_lookup( 'ASIN', { 'ItemId' => 'B000AE4QEC' } ) do |r|
38
+
39
+ results = r.kernel
40
+
41
+ # Ensure we got some actual results back.
42
+ #
43
+ assert( results.size > 0 )
44
+ end
45
+ end
46
+
47
+ end
@@ -0,0 +1,105 @@
1
+ # encoding: ASCII-8BIT
2
+ #
3
+ # $Id: tc_item_search.rb,v 1.8 2010/02/20 23:57:26 ianmacd Exp $
4
+ #
5
+ # The encoding at the top of this file is necessary for Ruby 1.9, which will
6
+ # otherwise choke with 'invalid multibyte char (US-ASCII)' when it reads the
7
+ # ISO-8859-1 encoded accented 'e' in the test_item_search_iso_8859_15 method.
8
+
9
+ require 'test/unit'
10
+ require './setup'
11
+
12
+ class TestItemSearch < AWSTest
13
+
14
+ def test_item_search_iso_8859_15
15
+
16
+ # Ensure that character set encoding works properly by manually trying
17
+ # ISO-8859-15, a.k.a. Latin-15.
18
+ #
19
+ @req.encoding = 'iso-8859-15'
20
+
21
+ str = 'Caf�'
22
+ is = ItemSearch.new( 'Books', { 'Title' => str } )
23
+ response = @req.search( is )
24
+
25
+ results = response.kernel
26
+
27
+ # Ensure we got some actual results back.
28
+ #
29
+ assert( results.size > 0 )
30
+
31
+ end
32
+
33
+ def test_item_search_utf8
34
+
35
+ # Manually set UTF-8 encoding.
36
+ #
37
+ @req.encoding = 'utf-8'
38
+
39
+ str = 'Café'
40
+ is = ItemSearch.new( 'Books', { 'Title' => str } )
41
+ response = @req.search( is )
42
+
43
+ results = response.kernel
44
+
45
+ # Ensure we got some actual results back.
46
+ #
47
+ assert( results.size > 0 )
48
+
49
+ end
50
+
51
+ def test_item_search_obsolete_rg_passing
52
+
53
+ # Manually set UTF-8 encoding.
54
+ #
55
+ @req.encoding = 'utf-8'
56
+
57
+ str = 'Café'
58
+ is = ItemSearch.new( 'Books', { 'Title' => str } )
59
+
60
+ assert_raise( Amazon::AWS::ObsolescenceError ) do
61
+ response = @req.search( is, @rg )
62
+ end
63
+
64
+ end
65
+
66
+ def test_item_search_multiple_pages
67
+
68
+ @req.encoding = 'utf-8'
69
+ is = ItemSearch.new( 'Books', { 'Title' => 'programming' } )
70
+ responses = @req.search( is, 5 )
71
+
72
+ results = []
73
+ responses.each { |response| results += response.kernel }
74
+
75
+ # Ensure we got more than 10 results back.
76
+ #
77
+ assert( results.size > 10 )
78
+
79
+ end
80
+
81
+ def test_item_search_class_method
82
+
83
+ response = Amazon::AWS.item_search( 'Books', { 'Title' => 'programming' } )
84
+
85
+ results = response.kernel
86
+
87
+ # Ensure we got some actual results back.
88
+ #
89
+ assert( results.size > 0 )
90
+
91
+ end
92
+
93
+ def test_item_search_class_method_block
94
+
95
+ Amazon::AWS.item_search( 'Books', { 'Title' => 'programming' } ) do |r|
96
+
97
+ results = r.kernel
98
+
99
+ # Ensure we got some actual results back.
100
+ #
101
+ assert( results.size > 0 )
102
+ end
103
+ end
104
+
105
+ end
@@ -0,0 +1,60 @@
1
+ # $Id: tc_list_lookup.rb,v 1.4 2010/02/20 17:15:17 ianmacd Exp $
2
+ #
3
+
4
+ require 'test/unit'
5
+ require './setup'
6
+
7
+ class TestListLookup < AWSTest
8
+
9
+ def test_list_lookup
10
+
11
+ @req.locale = 'us'
12
+ ll = ListLookup.new( '3TV12MGLOJI4R', :WishList )
13
+ ll_rg = ResponseGroup.new( :ListInfo )
14
+ ll.response_group = ll_rg
15
+
16
+ response = @req.search( ll )
17
+
18
+ list = response.kernel
19
+
20
+ assert_equal( '2008-06-30', list.date_created )
21
+
22
+ end
23
+
24
+ def test_list_lookup_all_pages
25
+
26
+ @req.locale = 'uk'
27
+ ll = ListLookup.new( '1OPRRUVZVU9BE', 'WishList' )
28
+ ll_rg = ResponseGroup.new( 'ListInfo', 'Small' )
29
+ ll.response_group = ll_rg
30
+
31
+ response = @req.search( ll, :ALL_PAGES )
32
+
33
+ list = response.collect { |r| r.list_lookup_response[0].lists[0].list }
34
+ reported_items = list[0].total_items.to_i
35
+ items = list.collect { |page| page.list_item }.flatten
36
+
37
+ assert_equal( reported_items, items.size )
38
+ end
39
+
40
+ def test_list_lookup_class_method
41
+
42
+ response = Amazon::AWS.list_lookup( 'R35BA7X0YD3YP', 'Listmania' )
43
+
44
+ list = response.kernel
45
+
46
+ assert_equal( 'examples of perfection', list.list_name )
47
+
48
+ end
49
+
50
+ def test_item_search_class_method_block
51
+
52
+ Amazon::AWS.list_lookup( 'R35BA7X0YD3YP', :Listmania ) do |r|
53
+
54
+ list = r.kernel
55
+
56
+ assert_equal( 'examples of perfection', list.list_name )
57
+ end
58
+ end
59
+
60
+ end
@@ -0,0 +1,44 @@
1
+ # $Id: tc_list_search.rb,v 1.3 2010/02/20 17:15:18 ianmacd Exp $
2
+ #
3
+
4
+ require 'test/unit'
5
+ require './setup'
6
+
7
+ class TestListSearch < AWSTest
8
+
9
+ def test_list_search
10
+
11
+ @req.locale = 'us'
12
+ ls = ListSearch.new( 'WishList', { 'Name' => 'Peter Duff' } )
13
+ ls_rg = ResponseGroup.new( :ListInfo )
14
+ ls.response_group = ls_rg
15
+
16
+ response = @req.search( ls )
17
+
18
+ lists = response.kernel
19
+
20
+ assert( lists.collect { |l| l.list_id }.flatten.include?( '1L88A4AXYF5QR' ) )
21
+
22
+ end
23
+
24
+ def test_list_search_class_method
25
+
26
+ response = Amazon::AWS.list_search( 'WishList', { :Name => 'Peter Duff' } )
27
+
28
+ lists = response.kernel
29
+
30
+ assert( lists.size > 5 )
31
+
32
+ end
33
+
34
+ def test_item_search_class_method_block
35
+
36
+ Amazon::AWS.list_search( 'WishList', { 'Name' => 'Peter Duff' } ) do |r|
37
+
38
+ lists = r.kernel
39
+
40
+ assert( lists.size > 5 )
41
+ end
42
+ end
43
+
44
+ end
@@ -0,0 +1,375 @@
1
+ # $Id: tc_multiple_operation.rb,v 1.4 2010/02/20 17:32:12 ianmacd Exp $
2
+ #
3
+
4
+ require 'test/unit'
5
+ require './setup'
6
+
7
+ class TestMultipleOperation < AWSTest
8
+
9
+ # Because exception classes aren't created until an exception occurs, we
10
+ # need to create the ones we wish to test for now, otherwise we can't refer
11
+ # to them in our code without causing an 'uninitialized constant' error.
12
+ #
13
+ Amazon::AWS::Error.const_set( 'ExceededMaxBatchRequestsPerOperation',
14
+ Class.new( Amazon::AWS::Error::AWSError ) )
15
+ Amazon::AWS::Error.const_set( 'ExceededMaxMultiOpOperations',
16
+ Class.new( Amazon::AWS::Error::AWSError ) )
17
+
18
+ def test_unbatched_same_class
19
+ il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
20
+ 'MerchantId' => 'Amazon' } )
21
+ il2 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000051WBE',
22
+ 'MerchantId' => 'Amazon' } )
23
+ il3 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B00061F8LO',
24
+ 'MerchantId' => 'Amazon' } )
25
+ il4 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B002DESIE6',
26
+ 'MerchantId' => 'Amazon' } )
27
+
28
+ il.response_group = ResponseGroup.new( :Large )
29
+ il2.response_group = ResponseGroup.new( :Small )
30
+
31
+ # Create a multiple operation of the two ItemLookup operations.
32
+ #
33
+ mo = MultipleOperation.new( il, il2 )
34
+ response = @req.search( mo )
35
+ mor = response.item_lookup_response[0]
36
+
37
+ # Ensure our separate response groups were used.
38
+ #
39
+ arguments = mor.operation_request.arguments.argument
40
+
41
+ il_rg = arguments.select do |arg|
42
+ arg.attrib['name'] == 'ItemLookup.1.ResponseGroup'
43
+ end[0]
44
+
45
+ il2_rg = arguments.select do |arg|
46
+ arg.attrib['name'] == 'ItemLookup.2.ResponseGroup'
47
+ end[0]
48
+
49
+ assert_equal( 'Large', il_rg.attrib['value'] )
50
+ assert_equal( 'Small', il2_rg.attrib['value'] )
51
+
52
+ # Ensure we received a MultiOperationResponse.
53
+ #
54
+ assert_instance_of( Amazon::AWS::AWSObject::ItemLookupResponse, mor )
55
+
56
+ il_set = mor.items
57
+ il_arr1 = il_set[0].item
58
+ il_arr2 = il_set[1].item
59
+
60
+ # Ensure that there are two <ItemSet>s for the ItemLookup, because it was
61
+ # a batched operation.
62
+ #
63
+ assert_equal( 2, il_set.size )
64
+
65
+ # Assure that all item sets have some results.
66
+ #
67
+ assert( il_arr1.size > 0 )
68
+ assert( il_arr2.size > 0 )
69
+
70
+ mo = MultipleOperation.new( il, il2, il3 )
71
+
72
+ # Attempt to perform the search.
73
+ #
74
+ assert_raise( Amazon::AWS::Error::ExceededMaxBatchRequestsPerOperation ) do
75
+ @req.search( mo )
76
+ end
77
+
78
+ mo = MultipleOperation.new( il, il2, il3, il4 )
79
+ assert_raise( Amazon::AWS::Error::ExceededMaxBatchRequestsPerOperation ) do
80
+ @req.search( mo )
81
+ end
82
+ end
83
+
84
+
85
+ def test_batched_same_class
86
+ il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
87
+ 'MerchantId' => 'Amazon' } )
88
+ il2 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000051WBE',
89
+ 'MerchantId' => 'Amazon' } )
90
+ il3 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B00061F8LO',
91
+ 'MerchantId' => 'Amazon' } )
92
+ il4 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B002DESIE6',
93
+ 'MerchantId' => 'Amazon' } )
94
+
95
+ il.response_group = ResponseGroup.new( :Large )
96
+ il2.response_group = ResponseGroup.new( :Small )
97
+
98
+ il.batch( il2 )
99
+ il3.batch( il4 )
100
+
101
+ # Create a multiple operation of the two batched operations.
102
+ #
103
+ mo = MultipleOperation.new( il, il3 )
104
+
105
+ # Attempt to perform the search.
106
+ #
107
+ assert_raise( Amazon::AWS::Error::ExceededMaxBatchRequestsPerOperation ) do
108
+ @req.search( mo )
109
+ end
110
+
111
+ # Create a multiple operation of a single operation, plus a batched.
112
+ #
113
+ mo = MultipleOperation.new( il2, il3 )
114
+
115
+ # Attempt to perform the search.
116
+ #
117
+ assert_raise( Amazon::AWS::Error::ExceededMaxBatchRequestsPerOperation ) do
118
+ @req.search( mo )
119
+ end
120
+
121
+ # Create a multiple operation of a batched operation, plus a single.
122
+ #
123
+ mo = MultipleOperation.new( il, il4 )
124
+
125
+ # Attempt to perform the search.
126
+ #
127
+ assert_raise( Amazon::AWS::Error::ExceededMaxBatchRequestsPerOperation ) do
128
+ @req.search( mo )
129
+ end
130
+
131
+ end
132
+
133
+
134
+ def test_unbatched_different_class
135
+ il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
136
+ 'MerchantId' => 'Amazon' } )
137
+ is = ItemSearch.new( 'Books', { 'Title' => 'Ruby' } )
138
+ bnl = BrowseNodeLookup.new( 694212 )
139
+
140
+ il.response_group = ResponseGroup.new( :Medium )
141
+ is.response_group = ResponseGroup.new( :Medium, :Tags )
142
+ bnl.response_group = ResponseGroup.new( :BrowseNodeInfo )
143
+
144
+ # Create a multiple operation of the ItemSearch operation and the
145
+ # ItemLookup operation.
146
+ #
147
+ mo = MultipleOperation.new( is, il )
148
+ response = @req.search( mo )
149
+ mor = response.multi_operation_response[0]
150
+
151
+ # Ensure our separate response groups were used.
152
+ #
153
+ arguments = mor.operation_request.arguments.argument
154
+
155
+ il_rg = arguments.select do |arg|
156
+ arg.attrib['name'] == 'ItemLookup.1.ResponseGroup'
157
+ end[0]
158
+
159
+ is_rg = arguments.select do |arg|
160
+ arg.attrib['name'] == 'ItemSearch.1.ResponseGroup'
161
+ end[0]
162
+
163
+ assert_equal( 'Medium', il_rg.attrib['value'] )
164
+ assert_equal( 'Medium,Tags', is_rg.attrib['value'] )
165
+
166
+ # Ensure we received a MultiOperationResponse.
167
+ #
168
+ assert_instance_of( Amazon::AWS::AWSObject::MultiOperationResponse, mor )
169
+
170
+ # Ensure response contains an ItemSearchResponse.
171
+ #
172
+ assert_instance_of( Amazon::AWS::AWSObject::ItemSearchResponse,
173
+ mor.item_search_response[0] )
174
+
175
+ # Ensure response also contains an ItemLookupResponse.
176
+ #
177
+ assert_instance_of( Amazon::AWS::AWSObject::ItemLookupResponse,
178
+ mor.item_lookup_response[0] )
179
+
180
+ is_set = mor.item_search_response[0].items
181
+ il_set = mor.item_lookup_response[0].items
182
+ is_arr = is_set.item
183
+ il_arr = il_set.item
184
+
185
+ # Ensure that there's one <ItemSet> for the ItemSearch.
186
+ #
187
+ assert_equal( 1, is_set.size )
188
+
189
+ # Ensure that there's one <ItemSet> for the ItemLookup.
190
+ #
191
+ assert_equal( 1, il_set.size )
192
+
193
+ # Assure that all item sets have some results.
194
+ #
195
+ assert( is_arr.size > 0 )
196
+ assert( il_arr.size > 0 )
197
+
198
+ mo = MultipleOperation.new( is, il, bnl )
199
+ assert_raise( Amazon::AWS::Error::ExceededMaxMultiOpOperations ) do
200
+ @req.search( mo )
201
+ end
202
+ end
203
+
204
+
205
+ def test_batched_different_class
206
+ il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
207
+ 'MerchantId' => 'Amazon' } )
208
+ il2 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000051WBE',
209
+ 'MerchantId' => 'Amazon' } )
210
+ il3 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B00061F8LO',
211
+ 'MerchantId' => 'Amazon' } )
212
+ is = ItemSearch.new( 'Books', { 'Title' => 'Ruby' } )
213
+ is2 = ItemSearch.new( 'Music', { 'Artist' => 'Dead Can Dance' } )
214
+ bnl = BrowseNodeLookup.new( 694212 )
215
+
216
+ il.response_group = ResponseGroup.new( :Medium )
217
+ il2.response_group = ResponseGroup.new( :Large )
218
+ is.response_group = ResponseGroup.new( :Medium, :Tags )
219
+ is2.response_group = ResponseGroup.new( :Small, :Reviews )
220
+ bnl.response_group = ResponseGroup.new( :BrowseNodeInfo )
221
+
222
+ # Create a multiple operation of two batched ItemSearch operations and two
223
+ # batched ItemLookup operations.
224
+ #
225
+ il.batch( il2 )
226
+ is.batch( is2 )
227
+
228
+ mo = MultipleOperation.new( [ is, il ] )
229
+ response = @req.search( mo )
230
+ mor = response.multi_operation_response[0]
231
+
232
+ # Ensure our separate response groups were used.
233
+ #
234
+ arguments = mor.operation_request.arguments.argument
235
+
236
+ il_rg = arguments.select do |arg|
237
+ arg.attrib['name'] == 'ItemLookup.1.ResponseGroup'
238
+ end[0]
239
+
240
+ il2_rg = arguments.select do |arg|
241
+ arg.attrib['name'] == 'ItemLookup.2.ResponseGroup'
242
+ end[0]
243
+
244
+ is_rg = arguments.select do |arg|
245
+ arg.attrib['name'] == 'ItemSearch.1.ResponseGroup'
246
+ end[0]
247
+
248
+ is2_rg = arguments.select do |arg|
249
+ arg.attrib['name'] == 'ItemSearch.2.ResponseGroup'
250
+ end[0]
251
+
252
+ assert_equal( 'Medium', il_rg.attrib['value'] )
253
+ assert_equal( 'Large', il2_rg.attrib['value'] )
254
+ assert_equal( 'Medium,Tags', is_rg.attrib['value'] )
255
+ assert_equal( 'Small,Reviews', is2_rg.attrib['value'] )
256
+
257
+ # Check to see whether we can set the response group for all encapsulated
258
+ # operations with a single assignment.
259
+ #
260
+ mo.response_group = ResponseGroup.new( :Small )
261
+ response = @req.search( mo )
262
+ mor = response.multi_operation_response[0]
263
+
264
+ arguments = mor.operation_request.arguments.argument
265
+
266
+ il_rg = arguments.select do |arg|
267
+ arg.attrib['name'] == 'ItemLookup.1.ResponseGroup'
268
+ end[0]
269
+
270
+ il2_rg = arguments.select do |arg|
271
+ arg.attrib['name'] == 'ItemLookup.2.ResponseGroup'
272
+ end[0]
273
+
274
+ is_rg = arguments.select do |arg|
275
+ arg.attrib['name'] == 'ItemSearch.1.ResponseGroup'
276
+ end[0]
277
+
278
+ is2_rg = arguments.select do |arg|
279
+ arg.attrib['name'] == 'ItemSearch.2.ResponseGroup'
280
+ end[0]
281
+
282
+ assert_equal( 'Small', il_rg.attrib['value'] )
283
+ assert_equal( 'Small', il2_rg.attrib['value'] )
284
+ assert_equal( 'Small', is_rg.attrib['value'] )
285
+ assert_equal( 'Small', is2_rg.attrib['value'] )
286
+
287
+ # Ensure we received a MultiOperationResponse.
288
+ #
289
+ assert_instance_of( Amazon::AWS::AWSObject::MultiOperationResponse, mor )
290
+
291
+ # Ensure response contains an ItemSearchResponse.
292
+ #
293
+ assert_instance_of( Amazon::AWS::AWSObject::ItemSearchResponse,
294
+ mor.item_search_response[0] )
295
+
296
+ # Ensure response also contains an ItemLookupResponse.
297
+ #
298
+ assert_instance_of( Amazon::AWS::AWSObject::ItemLookupResponse,
299
+ mor.item_lookup_response[0] )
300
+
301
+ is_set = mor.item_search_response[0].items
302
+ il_set = mor.item_lookup_response[0].items
303
+
304
+ # Ensure that there are two <ItemSet>s for the ItemSearch.
305
+ #
306
+ assert_equal( 2, is_set.size )
307
+
308
+ # Ensure that there are two <ItemSet>s for the ItemLookup.
309
+ #
310
+ assert_equal( 2, il_set.size )
311
+
312
+ is_arr = is_set[0].item
313
+ is2_arr = is_set[1].item
314
+ il_arr = il_set[0].item
315
+ il2_arr = il_set[1].item
316
+
317
+ # Assure that all item sets have some results.
318
+ #
319
+ assert( is_arr.size > 0 )
320
+ assert( is2_arr.size > 0 )
321
+ assert( il_arr.size > 0 )
322
+ assert( il2_arr.size > 0 )
323
+
324
+ mo = MultipleOperation.new( [ is, il, bnl ] )
325
+ assert_raise( Amazon::AWS::Error::ExceededMaxMultiOpOperations ) do
326
+ @req.search( mo )
327
+ end
328
+ end
329
+
330
+
331
+ def test_multiple_class_method
332
+ il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
333
+ 'MerchantId' => 'Amazon' } )
334
+ il.response_group = ResponseGroup.new( :Large )
335
+
336
+ is = ItemSearch.new( 'Books', { 'Title' => 'Ruby' } )
337
+ is.response_group = ResponseGroup.new( :Medium, :Tags )
338
+
339
+ response = Amazon::AWS.multiple_operation( is, il )
340
+ mor = response.multi_operation_response[0]
341
+
342
+ # Ensure we received a MultiOperationResponse.
343
+ #
344
+ assert_instance_of( Amazon::AWS::AWSObject::MultiOperationResponse, mor )
345
+
346
+ # Ensure response contains an ItemSearchResponse.
347
+ #
348
+ assert_instance_of( Amazon::AWS::AWSObject::ItemSearchResponse,
349
+ mor.item_search_response[0] )
350
+
351
+ # Ensure response also contains an ItemLookupResponse.
352
+ #
353
+ assert_instance_of( Amazon::AWS::AWSObject::ItemLookupResponse,
354
+ mor.item_lookup_response[0] )
355
+
356
+ is_set = response.multi_operation_response.item_search_response[0].items
357
+ il_set = response.multi_operation_response.item_lookup_response[0].items
358
+ is_arr = is_set.item
359
+ il_arr = il_set[0].item
360
+
361
+ # Ensure that there's one <ItemSet> for the ItemSearch.
362
+ #
363
+ assert_equal( 1, is_set.size )
364
+
365
+ # Ensure that there's one <ItemSet> for the ItemLookup.
366
+ #
367
+ assert_equal( 1, il_set.size )
368
+
369
+ # Assure that all item sets have some results.
370
+ #
371
+ assert( is_arr.size > 0 )
372
+ assert( il_arr.size > 0 )
373
+ end
374
+
375
+ end