peddler 0.15.0 → 0.16.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.
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