peddler 0.15.0 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -7
  3. data/lib/mws/fulfillment_inbound_shipment/client.rb +8 -8
  4. data/lib/mws/fulfillment_outbound_shipment/client.rb +3 -2
  5. data/lib/mws/off_amazon_payments/client.rb +18 -16
  6. data/lib/mws/orders/client.rb +2 -1
  7. data/lib/mws/products/client.rb +12 -12
  8. data/lib/mws/recommendations/client.rb +2 -2
  9. data/lib/mws/reports/client.rb +1 -1
  10. data/lib/mws/sellers/client.rb +1 -0
  11. data/lib/mws/subscriptions/client.rb +9 -9
  12. data/lib/mws/webstore/client.rb +7 -7
  13. data/lib/peddler/client.rb +23 -14
  14. data/lib/peddler/marketplace.rb +1 -1
  15. data/lib/peddler/operation.rb +3 -2
  16. data/lib/peddler/structured_list.rb +1 -1
  17. data/lib/peddler/version.rb +1 -1
  18. data/test/helper.rb +14 -3
  19. data/test/integration/test_fulfillment_inbound_shipment.rb +1 -1
  20. data/test/integration/test_recommendations.rb +2 -1
  21. data/test/integration/test_subscriptions.rb +0 -1
  22. data/test/mws.yml.example +4 -4
  23. data/test/unit/mws/test_feeds_client.rb +1 -1
  24. data/test/unit/mws/test_fulfillment_inbound_shipment_client.rb +1 -1
  25. data/test/unit/mws/test_fulfillment_outbound_shipment_client.rb +19 -2
  26. data/test/unit/mws/test_off_amazon_payments_client.rb +14 -1
  27. data/test/unit/mws/test_products_client.rb +1 -1
  28. data/test/unit/mws/test_recommendations_client.rb +1 -1
  29. data/test/unit/mws/test_sellers_client.rb +12 -0
  30. data/test/unit/mws/test_subscriptions_client.rb +3 -3
  31. data/test/unit/mws/test_webstore_client.rb +2 -2
  32. data/test/unit/peddler/test_client.rb +36 -11
  33. data/test/unit/peddler/test_marketplace.rb +1 -1
  34. data/test/unit/peddler/test_operation.rb +10 -10
  35. data/test/unit/peddler/test_parser.rb +10 -3
  36. data/test/unit/peddler/test_xml_parser.rb +6 -2
  37. metadata +2 -4
  38. data/test/mws.yml.1 +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 04fe2f05cb29fdcfed397c2a449cee124e59e804
4
- data.tar.gz: 703bbfa1b3586e6de667e9588c08160f16e44483
3
+ metadata.gz: a6f67b925cce300aac503662925a525c2a926db0
4
+ data.tar.gz: c50b916f201204efff20ad84142b890f87f18db8
5
5
  SHA512:
6
- metadata.gz: f2bb404705d1ebf31383bfa2175f1f42319594a7b6bd1e1f0aa49959db89da39bc49a22a59ba4baa17d4fb8a288b480ecbf8ba3fb12f9b47e98259eef1c97641
7
- data.tar.gz: 1998213239427a3ab9bbbd5d363e707827ef01ad973d8a891426775fbe1e1f4808d29d241638b81fbf0891aed1389ab22837e14b79633035bc4d4cce3fc293ff
6
+ metadata.gz: 7b7207770118f4af6786a4394bfd1138b0b89c311e9b20059b9818ae75a84c4ed25f2ea4fd102740e5f98ffa1847e78d8536509e6b73cddf5fc0f4b1fefa6394
7
+ data.tar.gz: 171a182338ae07f4e52ddbf846fd12e963ec2c4dce6c9c18b38e8fd8c95f8e3e3148a44b24d264a9b6165158b3a9908ad7531a63a5eacd836c3b569c42f4b31e
data/README.md CHANGED
@@ -34,16 +34,12 @@ Each client requires valid MWS credentials. You can set some or all when or afte
34
34
 
35
35
  ```ruby
36
36
  client = MWS::Orders::Client.new(
37
- marketplace_id: "foo",
38
- merchant_id: "bar",
39
- aws_access_key_id: "baz",
37
+ primary_marketplace_id: "foo",
38
+ merchant_id: "bar",
39
+ aws_access_key_id: "baz",
40
40
  aws_secret_access_key: "qux"
41
41
  )
42
42
 
43
- # Swap marketplace
44
- client.marketplace_id = "quux"
45
- ```
46
-
47
43
  Alternatively, you can set these globally in the shell.
48
44
 
49
45
  ```sh
@@ -21,8 +21,8 @@ module MWS
21
21
  def create_inbound_shipment_plan(ship_from_address, inbound_shipment_plan_request_items, opts = {})
22
22
  operation('CreateInboundShipmentPlan')
23
23
  .add(opts.update(
24
- 'ShipFromAddress' => ship_from_address,
25
- 'InboundShipmentPlanRequestItems' => inbound_shipment_plan_request_items
24
+ 'ShipFromAddress' => ship_from_address,
25
+ 'InboundShipmentPlanRequestItems' => inbound_shipment_plan_request_items
26
26
  ))
27
27
  .structure!('InboundShipmentPlanRequestItems', 'member')
28
28
 
@@ -40,8 +40,8 @@ module MWS
40
40
  def create_inbound_shipment(shipment_id, inbound_shipment_header, opts = {})
41
41
  operation('CreateInboundShipment')
42
42
  .add(opts.update(
43
- 'ShipmentId' => shipment_id,
44
- 'InboundShipmentHeader' => inbound_shipment_header
43
+ 'ShipmentId' => shipment_id,
44
+ 'InboundShipmentHeader' => inbound_shipment_header
45
45
  ))
46
46
  .structure!('InboundShipmentItems', 'member')
47
47
 
@@ -59,8 +59,8 @@ module MWS
59
59
  def update_inbound_shipment(shipment_id, inbound_shipment_header, opts = {})
60
60
  operation('UpdateInboundShipment')
61
61
  .add(opts.update(
62
- 'ShipmentId' => shipment_id,
63
- 'InboundShipmentHeader' => inbound_shipment_header
62
+ 'ShipmentId' => shipment_id,
63
+ 'InboundShipmentHeader' => inbound_shipment_header
64
64
  ))
65
65
  .structure!('InboundShipmentItems', 'member')
66
66
 
@@ -142,8 +142,8 @@ module MWS
142
142
  def get_package_labels(shipment_id, page_type, opts = {})
143
143
  operation('GetPackageLabels')
144
144
  .add(opts.update(
145
- 'ShipmentId' => shipment_id,
146
- 'PageType' => page_type
145
+ 'ShipmentId' => shipment_id,
146
+ 'PageType' => page_type
147
147
  ))
148
148
 
149
149
  run
@@ -55,6 +55,7 @@ module MWS
55
55
  # @option opts [Array<String>] :notification_email_list
56
56
  # @option opts [Struct, Hash] :cod_settings
57
57
  # @return [Peddler::XMLParser]
58
+ # rubocop:disable MethodLength, ParameterLists
58
59
  def create_fulfillment_order(seller_fulfillment_order_id, displayable_order_id, displayable_order_date_time, displayable_order_comment, shipping_speed_category, destination_address, items, opts = {})
59
60
  if opts.key?(:cod_settings)
60
61
  opts['CODSettings'] = opts.delete(:cod_settings)
@@ -71,7 +72,7 @@ module MWS
71
72
  'DestinationAddress' => destination_address,
72
73
  'Items' => items
73
74
  )
74
- )
75
+ )
75
76
  .structure!('Items', 'member')
76
77
  .structure!('NotificationEmailList', 'member')
77
78
 
@@ -142,7 +143,7 @@ module MWS
142
143
  # Returns delivery tracking information for a package in an outbound
143
144
  # shipment for a Multi-Channel Fulfillment order
144
145
  def get_package_tracking_details
145
- raise NotImplementedError
146
+ fail NotImplementedError
146
147
  end
147
148
 
148
149
  # Requests that Amazon stop attempting to fulfill an existing fulfillment
@@ -13,6 +13,8 @@ module MWS
13
13
  # made through the Login and Pay with Amazon service offered by Amazon
14
14
  # Payments. You cannot use this API section to process payments for Amazon
15
15
  # Marketplace, Amazon Webstore, or Checkout by Amazon.
16
+ #
17
+ # rubocop:disable ClassLength
16
18
  class Client < ::Peddler::Client
17
19
  version "2013-01-01"
18
20
  path "/OffAmazonPayments/#{version}/"
@@ -38,8 +40,8 @@ module MWS
38
40
  def create_order_reference_for_id(id, id_type, opts = {})
39
41
  operation('CreateOrderReferenceForId')
40
42
  .add(opts.update(
41
- 'Id' => id,
42
- 'IdType' => id_type
43
+ 'Id' => id,
44
+ 'IdType' => id_type
43
45
  ))
44
46
 
45
47
  run
@@ -55,7 +57,7 @@ module MWS
55
57
  def get_billing_agreement_details(amazon_billing_agreement_id, opts = {})
56
58
  operation('GetBillingAgreementDetails')
57
59
  .add(opts.update(
58
- 'AmazonBillingAgreementId' => amazon_billing_agreement_id
60
+ 'AmazonBillingAgreementId' => amazon_billing_agreement_id
59
61
  ))
60
62
 
61
63
  run
@@ -128,9 +130,9 @@ module MWS
128
130
  def authorize_on_billing_agreement(amazon_billing_agreement_id, authorization_reference_id, authorization_amount, opts = {})
129
131
  operation('AuthorizeOnBillingAgreement')
130
132
  .add(opts.update(
131
- 'AmazonBillingAgreementId' => amazon_billing_agreement_id,
132
- 'AuthorizationReferenceId' => authorization_reference_id,
133
- 'AuthorizationAmount' => authorization_amount
133
+ 'AmazonBillingAgreementId' => amazon_billing_agreement_id,
134
+ 'AuthorizationReferenceId' => authorization_reference_id,
135
+ 'AuthorizationAmount' => authorization_amount
134
136
  ))
135
137
 
136
138
  run
@@ -148,7 +150,7 @@ module MWS
148
150
  def close_billing_agreement(amazon_billing_agreement_id, opts = {})
149
151
  operation('CloseBillingAgreement')
150
152
  .add(opts.update(
151
- 'AmazonBillingAgreementId' => amazon_billing_agreement_id
153
+ 'AmazonBillingAgreementId' => amazon_billing_agreement_id
152
154
  ))
153
155
 
154
156
  run
@@ -248,9 +250,9 @@ module MWS
248
250
  def authorize(amazon_order_reference_id, authorization_reference_id, authorization_amount, opts = {})
249
251
  operation('Authorize')
250
252
  .add(opts.update(
251
- 'AmazonOrderReferenceId' => amazon_order_reference_id,
252
- 'AuthorizationReferenceId' => authorization_reference_id,
253
- 'AuthorizationAmount' => authorization_amount
253
+ 'AmazonOrderReferenceId' => amazon_order_reference_id,
254
+ 'AuthorizationReferenceId' => authorization_reference_id,
255
+ 'AuthorizationAmount' => authorization_amount
254
256
  ))
255
257
 
256
258
  run
@@ -282,9 +284,9 @@ module MWS
282
284
  def capture(amazon_authorization_id, capture_reference_id, capture_amount, opts = {})
283
285
  operation('Capture')
284
286
  .add(opts.update(
285
- 'AmazonAuthorizationId' => amazon_authorization_id,
286
- 'CaptureReferenceId' => capture_reference_id,
287
- 'CaptureAmount' => capture_amount
287
+ 'AmazonAuthorizationId' => amazon_authorization_id,
288
+ 'CaptureReferenceId' => capture_reference_id,
289
+ 'CaptureAmount' => capture_amount
288
290
  ))
289
291
 
290
292
  run
@@ -330,9 +332,9 @@ module MWS
330
332
  def refund(amazon_capture_id, refund_reference_id, refund_amount, opts = {})
331
333
  operation('Refund')
332
334
  .add(opts.update(
333
- 'AmazonCaptureId' => amazon_capture_id,
334
- 'RefundReferenceId' => refund_reference_id,
335
- 'RefundAmount' => refund_amount
335
+ 'AmazonCaptureId' => amazon_capture_id,
336
+ 'RefundReferenceId' => refund_reference_id,
337
+ 'RefundAmount' => refund_amount
336
338
  ))
337
339
 
338
340
  run
@@ -25,8 +25,9 @@ module MWS
25
25
  # @option opts [String] :max_results_per_page
26
26
  # @option opts [String] :tfm_shipment_status
27
27
  # @return [Peddler::XMLParser]
28
+ # rubocop:disable MethodLength
28
29
  def list_orders(opts = {})
29
- opts[:marketplace_id] ||= marketplace_id
30
+ opts[:marketplace_id] ||= primary_marketplace_id
30
31
  if opts.key?(:tfm_shipment_status)
31
32
  opts['TFMShipmentStatus'] = opts.delete(:tfm_shipment_status)
32
33
  end
@@ -13,7 +13,7 @@ module MWS
13
13
  # Lists products and their attributes, based on a search query
14
14
  #
15
15
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_ListMatchingProducts.html
16
- # @overload list_matching_products(query, opts = { marketplace_id: marketplace_id })
16
+ # @overload list_matching_products(query, opts = { marketplace_id: primary_marketplace_id })
17
17
  # @param query [String]
18
18
  # @param opts [Hash]
19
19
  # @option opts [String] :marketplace_id
@@ -30,7 +30,7 @@ module MWS
30
30
  # SellerSKU, UPC, EAN, ISBN, and JAN values
31
31
  #
32
32
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetMatchingProduct.html
33
- # @overload get_matching_product_for_id(id_type, *id_list, opts = { marketplace_id: marketplace_id })
33
+ # @overload get_matching_product_for_id(id_type, *id_list, opts = { marketplace_id: primary_marketplace_id })
34
34
  # @param id_type [String]
35
35
  # @param id_list [Array<String>]
36
36
  # @param opts [Hash]
@@ -49,7 +49,7 @@ module MWS
49
49
  # Lists products and their attributes, based on a list of ASIN values
50
50
  #
51
51
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetMatchingProductForId.html
52
- # @overload get_matching_product(*asin_list, opts = { marketplace_id: marketplace_id })
52
+ # @overload get_matching_product(*asin_list, opts = { marketplace_id: primary_marketplace_id })
53
53
  # @param asin_list [Array<String>]
54
54
  # @param opts [Hash]
55
55
  # @option opts [String] :marketplace_id
@@ -67,7 +67,7 @@ module MWS
67
67
  # Gets the current competitive price of a product, based on Seller SKU
68
68
  #
69
69
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetCompetitivePricingForSKU.html
70
- # @overload get_competitive_pricing_for_sku(*seller_sku_list, opts = { marketplace_id: marketplace_id })
70
+ # @overload get_competitive_pricing_for_sku(*seller_sku_list, opts = { marketplace_id: primary_marketplace_id })
71
71
  # @param seller_sku_list [Array<String>]
72
72
  # @param opts [Hash]
73
73
  # @option opts [String] :marketplace_id
@@ -85,7 +85,7 @@ module MWS
85
85
  # Gets the current competitive price of a product, identified by its ASIN
86
86
  #
87
87
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetCompetitivePricingForASIN.html
88
- # @overload get_competitive_pricing_for_asin(*asin_list, opts = { marketplace_id: marketplace_id })
88
+ # @overload get_competitive_pricing_for_asin(*asin_list, opts = { marketplace_id: primary_marketplace_id })
89
89
  # @param asin_list [Array<String>]
90
90
  # @param opts [Hash]
91
91
  # @option opts [String] :marketplace_id
@@ -104,7 +104,7 @@ module MWS
104
104
  # a product, based on Seller SKU
105
105
  #
106
106
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetLowestOfferListingsForSKU.html
107
- # @overload get_lowest_offer_listings_for_sku(*seller_sku_list, opts = { marketplace_id: marketplace_id })
107
+ # @overload get_lowest_offer_listings_for_sku(*seller_sku_list, opts = { marketplace_id: primary_marketplace_id })
108
108
  # @param seller_sku_list [Array<String>]
109
109
  # @param opts [Hash]
110
110
  # @option opts [String] :marketplace_id
@@ -125,7 +125,7 @@ module MWS
125
125
  # a product, identified by its ASIN
126
126
  #
127
127
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetLowestOfferListingsForASIN.html
128
- # @overload get_lowest_offer_listings_for_asin(*asin_list, opts = { marketplace_id: marketplace_id })
128
+ # @overload get_lowest_offer_listings_for_asin(*asin_list, opts = { marketplace_id: primary_marketplace_id })
129
129
  # @param asin_list [Array<String>]
130
130
  # @param opts [Hash]
131
131
  # @option opts [String] :marketplace_id
@@ -146,7 +146,7 @@ module MWS
146
146
  # Seller SKU
147
147
  #
148
148
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetMyPriceForSKU.html
149
- # @overload get_my_price_for_sku(*seller_sku_list, opts = { marketplace_id: marketplace_id })
149
+ # @overload get_my_price_for_sku(*seller_sku_list, opts = { marketplace_id: primary_marketplace_id })
150
150
  # @param seller_sku_list [Array<String>]
151
151
  # @param opts [Hash]
152
152
  # @option opts [String] :marketplace_id
@@ -166,7 +166,7 @@ module MWS
166
166
  # its ASIN
167
167
  #
168
168
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetMyPriceForASIN.html
169
- # @overload get_my_price_for_asin(*seller_sku_list, opts = { marketplace_id: marketplace_id })
169
+ # @overload get_my_price_for_asin(*seller_sku_list, opts = { marketplace_id: primary_marketplace_id })
170
170
  # @param asin_list [Array<String>]
171
171
  # @param opts [Hash]
172
172
  # @option opts [String] :marketplace_id
@@ -186,7 +186,7 @@ module MWS
186
186
  # Seller`SKU
187
187
  #
188
188
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetProductCategoriesForSKU.html
189
- # @overload get_product_categories_for_sku(sku, opts = { marketplace_id: marketplace_id })
189
+ # @overload get_product_categories_for_sku(sku, opts = { marketplace_id: primary_marketplace_id })
190
190
  # @param seller_sku [String]
191
191
  # @param opts [Hash]
192
192
  # @option opts [String] :marketplace_id
@@ -201,7 +201,7 @@ module MWS
201
201
  # Gets parent product categories that a product belongs to, based on ASIN
202
202
  #
203
203
  # @see http://docs.developer.amazonservices.com/en_US/products/Products_GetProductCategoriesForASIN.html
204
- # @overload get_product_categories_for_asin(asin, opts = { marketplace_id: marketplace_id })
204
+ # @overload get_product_categories_for_asin(asin, opts = { marketplace_id: primary_marketplace_id })
205
205
  # @param asin [String]
206
206
  # @param opts [Hash]
207
207
  # @option opts [String] :marketplace_id
@@ -226,7 +226,7 @@ module MWS
226
226
  def operation_with_marketplace(*args)
227
227
  operation(*args).tap do |opts|
228
228
  unless opts.key?('MarketplaceId')
229
- opts.store('MarketplaceId', marketplace_id)
229
+ opts.store('MarketplaceId', primary_marketplace_id)
230
230
  end
231
231
  end
232
232
  end
@@ -17,7 +17,7 @@ module MWS
17
17
  # @see http://docs.developer.amazonservices.com/en_US/recommendations/Recommendations_GetLastUpdatedTimeForRecommendations.html
18
18
  # @param marketplace_id [String]
19
19
  # @return [Peddler::XMLParser]
20
- def get_last_updated_time_for_recommendations(marketplace_id = marketplace_id())
20
+ def get_last_updated_time_for_recommendations(marketplace_id = primary_marketplace_id)
21
21
  operation('GetLastUpdatedTimeForRecommendations')
22
22
  .add('MarketplaceId' => marketplace_id)
23
23
 
@@ -35,7 +35,7 @@ module MWS
35
35
  # @option opts [Array<Struct, Hash>] :category_query_list
36
36
  # @return [Peddler::XMLParser]
37
37
  def list_recommendations(opts = {})
38
- opts[:marketplace_id] ||= marketplace_id
38
+ opts[:marketplace_id] ||= primary_marketplace_id
39
39
 
40
40
  operation('ListRecommendations')
41
41
  .add(opts)
@@ -188,7 +188,7 @@ module MWS
188
188
  # @see http://docs.developer.amazonservices.com/en_US/reports/Reports_GetReportScheduleListByNextToken.html
189
189
  # @raise [NotImplementedError]
190
190
  def get_report_schedule_list_by_next_token(*)
191
- raise NotImplementedError
191
+ fail NotImplementedError
192
192
  end
193
193
 
194
194
  # Count scheduled reports
@@ -41,6 +41,7 @@ module MWS
41
41
  # Gets the MWS Auth Token of the seller account
42
42
  #
43
43
  # @see http://docs.developer.amazonservices.com/en_US/auth_token/AuthToken_GetAuthToken.html
44
+ # @todo Remove this method after June 30, 2015 as it will no longer be available.
44
45
  # @return [Peddler::XMLParser]
45
46
  def get_auth_token
46
47
  operation('GetAuthToken')
@@ -18,7 +18,7 @@ module MWS
18
18
  # @param sqs_queue_url [String]
19
19
  # @param marketplace_id [String]
20
20
  # @return [Peddler::XMLParser]
21
- def register_destination(sqs_queue_url, marketplace_id = marketplace_id())
21
+ def register_destination(sqs_queue_url, marketplace_id = primary_marketplace_id)
22
22
  operation('RegisterDestination')
23
23
  .add('MarketplaceId' => marketplace_id)
24
24
  .add(build_destination(sqs_queue_url))
@@ -32,7 +32,7 @@ module MWS
32
32
  # @param sqs_queue_url [String]
33
33
  # @param marketplace_id [String]
34
34
  # @return [Peddler::XMLParser]
35
- def deregister_destination(sqs_queue_url, marketplace_id = marketplace_id())
35
+ def deregister_destination(sqs_queue_url, marketplace_id = primary_marketplace_id)
36
36
  operation('DeregisterDestination')
37
37
  .add('MarketplaceId' => marketplace_id)
38
38
  .add(build_destination(sqs_queue_url))
@@ -45,7 +45,7 @@ module MWS
45
45
  # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_ListRegisteredDestinations.html
46
46
  # @param marketplace_id [String]
47
47
  # @return [Peddler::XMLParser]
48
- def list_registered_destinations(marketplace_id = marketplace_id())
48
+ def list_registered_destinations(marketplace_id = primary_marketplace_id)
49
49
  operation('ListRegisteredDestinations')
50
50
  .add('MarketplaceId' => marketplace_id)
51
51
 
@@ -58,7 +58,7 @@ module MWS
58
58
  # @param sqs_queue_url [String]
59
59
  # @param marketplace_id [String]
60
60
  # @return [Peddler::XMLParser]
61
- def send_test_notification_to_destination(sqs_queue_url, marketplace_id = marketplace_id())
61
+ def send_test_notification_to_destination(sqs_queue_url, marketplace_id = primary_marketplace_id)
62
62
  operation('SendTestNotificationToDestination')
63
63
  .add('MarketplaceId' => marketplace_id)
64
64
  .add(build_destination(sqs_queue_url))
@@ -73,7 +73,7 @@ module MWS
73
73
  # @param sqs_queue_url [String]
74
74
  # @param marketplace_id [String]
75
75
  # @return [Peddler::XMLParser]
76
- def create_subscription(notification_type, sqs_queue_url, marketplace_id = marketplace_id())
76
+ def create_subscription(notification_type, sqs_queue_url, marketplace_id = primary_marketplace_id)
77
77
  operation('CreateSubscription')
78
78
  .add('MarketplaceId' => marketplace_id)
79
79
  .add(build_subscription(notification_type, sqs_queue_url))
@@ -88,7 +88,7 @@ module MWS
88
88
  # @param sqs_queue_url [String]
89
89
  # @param marketplace_id [String]
90
90
  # @return [Peddler::XMLParser]
91
- def get_subscription(notification_type, sqs_queue_url, marketplace_id = marketplace_id())
91
+ def get_subscription(notification_type, sqs_queue_url, marketplace_id = primary_marketplace_id)
92
92
  operation('GetSubscription')
93
93
  .add(
94
94
  'MarketplaceId' => marketplace_id,
@@ -106,7 +106,7 @@ module MWS
106
106
  # @param sqs_queue_url [String]
107
107
  # @param marketplace_id [String]
108
108
  # @return [Peddler::XMLParser]
109
- def delete_subscription(notification_type, sqs_queue_url, marketplace_id = marketplace_id())
109
+ def delete_subscription(notification_type, sqs_queue_url, marketplace_id = primary_marketplace_id)
110
110
  operation('DeleteSubscription')
111
111
  .add(
112
112
  'MarketplaceId' => marketplace_id,
@@ -122,7 +122,7 @@ module MWS
122
122
  # @see http://docs.developer.amazonservices.com/en_US/subscriptions/Subscriptions_ListSubscriptions.html
123
123
  # @param marketplace_id [String]
124
124
  # @return [Peddler::XMLParser]
125
- def list_subscriptions(marketplace_id = marketplace_id())
125
+ def list_subscriptions(marketplace_id = primary_marketplace_id)
126
126
  operation('ListSubscriptions')
127
127
  .add('MarketplaceId' => marketplace_id)
128
128
 
@@ -137,7 +137,7 @@ module MWS
137
137
  # @param enabled [Boolean]
138
138
  # @param marketplace_id [String]
139
139
  # @return [Peddler::XMLParser]
140
- def update_subscription(notification_type, sqs_queue_url, enabled, marketplace_id = marketplace_id())
140
+ def update_subscription(notification_type, sqs_queue_url, enabled, marketplace_id = primary_marketplace_id)
141
141
  operation('UpdateSubscription')
142
142
  .add('MarketplaceId' => marketplace_id)
143
143
  .add(build_subscription(notification_type, sqs_queue_url, enabled))
@@ -2,8 +2,8 @@ require 'peddler/client'
2
2
 
3
3
  module MWS
4
4
  module Webstore
5
- # With the Webstore API section of Amazon MWS, you can get Email Me When
6
- # Available subscription information for items listed on your Amazon
5
+ # With the Webstore API section of Amazon MWS, you can get "Email Me When
6
+ # Available" subscription information for items listed on your Amazon
7
7
  # Webstore. The Webstore API section can help you plan your inventory
8
8
  # replenishment cycle by enabling you to query for items that your customers
9
9
  # subscribed to when they clicked the Email Me When Available button on your
@@ -29,7 +29,7 @@ module MWS
29
29
  # @option opts [Array<String>] :seller_sku_list
30
30
  # @return [Peddler::XMLParser]
31
31
  def list_subscriptions_count(subscription_state, opts = {})
32
- opts[:marketplace_id] ||= marketplace_id
32
+ opts[:marketplace_id] ||= primary_marketplace_id
33
33
  if opts.key?(:seller_sku_list)
34
34
  opts['SellerSKUList'] = opts.delete(:seller_sku_list)
35
35
  end
@@ -65,12 +65,12 @@ module MWS
65
65
  # @option opts [String, #iso8601] :date_range_end
66
66
  # @return [Peddler::XMLParser]
67
67
  def get_subscription_details(seller_sku, subscription_state, date_range_start, opts = {})
68
- opts[:marketplace_id] ||= marketplace_id
68
+ opts[:marketplace_id] ||= primary_marketplace_id
69
69
  operation('GetSubscriptionDetails')
70
70
  .add(opts.update(
71
- 'SellerSKU' => seller_sku,
72
- 'SubscriptionState' => subscription_state,
73
- 'DateRangeStart' => date_range_start
71
+ 'SellerSKU' => seller_sku,
72
+ 'SubscriptionState' => subscription_state,
73
+ 'DateRangeStart' => date_range_start
74
74
  ))
75
75
 
76
76
  run
@@ -8,6 +8,8 @@ module Peddler
8
8
  # An abstract client
9
9
  #
10
10
  # Subclass to implement an MWS API section.
11
+ #
12
+ # rubocop:disable ClassLength
11
13
  class Client
12
14
  extend Forwardable
13
15
  include Jeff
@@ -16,7 +18,7 @@ module Peddler
16
18
  # @return [String]
17
19
  attr_accessor :auth_token
18
20
 
19
- attr_writer :merchant_id, :marketplace_id, :path
21
+ attr_writer :merchant_id, :primary_marketplace_id, :path
20
22
 
21
23
  # @api private
22
24
  attr_writer :version
@@ -44,12 +46,7 @@ module Peddler
44
46
  @parser ||= Parser
45
47
  end
46
48
 
47
- # A custom parser
48
- # @!parse attr_writer :parser
49
- # @return [Object]
50
- def parser=(parser)
51
- @parser = parser
52
- end
49
+ attr_writer :parser
53
50
 
54
51
  # @api private
55
52
  def path(path = nil)
@@ -61,7 +58,7 @@ module Peddler
61
58
  version ? @version = version : @version
62
59
  end
63
60
 
64
- # Sets an error handler
61
+ # Sets an error handler
65
62
  # @yieldparam request [Excon::Request]
66
63
  # @yieldparam response [Excon::Response]
67
64
  def on_error(&blk)
@@ -72,7 +69,7 @@ module Peddler
72
69
 
73
70
  def inherited(base)
74
71
  base.params(params)
75
- base.on_error &@error_handler if @error_handler
72
+ base.on_error(&@error_handler) if @error_handler
76
73
  end
77
74
  end
78
75
 
@@ -94,10 +91,20 @@ module Peddler
94
91
  end
95
92
 
96
93
  # The merchant's Marketplace ID
97
- # @!parse attr_reader :marketplace_id
94
+ # @!parse attr_reader :primary_marketplace_id
98
95
  # @return [String]
96
+ def primary_marketplace_id
97
+ @primary_marketplace_id ||= ENV['MWS_MARKETPLACE_ID']
98
+ end
99
+
100
+ # @deprecated Use {#primary_marketplace_id} instead.
99
101
  def marketplace_id
100
- @marketplace_id ||= ENV['MWS_MARKETPLACE_ID']
102
+ @primary_marketplace_id
103
+ end
104
+
105
+ # @deprecated Use {#primary_marketplace_id=} instead.
106
+ def marketplace_id=(marketplace_id)
107
+ @primary_marketplace_id = marketplace_id
101
108
  end
102
109
 
103
110
  # The merchant's Seller ID
@@ -140,7 +147,7 @@ module Peddler
140
147
  @headers ||= {}
141
148
  end
142
149
 
143
- # Sets an error handler
150
+ # Sets an error handler
144
151
  # @yieldparam request [Excon::Request]
145
152
  # @yieldparam response [Excon::Response]
146
153
  def on_error(&blk)
@@ -158,6 +165,7 @@ module Peddler
158
165
  end
159
166
 
160
167
  # @api private
168
+ # rubocop:disable AbcSize, MethodLength
161
169
  def run
162
170
  opts = defaults.merge(query: operation, headers: headers)
163
171
  opts.store(:body, body) if body
@@ -169,7 +177,8 @@ module Peddler
169
177
  handle_error(e) or raise
170
178
  rescue NoMethodError => e
171
179
  if e.message == "undefined method `new' for #{parser}"
172
- warn "[DEPRECATION] `Parser.parse` is deprecated. Please use `Parser.new` instead."
180
+ warn "[DEPRECATION] `Parser.parse` is deprecated. "\
181
+ "Please use `Parser.new` instead."
173
182
  parser.parse(res, encoding)
174
183
  else
175
184
  raise
@@ -179,7 +188,7 @@ module Peddler
179
188
  private
180
189
 
181
190
  def find_marketplace
182
- Marketplace.new(marketplace_id)
191
+ Marketplace.new(primary_marketplace_id)
183
192
  end
184
193
 
185
194
  def content_type(str)
@@ -41,7 +41,7 @@ module Peddler
41
41
  private
42
42
 
43
43
  def find_host
44
- HOSTS.fetch(id) { fail BadId, %Q("#{id}" is not a valid MarketplaceId) }
44
+ HOSTS.fetch(id) { fail BadId, %("#{id}" is not a valid MarketplaceId) }
45
45
  end
46
46
 
47
47
  def japanese?
@@ -11,8 +11,8 @@ module Peddler
11
11
 
12
12
  def structure!(*list_keys)
13
13
  list_key = list_keys.shift
14
-
15
- if found_key = keys.find { |key| key.end_with?(list_key) }
14
+ found_key = keys.find { |key| key.end_with?(list_key) }
15
+ if found_key
16
16
  builder = StructuredList.new(found_key, *list_keys)
17
17
  vals = delete(found_key)
18
18
  update(builder.build(vals))
@@ -21,6 +21,7 @@ module Peddler
21
21
  self
22
22
  end
23
23
 
24
+ # rubocop:disable AbcSize, MethodLength, PerceivedComplexity
24
25
  def store(key, val)
25
26
  key = camelize(key) if key.is_a?(Symbol)
26
27
 
@@ -8,7 +8,7 @@ module Peddler
8
8
  def build(vals)
9
9
  Array(vals)
10
10
  .each_with_index
11
- .reduce(Hash.new) { |hsh, (v, i)| hsh.merge(compose_key(i + 1) => v) }
11
+ .reduce({}) { |hsh, (v, i)| hsh.merge(compose_key(i + 1) => v) }
12
12
  end
13
13
 
14
14
  private
@@ -1,3 +1,3 @@
1
1
  module Peddler
2
- VERSION = '0.15.0'
2
+ VERSION = '0.16.0'
3
3
  end
data/test/helper.rb CHANGED
@@ -1,5 +1,16 @@
1
+ require 'simplecov'
1
2
  require 'coveralls'
2
- Coveralls.wear!
3
+
4
+ SimpleCov.formatters = [
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+
9
+ SimpleCov.start do
10
+ add_filter '/test/'
11
+ minimum_coverage(99.62)
12
+ end
13
+
3
14
  require 'minitest/autorun'
4
15
  require 'yaml'
5
16
  require 'vcr'
@@ -21,7 +32,7 @@ module Accounts
21
32
 
22
33
  %w(mws.yml mws.yml.example).each do |path|
23
34
  file = File.expand_path("../#{path}", __FILE__)
24
- if File.exists?(file)
35
+ if File.exist?(file)
25
36
  @data = YAML.load_file(file)
26
37
  break
27
38
  end
@@ -70,7 +81,7 @@ VCR.configure do |c|
70
81
 
71
82
  c.default_cassette_options = {
72
83
  match_requests_on: [:host, :path, matcher],
73
- record: !!ENV['RECORD'] ? :new_episodes : :none
84
+ record: !ENV['RECORD'] ? :none : :new_episodes
74
85
  }
75
86
 
76
87
  # So that fixtures do not depend on merchant credentials
@@ -3,7 +3,7 @@ require 'mws/fulfillment_inbound_shipment'
3
3
 
4
4
  class TestFulfillmentInboundShipment < IntegrationTest
5
5
  Address = Struct.new(:name, :address_line_1, :city, :state_or_province_code,
6
- :postal_code, :country_code)
6
+ :postal_code, :country_code)
7
7
  Item = Struct.new(:seller_sku, :quantity)
8
8
 
9
9
  def test_creates_inbound_shipment_plan
@@ -5,7 +5,8 @@ class TestRecommendations < IntegrationTest
5
5
  def test_lists_recommendations
6
6
  clients.each do |client|
7
7
  res = client.list_recommendations
8
- skip unless content = res.parse
8
+ content = res.parse
9
+ skip unless content
9
10
  refute_empty content
10
11
  end
11
12
  end
@@ -9,7 +9,6 @@ class TestSubscriptions < IntegrationTest
9
9
  end
10
10
  end
11
11
 
12
-
13
12
  def test_lists_subscriptions
14
13
  clients.each do |client|
15
14
  res = client.list_subscriptions
data/test/mws.yml.example CHANGED
@@ -1,16 +1,16 @@
1
- - marketplace_id: A2EUQ1WTGCTBG2
1
+ - primary_marketplace_id: A2EUQ1WTGCTBG2
2
2
  aws_access_key_id: AWS_ACCESS_KEY_ID
3
3
  aws_secret_access_key: AWS_SECRET_ACCESS_KEY
4
4
  merchant_id: MERCHANT_ID
5
- - marketplace_id: A1PA6795UKMFR9
5
+ - primary_marketplace_id: A1PA6795UKMFR9
6
6
  aws_access_key_id: AWS_ACCESS_KEY_ID
7
7
  aws_secret_access_key: AWS_SECRET_ACCESS_KEY
8
8
  merchant_id: MERCHANT_ID
9
- - marketplace_id: A1VC38T7YXB528
9
+ - primary_marketplace_id: A1VC38T7YXB528
10
10
  aws_access_key_id: AWS_ACCESS_KEY_ID
11
11
  aws_secret_access_key: AWS_SECRET_ACCESS_KEY
12
12
  merchant_id: MERCHANT_ID
13
- - marketplace_id: ATVPDKIKX0DER
13
+ - primary_marketplace_id: ATVPDKIKX0DER
14
14
  aws_access_key_id: AWS_ACCESS_KEY_ID
15
15
  aws_secret_access_key: AWS_SECRET_ACCESS_KEY
16
16
  merchant_id: MERCHANT_ID
@@ -14,7 +14,7 @@ class TestMWSFeedsClient < MiniTest::Test
14
14
  }
15
15
 
16
16
  @client.stub(:run, nil) do
17
- @client.marketplace_id = 'A1F83G8C2ARO7P'
17
+ @client.primary_marketplace_id = 'A1F83G8C2ARO7P'
18
18
  @client.submit_feed('content', 'type', marketplace_id_list: '1')
19
19
  end
20
20
 
@@ -55,7 +55,7 @@ class TestMWSFulfillmentInboundShipmentClient < MiniTest::Test
55
55
  'ParcelData' => {
56
56
  'PackageList' => [
57
57
  {
58
- 'TrackingId' => '123'
58
+ 'TrackingId' => '123'
59
59
  }
60
60
  ]
61
61
  }
@@ -11,14 +11,16 @@ class TestMWSFulfillmentOutboundShipmentClient < MiniTest::Test
11
11
  'Action' => 'GetFulfillmentPreview',
12
12
  'Address.Foo' => '1',
13
13
  'Items.member.1.Bar' => '2',
14
- 'ShippingSpeedCategories.1' => '3'
14
+ 'ShippingSpeedCategories.1' => '3',
15
+ 'IncludeCODFulfillmentPreview' => true
15
16
  }
16
17
 
17
18
  @client.stub(:run, nil) do
18
19
  @client.get_fulfillment_preview(
19
20
  { 'Foo' => '1' },
20
21
  [{ 'Bar' => '2' }],
21
- shipping_speed_categories: ['3']
22
+ shipping_speed_categories: ['3'],
23
+ include_cod_fulfillment_preview: true
22
24
  )
23
25
  end
24
26
 
@@ -35,6 +37,7 @@ class TestMWSFulfillmentOutboundShipmentClient < MiniTest::Test
35
37
  'ShippingSpeedCategory' => '5',
36
38
  'DestinationAddress.Foo' => '1',
37
39
  'Items.member.1.Bar' => '2',
40
+ 'CODSettings.Foo' => '1',
38
41
  'NotificationEmailList.member.1' => '1'
39
42
  }
40
43
 
@@ -43,6 +46,7 @@ class TestMWSFulfillmentOutboundShipmentClient < MiniTest::Test
43
46
  '1', '2', '3', '4', '5',
44
47
  { 'Foo' => '1' },
45
48
  [{ 'Bar' => '2' }],
49
+ cod_settings: { 'Foo' => '1' },
46
50
  notification_email_list: ['1']
47
51
  )
48
52
  end
@@ -94,6 +98,19 @@ class TestMWSFulfillmentOutboundShipmentClient < MiniTest::Test
94
98
  assert_equal operation, @client.operation
95
99
  end
96
100
 
101
+ def test_lists_all_fulfillment_orders_by_next_token
102
+ operation = {
103
+ 'Action' => 'ListAllFulfillmentOrdersByNextToken',
104
+ 'NextToken' => '1'
105
+ }
106
+
107
+ @client.stub(:run, nil) do
108
+ @client.list_all_fulfillment_orders_by_next_token('1')
109
+ end
110
+
111
+ assert_equal operation, @client.operation
112
+ end
113
+
97
114
  def test_gets_package_tracking_details
98
115
  assert_raises(NotImplementedError) do
99
116
  @client.get_package_tracking_details
@@ -7,7 +7,7 @@ class TestMWSOffAmazonPaymentsClient < MiniTest::Test
7
7
  end
8
8
 
9
9
  def test_sandboxes
10
- @client.marketplace_id = 'A1F83G8C2ARO7P'
10
+ @client.primary_marketplace_id = 'A1F83G8C2ARO7P'
11
11
  refute_includes @client.aws_endpoint, 'Sandbox'
12
12
  assert_includes @client.sandbox.aws_endpoint, 'Sandbox'
13
13
  end
@@ -188,6 +188,19 @@ class TestMWSOffAmazonPaymentsClient < MiniTest::Test
188
188
  assert_equal operation, @client.operation
189
189
  end
190
190
 
191
+ def test_gets_authorization_details
192
+ operation = {
193
+ 'Action' => 'GetAuthorizationDetails',
194
+ 'AmazonAuthorizationId' => '1'
195
+ }
196
+
197
+ @client.stub(:run, nil) do
198
+ @client.get_authorization_details('1')
199
+ end
200
+
201
+ assert_equal operation, @client.operation
202
+ end
203
+
191
204
  def test_captures
192
205
  operation = {
193
206
  'Action' => 'Capture',
@@ -4,7 +4,7 @@ require 'mws/products/client'
4
4
  class TestMWSProductsClient < MiniTest::Test
5
5
  def setup
6
6
  @client = MWS::Products::Client.new
7
- @client.marketplace_id = '123'
7
+ @client.primary_marketplace_id = '123'
8
8
  end
9
9
 
10
10
  def test_lists_matching_products
@@ -26,7 +26,7 @@ class TestMWSRecommendationsClient < MiniTest::Test
26
26
  'MarketplaceId' => '123'
27
27
  }
28
28
 
29
- @client.marketplace_id = '123'
29
+ @client.primary_marketplace_id = '123'
30
30
  @client.stub(:run, nil) do
31
31
  @client.list_recommendations(category_query_list: [{ 'Foo' => '1' }])
32
32
  end
@@ -42,4 +42,16 @@ class TestMWSSellersClient < MiniTest::Test
42
42
 
43
43
  assert_equal operation, @client.operation
44
44
  end
45
+
46
+ def test_gets_auth_token
47
+ operation = {
48
+ 'Action' => 'GetAuthToken'
49
+ }
50
+
51
+ @client.stub(:run, nil) do
52
+ @client.get_auth_token
53
+ end
54
+
55
+ assert_equal operation, @client.operation
56
+ end
45
57
  end
@@ -4,7 +4,7 @@ require 'mws/subscriptions/client'
4
4
  class TestMWSSubscriptionsClient < MiniTest::Test
5
5
  def setup
6
6
  @client = MWS::Subscriptions::Client.new
7
- @client.marketplace_id = '123'
7
+ @client.primary_marketplace_id = '123'
8
8
  end
9
9
 
10
10
  def test_registers_destination
@@ -133,7 +133,7 @@ class TestMWSSubscriptionsClient < MiniTest::Test
133
133
  operation = {
134
134
  'Action' => 'CreateSubscription',
135
135
  'MarketplaceId' => '123',
136
- 'Subscription.IsEnabled'=>true,
136
+ 'Subscription.IsEnabled' => true,
137
137
  'Subscription.NotificationType' => 'foo',
138
138
  'Subscription.Destination.DeliveryChannel' => 'SQS',
139
139
  'Subscription.Destination.AttributeList.member.1.Key' => 'sqsQueueUrl',
@@ -151,7 +151,7 @@ class TestMWSSubscriptionsClient < MiniTest::Test
151
151
  operation = {
152
152
  'Action' => 'CreateSubscription',
153
153
  'MarketplaceId' => '321',
154
- 'Subscription.IsEnabled'=>true,
154
+ 'Subscription.IsEnabled' => true,
155
155
  'Subscription.NotificationType' => 'foo',
156
156
  'Subscription.Destination.DeliveryChannel' => 'SQS',
157
157
  'Subscription.Destination.AttributeList.member.1.Key' => 'sqsQueueUrl',
@@ -7,7 +7,7 @@ class TestMWSWebstoreClient < MiniTest::Test
7
7
  end
8
8
 
9
9
  def test_lists_subscriptions_count
10
- @client.marketplace_id = '123'
10
+ @client.primary_marketplace_id = '123'
11
11
  operation = {
12
12
  'Action' => 'ListSubscriptionsCount',
13
13
  'MarketplaceId' => '123',
@@ -55,7 +55,7 @@ class TestMWSWebstoreClient < MiniTest::Test
55
55
  end
56
56
 
57
57
  def test_get_subscriptions_details
58
- @client.marketplace_id = '123'
58
+ @client.primary_marketplace_id = '123'
59
59
  operation = {
60
60
  'Action' => 'GetSubscriptionDetails',
61
61
  'MarketplaceId' => '123',
@@ -4,7 +4,9 @@ require 'peddler/client'
4
4
 
5
5
  class TestPeddlerClient < MiniTest::Test
6
6
  module Parser
7
- def self.new(res, *); res; end
7
+ def self.new(res, *)
8
+ res
9
+ end
8
10
  end
9
11
 
10
12
  def setup
@@ -18,7 +20,7 @@ class TestPeddlerClient < MiniTest::Test
18
20
  @client.aws_access_key_id = 'key'
19
21
  @client.aws_secret_access_key = 'secret'
20
22
  @client.merchant_id = 'seller'
21
- @client.marketplace_id = 'ATVPDKIKX0DER' # US
23
+ @client.primary_marketplace_id = 'ATVPDKIKX0DER' # US
22
24
  @client.operation('Foo')
23
25
  end
24
26
 
@@ -44,7 +46,7 @@ class TestPeddlerClient < MiniTest::Test
44
46
  end
45
47
 
46
48
  def test_has_user_agent
47
- assert @client.connection.data[:headers].has_key?('User-Agent')
49
+ assert @client.connection.data[:headers].key?('User-Agent')
48
50
  end
49
51
 
50
52
  def test_inherits_parents_params
@@ -80,7 +82,7 @@ class TestPeddlerClient < MiniTest::Test
80
82
  end
81
83
 
82
84
  def test_sets_content_type_header_for_chinese_flat_file_body
83
- @client.marketplace_id = 'AAHKV2X7AFYLW'
85
+ @client.primary_marketplace_id = 'AAHKV2X7AFYLW'
84
86
  @client.body = 'foo'
85
87
  content_type = @client.headers.fetch('Content-Type')
86
88
 
@@ -88,7 +90,7 @@ class TestPeddlerClient < MiniTest::Test
88
90
  end
89
91
 
90
92
  def test_sets_content_type_header_for_japanese_flat_file_body
91
- @client.marketplace_id = 'A1VC38T7YXB528'
93
+ @client.primary_marketplace_id = 'A1VC38T7YXB528'
92
94
  @client.body = 'foo'
93
95
  content_type = @client.headers.fetch('Content-Type')
94
96
 
@@ -131,11 +133,11 @@ class TestPeddlerClient < MiniTest::Test
131
133
  @client.run
132
134
  headers = instrumentor.events['excon.request'][:headers]
133
135
 
134
- assert headers.has_key?('User-Agent')
136
+ assert headers.key?('User-Agent')
135
137
  end
136
138
 
137
139
  def test_error_callback_on_class
138
- Excon.stub({}, { status: 503 })
140
+ Excon.stub({}, status: 503)
139
141
 
140
142
  assert_raises(Excon::Errors::ServiceUnavailable) do
141
143
  @client.run
@@ -152,7 +154,7 @@ class TestPeddlerClient < MiniTest::Test
152
154
  end
153
155
 
154
156
  def test_error_callback_on_instance
155
- Excon.stub({}, { status: 503 })
157
+ Excon.stub({}, status: 503)
156
158
 
157
159
  assert_raises(Excon::Errors::ServiceUnavailable) do
158
160
  @client.run
@@ -168,7 +170,7 @@ class TestPeddlerClient < MiniTest::Test
168
170
  end
169
171
 
170
172
  def test_error_callback_on_client_ancestor
171
- Excon.stub({}, { status: 503 })
173
+ Excon.stub({}, status: 503)
172
174
 
173
175
  assert_raises(Excon::Errors::ServiceUnavailable) do
174
176
  @client.run
@@ -184,7 +186,7 @@ class TestPeddlerClient < MiniTest::Test
184
186
  client.aws_access_key_id = 'key'
185
187
  client.aws_secret_access_key = 'secret'
186
188
  client.merchant_id = 'seller'
187
- client.marketplace_id = 'ATVPDKIKX0DER' # US
189
+ client.primary_marketplace_id = 'ATVPDKIKX0DER' # US
188
190
  client.operation('Foo')
189
191
  client.run
190
192
 
@@ -194,7 +196,9 @@ class TestPeddlerClient < MiniTest::Test
194
196
 
195
197
  def test_deprecates_call_to_parser_parse
196
198
  deprecated_parser = Module.new do
197
- def self.parse(res, *); res; end
199
+ def self.parse(res, *)
200
+ res
201
+ end
198
202
  end
199
203
  @client.stub :warn, nil do
200
204
  @klass.parser = deprecated_parser
@@ -202,4 +206,25 @@ class TestPeddlerClient < MiniTest::Test
202
206
  assert_equal @body, res.body
203
207
  end
204
208
  end
209
+
210
+ def test_raises_no_method_errors_not_related_to_deprecated_parser
211
+ bad_parser = Module.new do
212
+ def self.new(*)
213
+ fail NoMethodError, "foo"
214
+ end
215
+ end
216
+ @klass.parser = bad_parser
217
+ @client.stub :warn, nil do
218
+ assert_raises NoMethodError do
219
+ @client.run
220
+ end
221
+ end
222
+ end
223
+
224
+ def test_deprecated_marketplace_id_accessor
225
+ refute_nil @client.marketplace_id
226
+ @client.marketplace_id = "123"
227
+ assert_equal "123", @client.marketplace_id
228
+ assert_equal @client.primary_marketplace_id, @client.marketplace_id
229
+ end
205
230
  end
@@ -16,7 +16,7 @@ class TestPeddlerMarketplace < MiniTest::Test
16
16
 
17
17
  def test_guard_against_missing_marketplace_id
18
18
  assert_raises(Peddler::Marketplace::BadId, 'missing MarketplaceId') do
19
- marketplace = Peddler::Marketplace.new(nil)
19
+ Peddler::Marketplace.new(nil)
20
20
  end
21
21
  end
22
22
 
@@ -9,7 +9,7 @@ class TestPeddlerOperation < MiniTest::Test
9
9
  def test_converts_key_to_structured_list
10
10
  @operation.store('FooStatus', [1, 2])
11
11
  @operation.structure!('FooStatus', 'Foo')
12
- refute @operation.has_key?('FooStatus')
12
+ refute @operation.key?('FooStatus')
13
13
  assert_equal 1, @operation['FooStatus.Foo.1']
14
14
  assert_equal 2, @operation['FooStatus.Foo.2']
15
15
  end
@@ -17,20 +17,20 @@ class TestPeddlerOperation < MiniTest::Test
17
17
  def test_converts_nested_key_to_structured_list
18
18
  @operation.store('Foo.Status', [1])
19
19
  @operation.structure!('Status', 'Bar')
20
- refute @operation.has_key?('FooStatus')
20
+ refute @operation.key?('FooStatus')
21
21
  assert_equal 1, @operation['Foo.Status.Bar.1']
22
22
  end
23
23
 
24
24
  def test_store_camelizes_key
25
25
  @operation.store(:foo_bar, 'baz')
26
- assert @operation.has_key?('FooBar')
27
- refute @operation.has_key?(:foo_bar)
26
+ assert @operation.key?('FooBar')
27
+ refute @operation.key?(:foo_bar)
28
28
  end
29
29
 
30
30
  def test_store_upcases_sku
31
31
  @operation.store(:seller_sku, 'baz')
32
- assert @operation.has_key?('SellerSKU')
33
- refute @operation.has_key?(:seller_sku)
32
+ assert @operation.key?('SellerSKU')
33
+ refute @operation.key?(:seller_sku)
34
34
  end
35
35
 
36
36
  def test_store_timestamps_time_values
@@ -42,15 +42,15 @@ class TestPeddlerOperation < MiniTest::Test
42
42
  end
43
43
 
44
44
  def test_stringifies_hash_values
45
- @operation.store('Foo', { bar: 1 })
45
+ @operation.store('Foo', bar: 1)
46
46
  assert_equal 1, @operation.fetch('Foo.Bar')
47
- refute @operation.has_key?('Foo')
47
+ refute @operation.key?('Foo')
48
48
  end
49
49
 
50
50
  def test_stringifies_nested_hash_values
51
- @operation.store('Foo', { bar: { baz: 1 } })
51
+ @operation.store('Foo', bar: { baz: 1 })
52
52
  assert_equal 1, @operation.fetch('Foo.Bar.Baz')
53
- refute @operation.has_key?('Foo')
53
+ refute @operation.key?('Foo')
54
54
  end
55
55
 
56
56
  def test_stringifies_struct_values
@@ -4,7 +4,10 @@ require 'peddler/parser'
4
4
  class TestPeddlerParser < MiniTest::Test
5
5
  def assert_parser(klass, *content_types)
6
6
  content_types.each do |content_type|
7
- res = OpenStruct.new(headers: { 'Content-Type' => content_type }, body: '')
7
+ res = OpenStruct.new(
8
+ headers: { 'Content-Type' => content_type },
9
+ body: ''
10
+ )
8
11
  parser = Peddler::Parser.new(res)
9
12
 
10
13
  assert_kind_of klass, parser
@@ -12,10 +15,14 @@ class TestPeddlerParser < MiniTest::Test
12
15
  end
13
16
 
14
17
  def test_parses_xml
15
- assert_parser Peddler::XMLParser, 'text/xml', 'text/xml; charset=UTF-8'
18
+ assert_parser Peddler::XMLParser,
19
+ 'text/xml',
20
+ 'text/xml; charset=UTF-8'
16
21
  end
17
22
 
18
23
  def test_parses_flat_files
19
- assert_parser Peddler::FlatFileParser, 'text/plain', 'application/octet-stream'
24
+ assert_parser Peddler::FlatFileParser,
25
+ 'text/plain',
26
+ 'application/octet-stream'
20
27
  end
21
28
  end
@@ -3,8 +3,12 @@ require 'peddler/xml_parser'
3
3
 
4
4
  class TestPeddlerXMLParser < MiniTest::Test
5
5
  def setup
6
- body = '<Response><Result><NextToken>123</NextToken><Foo>Bar</Foo></Result></Response>'
7
- res = OpenStruct.new(body: body, headers: { 'Content-Type' => 'text/xml', 'Content-Length' => '78'})
6
+ body = '<Response><Result><NextToken>123</NextToken>'\
7
+ '<Foo>Bar</Foo></Result></Response>'
8
+ res = OpenStruct.new(
9
+ body: body,
10
+ headers: { 'Content-Type' => 'text/xml', 'Content-Length' => '78' }
11
+ )
8
12
 
9
13
  @parser = Peddler::XMLParser.new(res)
10
14
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: peddler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hakan Ensari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-15 00:00:00.000000000 Z
11
+ date: 2015-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jeff
@@ -100,7 +100,6 @@ files:
100
100
  - test/integration/test_sellers.rb
101
101
  - test/integration/test_subscriptions.rb
102
102
  - test/integration/test_webstore.rb
103
- - test/mws.yml.1
104
103
  - test/mws.yml.example
105
104
  - test/unit/mws/test_cart_information_client.rb
106
105
  - test/unit/mws/test_customer_information_client.rb
@@ -178,7 +177,6 @@ test_files:
178
177
  - test/integration/test_sellers.rb
179
178
  - test/integration/test_subscriptions.rb
180
179
  - test/integration/test_webstore.rb
181
- - test/mws.yml.1
182
180
  - test/mws.yml.example
183
181
  - test/unit/mws/test_cart_information_client.rb
184
182
  - test/unit/mws/test_customer_information_client.rb
data/test/mws.yml.1 DELETED
@@ -1,4 +0,0 @@
1
- - marketplace_id: ATVPDKIKX0DER
2
- aws_access_key_id: AKIAJOD3NLXHOMANRNQQ
3
- aws_secret_access_key: 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
4
- merchant_id: A2JYSO6W6KEP83