ruby-aaws 0.6.0 → 0.7.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,55 @@
1
+ # $Id: tc_list_lookup.rb,v 1.2 2009/06/03 22:33:04 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
+ rg = ResponseGroup.new( :ListInfo )
13
+ ll = ListLookup.new( '3TV12MGLOJI4R', :WishList )
14
+ response = @req.search( ll, rg )
15
+
16
+ list = response.kernel
17
+
18
+ assert_equal( '2008-06-30', list.date_created )
19
+
20
+ end
21
+
22
+ def test_list_lookup_no_response_group
23
+
24
+ @req.locale = 'us'
25
+ ll = ListLookup.new( '3P722DU4KUPCP', 'Listmania' )
26
+ ll.response_group = ResponseGroup.new( :ListInfo, :Small )
27
+ response = @req.search( ll, nil )
28
+
29
+ list = response.kernel
30
+
31
+ assert_equal( 'Computer History', list.list_name )
32
+
33
+ end
34
+
35
+ def test_list_lookup_class_method
36
+
37
+ response = Amazon::AWS.list_lookup( 'R35BA7X0YD3YP', 'Listmania' )
38
+
39
+ list = response.kernel
40
+
41
+ assert_equal( 'examples of perfection', list.list_name )
42
+
43
+ end
44
+
45
+ def test_item_search_class_method_block
46
+
47
+ Amazon::AWS.list_lookup( 'R35BA7X0YD3YP', :Listmania ) do |r|
48
+
49
+ list = r.kernel
50
+
51
+ assert_equal( 'examples of perfection', list.list_name )
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,55 @@
1
+ # $Id: tc_list_search.rb,v 1.2 2009/06/03 22:32:42 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
+ rg = ResponseGroup.new( :ListInfo )
13
+ ls = ListSearch.new( 'WishList', { 'Name' => 'Peter Duff' } )
14
+ response = @req.search( ls, rg )
15
+
16
+ lists = response.kernel
17
+
18
+ assert( lists.collect { |l| l.list_id }.include?( '18Y9QEW3A4SRY' ) )
19
+
20
+ end
21
+
22
+ def test_list_search_no_response_group
23
+
24
+ @req.locale = 'us'
25
+ ls = ListSearch.new( 'WishList', { 'Name' => 'Peter Duff' } )
26
+ ls.response_group = ResponseGroup.new( :ListMinimum )
27
+ response = @req.search( ls, nil )
28
+
29
+ lists = response.kernel
30
+
31
+ assert( lists.collect { |l| l.list_id }.include?( '18Y9QEW3A4SRY' ) )
32
+
33
+ end
34
+
35
+ def test_list_search_class_method
36
+
37
+ response = Amazon::AWS.list_search( 'WishList', { :Name => 'Peter Duff' } )
38
+
39
+ lists = response.kernel
40
+
41
+ assert( lists.size > 5 )
42
+
43
+ end
44
+
45
+ def test_item_search_class_method_block
46
+
47
+ Amazon::AWS.list_search( 'WishList', { 'Name' => 'Peter Duff' } ) do |r|
48
+
49
+ lists = r.kernel
50
+
51
+ assert( lists.size > 5 )
52
+ end
53
+ end
54
+
55
+ end
@@ -1,4 +1,4 @@
1
- # $Id: tc_multiple_operation.rb,v 1.2 2009/02/19 16:50:00 ianmacd Exp $
1
+ # $Id: tc_multiple_operation.rb,v 1.3 2009/06/15 21:21:02 ianmacd Exp $
2
2
  #
3
3
 
4
4
  require 'test/unit'
@@ -6,11 +6,166 @@ require './setup'
6
6
 
7
7
  class TestMultipleOperation < AWSTest
8
8
 
9
- def test_item_search
9
+ def test_unbatched_multiple_same_class_with_separate_response_groups
10
10
  il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
11
11
  'MerchantId' => 'Amazon' } )
12
12
  il2 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000051WBE',
13
+ 'MerchantId' => 'Amazon' } )
14
+
15
+ il.response_group = ResponseGroup.new( :Large )
16
+ il2.response_group = ResponseGroup.new( :Small )
17
+
18
+ # Create a multiple operation of the ItemSearch operation and the two
19
+ # batched ItemLookup operations.
20
+ #
21
+ mo = MultipleOperation.new( il, il2 )
22
+ response = @req.search( mo, nil )
23
+ mor = response.multi_operation_response[0]
24
+
25
+ # Ensure our separate response groups were used.
26
+ #
27
+ arguments = mor.operation_request.arguments.argument
28
+
29
+ il_rg = arguments.select do |arg|
30
+ arg.attrib['name'] == 'ItemLookup.1.ResponseGroup'
31
+ end[0]
32
+
33
+ il2_rg = arguments.select do |arg|
34
+ arg.attrib['name'] == 'ItemLookup.2.ResponseGroup'
35
+ end[0]
36
+
37
+ assert_equal( 'Large', il_rg.attrib['value'] )
38
+ assert_equal( 'Small', il2_rg.attrib['value'] )
39
+
40
+ # Ensure we received a MultiOperationResponse.
41
+ #
42
+ assert_instance_of( Amazon::AWS::AWSObject::MultiOperationResponse, mor )
43
+
44
+ # Ensure response contains an ItemLookupResponse.
45
+ #
46
+ assert_instance_of( Amazon::AWS::AWSObject::ItemLookupResponse,
47
+ mor.item_lookup_response[0] )
48
+
49
+ il_set = mor.item_lookup_response[0].items
50
+ il_arr1 = il_set[0].item
51
+ il_arr2 = il_set[1].item
52
+
53
+ # Ensure that there are two <ItemSet>s for the ItemLookup, because it was
54
+ # a batched operation.
55
+ #
56
+ assert_equal( 2, il_set.size )
57
+
58
+ # Assure that all item sets have some results.
59
+ #
60
+ assert( il_arr1.size > 0 )
61
+ assert( il_arr2.size > 0 )
62
+ end
63
+
64
+ def test_batched_multiple_with_separate_response_groups
65
+ il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
13
66
  'MerchantId' => 'Amazon' } )
67
+ il2 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000051WBE',
68
+ 'MerchantId' => 'Amazon' } )
69
+ il3 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B00061F8LO',
70
+ 'MerchantId' => 'Amazon' } )
71
+
72
+ il.response_group = ResponseGroup.new( :Large )
73
+ il2.response_group = ResponseGroup.new( :Small )
74
+
75
+ # Create a batch request of the two ItemLookup operations.
76
+ #
77
+ il.batch( il2 )
78
+
79
+ is = ItemSearch.new( 'Books', { 'Title' => 'Ruby' } )
80
+ is.response_group = ResponseGroup.new( :Medium, :Tags )
81
+
82
+ # Create a multiple operation of the ItemSearch operation and the two
83
+ # batched ItemLookup operations.
84
+ #
85
+ mo = MultipleOperation.new( is, il )
86
+ response = @req.search( mo, nil )
87
+ mor = response.multi_operation_response[0]
88
+
89
+ # Batch a third ItemLookup operation.
90
+ #
91
+ il.batch( il3 )
92
+ mo = MultipleOperation.new( is, il )
93
+
94
+ # Because exception classes aren't created until an exception occurs, we
95
+ # need to create the one we wish to test for now, otherwise we can't refer
96
+ # to it in our code without causing an 'uninitialized constant' error.
97
+ #
98
+ Amazon::AWS::Error.const_set( 'ExceededMaxBatchRequestsPerOperation',
99
+ Class.new( Amazon::AWS::Error::AWSError ) )
100
+
101
+ # Attempt to perform the search.
102
+ #
103
+ assert_raise( Amazon::AWS::Error::ExceededMaxBatchRequestsPerOperation ) do
104
+ @req.search( mo, nil )
105
+ end
106
+
107
+ # Ensure our separate response groups were used.
108
+ #
109
+ arguments = mor.operation_request.arguments.argument
110
+
111
+ il_rg = arguments.select do |arg|
112
+ arg.attrib['name'] == 'ItemLookup.1.ResponseGroup'
113
+ end[0]
114
+
115
+ il2_rg = arguments.select do |arg|
116
+ arg.attrib['name'] == 'ItemLookup.2.ResponseGroup'
117
+ end[0]
118
+
119
+ is_rg = arguments.select do |arg|
120
+ arg.attrib['name'] == 'ItemSearch.1.ResponseGroup'
121
+ end[0]
122
+
123
+ assert_equal( 'Large', il_rg.attrib['value'] )
124
+ assert_equal( 'Small', il2_rg.attrib['value'] )
125
+ assert_equal( 'Medium,Tags', is_rg.attrib['value'] )
126
+
127
+ # Ensure we received a MultiOperationResponse.
128
+ #
129
+ assert_instance_of( Amazon::AWS::AWSObject::MultiOperationResponse, mor )
130
+
131
+ # Ensure response contains an ItemSearchResponse.
132
+ #
133
+ assert_instance_of( Amazon::AWS::AWSObject::ItemSearchResponse,
134
+ mor.item_search_response[0] )
135
+
136
+ # Ensure response also contains an ItemLookupResponse.
137
+ #
138
+ assert_instance_of( Amazon::AWS::AWSObject::ItemLookupResponse,
139
+ mor.item_lookup_response[0] )
140
+
141
+ is_set = mor.item_search_response[0].items
142
+ il_set = mor.item_lookup_response[0].items
143
+ is_arr = is_set.item
144
+ il_arr1 = il_set[0].item
145
+ il_arr2 = il_set[1].item
146
+
147
+ # Ensure that there's one <ItemSet> for the ItemSearch.
148
+ #
149
+ assert_equal( 1, is_set.size )
150
+
151
+ # Ensure that there are two <ItemSet>s for the ItemLookup, because it was
152
+ # a batched operation.
153
+ #
154
+ assert_equal( 2, il_set.size )
155
+
156
+ # Assure that all item sets have some results.
157
+ #
158
+ assert( is_arr.size > 0 )
159
+ assert( il_arr1.size > 0 )
160
+ assert( il_arr2.size > 0 )
161
+ end
162
+
163
+
164
+ def test_batched_multiple_with_shared_response_group
165
+ il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
166
+ 'MerchantId' => 'Amazon' } )
167
+ il2 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000051WBE',
168
+ 'MerchantId' => 'Amazon' } )
14
169
 
15
170
  # Create a batch request of the two ItemLookup operations.
16
171
  #
@@ -63,4 +218,48 @@ class TestMultipleOperation < AWSTest
63
218
  assert( il_arr2.size > 0 )
64
219
  end
65
220
 
221
+ def test_multiple_class_method
222
+ il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
223
+ 'MerchantId' => 'Amazon' } )
224
+ il.response_group = ResponseGroup.new( :Large )
225
+
226
+ is = ItemSearch.new( 'Books', { 'Title' => 'Ruby' } )
227
+ is.response_group = ResponseGroup.new( :Medium, :Tags )
228
+
229
+ response = Amazon::AWS.multiple_operation( is, il )
230
+ mor = response.multi_operation_response[0]
231
+
232
+ # Ensure we received a MultiOperationResponse.
233
+ #
234
+ assert_instance_of( Amazon::AWS::AWSObject::MultiOperationResponse, mor )
235
+
236
+ # Ensure response contains an ItemSearchResponse.
237
+ #
238
+ assert_instance_of( Amazon::AWS::AWSObject::ItemSearchResponse,
239
+ mor.item_search_response[0] )
240
+
241
+ # Ensure response also contains an ItemLookupResponse.
242
+ #
243
+ assert_instance_of( Amazon::AWS::AWSObject::ItemLookupResponse,
244
+ mor.item_lookup_response[0] )
245
+
246
+ is_set = response.multi_operation_response.item_search_response[0].items
247
+ il_set = response.multi_operation_response.item_lookup_response[0].items
248
+ is_arr = is_set.item
249
+ il_arr = il_set[0].item
250
+
251
+ # Ensure that there's one <ItemSet> for the ItemSearch.
252
+ #
253
+ assert_equal( 1, is_set.size )
254
+
255
+ # Ensure that there's one <ItemSet> for the ItemLookup.
256
+ #
257
+ assert_equal( 1, il_set.size )
258
+
259
+ # Assure that all item sets have some results.
260
+ #
261
+ assert( is_arr.size > 0 )
262
+ assert( il_arr.size > 0 )
263
+ end
264
+
66
265
  end
@@ -0,0 +1,58 @@
1
+ # $Id: tc_seller_listing_lookup.rb,v 1.1 2009/06/03 08:46:31 ianmacd Exp $
2
+ #
3
+
4
+ require 'test/unit'
5
+ require './setup'
6
+
7
+ class TestSellerListingLookup < AWSTest
8
+
9
+ def test_seller_listing_lookup
10
+
11
+ sll = SellerListingLookup.new( 'AP8U6Y3PYQ9VO', :ASIN,
12
+ { :Id => 'B0009RRRC8' } )
13
+ rg = ResponseGroup.new( 'SellerListing' )
14
+ response = @req.search( sll, rg )
15
+
16
+ item = response.kernel
17
+
18
+ assert_equal( 'actionrecords', item.seller.nickname )
19
+
20
+ end
21
+
22
+ def test_seller_listing_lookup_no_response_group
23
+
24
+ sll = SellerListingLookup.new( 'AP8U6Y3PYQ9VO', :ASIN,
25
+ { :Id => 'B0009RRRC8' } )
26
+ sll.response_group = ResponseGroup.new( :SellerListing )
27
+ response = @req.search( sll )
28
+
29
+ item = response.kernel
30
+
31
+ assert_equal( 'actionrecords', item.seller.nickname )
32
+
33
+ end
34
+
35
+ def test_seller_listing_lookup_class_method
36
+
37
+ response = Amazon::AWS.seller_listing_lookup( 'AP8U6Y3PYQ9VO', :ASIN,
38
+ { :Id => 'B0009RRRC8' } )
39
+
40
+ item = response.kernel
41
+
42
+ assert_equal( 'actionrecords', item.seller.nickname )
43
+
44
+ end
45
+
46
+ def test_seller_listing_lookup_class_method_block
47
+
48
+ Amazon::AWS.seller_listing_lookup( 'AP8U6Y3PYQ9VO', :ASIN,
49
+ { :Id => 'B0009RRRC8' } ) do |r|
50
+
51
+ item = r.kernel
52
+
53
+ assert_equal( 'actionrecords', item.seller.nickname )
54
+
55
+ end
56
+ end
57
+
58
+ end
@@ -0,0 +1,70 @@
1
+ # $Id: tc_seller_listing_search.rb,v 1.1 2009/05/30 23:27:47 ianmacd Exp $
2
+ #
3
+
4
+ require 'test/unit'
5
+ require './setup'
6
+
7
+ class TestSellerListingSearch < AWSTest
8
+
9
+ def test_seller_listing_search
10
+
11
+ sl = SellerListingSearch.new( 'AP8U6Y3PYQ9VO',
12
+ { 'Keywords' => 'Killing Joke' } )
13
+ rg = ResponseGroup.new( 'SellerListing' )
14
+ response = @req.search( sl, rg )
15
+
16
+ items = response.seller_listing_search_response[0].seller_listings[0].
17
+ seller_listing
18
+
19
+
20
+ # Ensure we got some actual items back.
21
+ #
22
+ assert( items.size > 0 )
23
+
24
+ end
25
+
26
+ def test_seller_listing_search_no_response_group
27
+
28
+ sl = SellerListingSearch.new( 'AP8U6Y3PYQ9VO',
29
+ { 'Keywords' => 'Killing Joke' } )
30
+ sl.response_group = ResponseGroup.new( :SellerListing )
31
+ response = @req.search( sl )
32
+
33
+ items = response.seller_listing_search_response[0].seller_listings[0].
34
+ seller_listing
35
+
36
+ # Ensure we got some actual items back.
37
+ #
38
+ assert( items.size > 0 )
39
+
40
+ end
41
+
42
+ def test_seller_listing_search_class_method
43
+
44
+ response = Amazon::AWS.seller_listing_search( 'AP8U6Y3PYQ9VO',
45
+ { 'Keywords' => 'Killing Joke' } )
46
+
47
+ items = response.seller_listing_search_response[0].seller_listings[0].
48
+ seller_listing
49
+
50
+ # Ensure we got some actual items back.
51
+ #
52
+ assert( items.size > 0 )
53
+
54
+ end
55
+
56
+ def test_seller_listing_search_class_method_block
57
+
58
+ Amazon::AWS.seller_listing_search( 'AP8U6Y3PYQ9VO',
59
+ { 'Keywords' => 'Killing Joke' } ) do |r|
60
+
61
+ items = r.seller_listing_search_response[0].seller_listings[0].
62
+ seller_listing
63
+
64
+ # Ensure we got some actual items back.
65
+ #
66
+ assert( items.size > 0 )
67
+ end
68
+ end
69
+
70
+ end