peddler 2.1.1 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +43 -41
  3. data/lib/mws.rb +2 -1
  4. data/lib/mws/easy_ship.rb +3 -0
  5. data/lib/mws/easy_ship/client.rb +93 -0
  6. data/lib/mws/fulfillment_outbound_shipment/client.rb +1 -1
  7. data/lib/mws/orders/client.rb +6 -6
  8. data/lib/mws/shipment_invoicing.rb +3 -0
  9. data/lib/mws/shipment_invoicing/client.rb +74 -0
  10. data/lib/peddler/client.rb +11 -10
  11. data/lib/peddler/content.rb +2 -2
  12. data/lib/peddler/errors/builder.rb +7 -2
  13. data/lib/peddler/errors/class_generator.rb +1 -1
  14. data/lib/peddler/errors/error.rb +6 -2
  15. data/lib/peddler/errors/parser.rb +1 -1
  16. data/lib/peddler/flat_file_parser.rb +5 -3
  17. data/lib/peddler/marketplace.rb +23 -19
  18. data/lib/peddler/mws.rb +2 -2
  19. data/lib/peddler/operation.rb +17 -11
  20. data/lib/peddler/parser.rb +1 -1
  21. data/lib/peddler/structured_list.rb +1 -1
  22. data/lib/peddler/vcr_matcher.rb +7 -7
  23. data/lib/peddler/version.rb +1 -1
  24. data/lib/peddler/xml_parser.rb +1 -1
  25. data/lib/peddler/xml_response_parser.rb +1 -1
  26. metadata +11 -146
  27. data/lib/mws/off_amazon_payments/client.rb +0 -362
  28. data/test/credentials.rb +0 -23
  29. data/test/helper.rb +0 -15
  30. data/test/integration/internals/test_errors.rb +0 -17
  31. data/test/integration/internals/test_multibyte_queries.rb +0 -17
  32. data/test/integration/internals/test_mws_headers.rb +0 -21
  33. data/test/integration/internals/test_string_encodings.rb +0 -38
  34. data/test/integration/test_feeds.rb +0 -37
  35. data/test/integration/test_fulfillment_inbound_shipment.rb +0 -35
  36. data/test/integration/test_fulfillment_inventory.rb +0 -20
  37. data/test/integration/test_fulfillment_outbound_shipment.rb +0 -13
  38. data/test/integration/test_merchant_fulfillment.rb +0 -69
  39. data/test/integration/test_off_amazon_payments.rb +0 -13
  40. data/test/integration/test_orders.rb +0 -30
  41. data/test/integration/test_products.rb +0 -97
  42. data/test/integration/test_recommendations.rb +0 -20
  43. data/test/integration/test_reports.rb +0 -51
  44. data/test/integration/test_sellers.rb +0 -13
  45. data/test/integration/test_subscriptions.rb +0 -27
  46. data/test/integration_helper.rb +0 -53
  47. data/test/mws.yml +0 -36
  48. data/test/mws.yml.example +0 -32
  49. data/test/null_client.rb +0 -25
  50. data/test/recorder.rb +0 -39
  51. data/test/unit/mws/test_feeds_client.rb +0 -103
  52. data/test/unit/mws/test_finances_client.rb +0 -74
  53. data/test/unit/mws/test_fulfillment_inbound_shipment_client.rb +0 -426
  54. data/test/unit/mws/test_fulfillment_inventory_client.rb +0 -48
  55. data/test/unit/mws/test_fulfillment_outbound_shipment_client.rb +0 -202
  56. data/test/unit/mws/test_merchant_fulfillment_client.rb +0 -109
  57. data/test/unit/mws/test_off_amazon_payments_client.rb +0 -286
  58. data/test/unit/mws/test_orders_client.rb +0 -111
  59. data/test/unit/mws/test_products_client.rb +0 -248
  60. data/test/unit/mws/test_recommendations_client.rb +0 -62
  61. data/test/unit/mws/test_reports_client.rb +0 -209
  62. data/test/unit/mws/test_sellers_client.rb +0 -47
  63. data/test/unit/mws/test_subscriptions_client.rb +0 -182
  64. data/test/unit/peddler/errors/test_builder.rb +0 -65
  65. data/test/unit/peddler/errors/test_class_generator.rb +0 -18
  66. data/test/unit/peddler/errors/test_error.rb +0 -33
  67. data/test/unit/peddler/errors/test_parser.rb +0 -44
  68. data/test/unit/peddler/test_client.rb +0 -203
  69. data/test/unit/peddler/test_flat_file_parser.rb +0 -111
  70. data/test/unit/peddler/test_headers.rb +0 -103
  71. data/test/unit/peddler/test_marketplace.rb +0 -47
  72. data/test/unit/peddler/test_operation.rb +0 -87
  73. data/test/unit/peddler/test_parser.rb +0 -36
  74. data/test/unit/peddler/test_structured_list.rb +0 -39
  75. data/test/unit/peddler/test_vcr_matcher.rb +0 -55
  76. data/test/unit/peddler/test_xml_parser.rb +0 -37
  77. data/test/unit/peddler/test_xml_response_parser.rb +0 -39
  78. data/test/unit/test_mws.rb +0 -11
  79. data/test/vcr_cassettes/CartInformation.yml +0 -433
  80. data/test/vcr_cassettes/CustomerInformation.yml +0 -433
  81. data/test/vcr_cassettes/Errors.yml +0 -444
  82. data/test/vcr_cassettes/Feeds.yml +0 -9957
  83. data/test/vcr_cassettes/FulfillmentInboundShipment.yml +0 -6166
  84. data/test/vcr_cassettes/FulfillmentInventory.yml +0 -850
  85. data/test/vcr_cassettes/FulfillmentOutboundShipment.yml +0 -433
  86. data/test/vcr_cassettes/MWSHeaders.yml +0 -2964
  87. data/test/vcr_cassettes/MerchantFulfillment.yml +0 -753
  88. data/test/vcr_cassettes/MultibyteQueries.yml +0 -437
  89. data/test/vcr_cassettes/OffAmazonPayments.yml +0 -433
  90. data/test/vcr_cassettes/Orders.yml +0 -4740
  91. data/test/vcr_cassettes/PeddlerVCRMatcher.yml +0 -41
  92. data/test/vcr_cassettes/Products.yml +0 -7139
  93. data/test/vcr_cassettes/Recommendations.yml +0 -3145
  94. data/test/vcr_cassettes/Reports.yml +0 -5549
  95. data/test/vcr_cassettes/Sellers.yml +0 -433
  96. data/test/vcr_cassettes/Subscriptions.yml +0 -1529
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'integration_helper'
4
- require 'mws/subscriptions'
5
-
6
- class TestSubscriptions < IntegrationTest
7
- def test_listing_registered_destinations
8
- clients.each do |client|
9
- res = client.list_registered_destinations(client.marketplace.id)
10
- refute_empty res.parse
11
- end
12
- end
13
-
14
- def test_listing_subscriptions
15
- clients.each do |client|
16
- res = client.list_subscriptions(client.marketplace.id)
17
- refute_empty res.parse
18
- end
19
- end
20
-
21
- def test_getting_service_status
22
- clients.each do |client|
23
- res = client.get_service_status
24
- refute_empty res.parse
25
- end
26
- end
27
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'credentials'
4
- require 'helper'
5
- require 'recorder'
6
-
7
- class IntegrationTest < MiniTest::Test
8
- include Recorder
9
-
10
- class << self
11
- def use(endpoint)
12
- @current_endpoint = endpoint
13
- end
14
-
15
- def clients
16
- klass = MWS.const_get("#{current_endpoint}::Client")
17
- ::Credentials.to_a.shuffle.each_with_object([]) do |credentials, memo|
18
- client = klass.new(credentials)
19
- country_code = client.marketplace.country_code
20
- memo.define_singleton_method(country_code.downcase) { client }
21
- memo << client
22
- end
23
- end
24
-
25
- private
26
-
27
- def current_endpoint
28
- @current_endpoint ||= name.sub('Test', '')
29
- end
30
- end
31
-
32
- def clients
33
- self.class.clients
34
- end
35
- end
36
-
37
- ::Peddler::VCRMatcher.ignore_seller!
38
-
39
- VCR.configure do |c|
40
- c.before_record do |interaction|
41
- %w[
42
- BuyerName BuyerEmail Name AddressLine1 City StateOrProvinceCode PostalCode
43
- Phone Amount AmazonOrderId SellerOrderId
44
- ].each do |key|
45
- interaction.response.body.gsub!(/<#{key}>[^<]+</, "<#{key}>FILTERED<")
46
- end
47
- end
48
-
49
- Credentials.each do |record|
50
- c.filter_sensitive_data('MERCHANT_ID') { record['merchant_id'] }
51
- c.filter_sensitive_data('AWS_ACCESS_KEY_ID') { record['aws_access_key_id'] }
52
- end
53
- end
@@ -1,36 +0,0 @@
1
- - marketplace: CA
2
- merchant_id: A2A7WNXBU01UJW
3
- aws_access_key_id: AKIAILJW7BWJ6YBK4JUQ
4
- aws_secret_access_key: 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
5
- - marketplace: ES
6
- merchant_id: A2NEU7G6RGUKF
7
- aws_access_key_id: AKIAJAMAR367FRSYNOPA
8
- aws_secret_access_key: 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
9
- - marketplace: MX
10
- merchant_id: A1PCFAUFK3U94S
11
- aws_access_key_id: AKIAIHE4A3HDKICFHP4A
12
- aws_secret_access_key: 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
13
- - marketplace: JP
14
- merchant_id: A7BU5WGNVGQ1I
15
- aws_access_key_id: AKIAJZ6EOLNDLSOEOLBA
16
- aws_secret_access_key: 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
17
- - marketplace: IT
18
- merchant_id: A2APQUVDBVWV7E
19
- aws_access_key_id: AKIAIHE4YSF4UF7CDR6Q
20
- aws_secret_access_key: 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
21
- - marketplace: FR
22
- merchant_id: A2DP6GIDYN6OTH
23
- aws_access_key_id: AKIAIOYKJRT4WIH3P72A
24
- aws_secret_access_key: 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
25
- - marketplace: US
26
- merchant_id: A2H6NH4SQYFZ4M
27
- aws_access_key_id: AKIAJ25X7BKNXKVCYJXA
28
- aws_secret_access_key: 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
29
- - marketplace: GB
30
- merchant_id: A2D9DZ30GEWP6N
31
- aws_access_key_id: AKIAJCJNB4MASX5JUMUA
32
- aws_secret_access_key: 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
33
- - marketplace: DE
34
- merchant_id: A7ZXDJZD3UIRG
35
- aws_access_key_id: AKIAIORT7554FEBW7UBQ
36
- aws_secret_access_key: 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
@@ -1,32 +0,0 @@
1
- - marketplace: US
2
- aws_access_key_id: AWS_ACCESS_KEY_ID
3
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
4
- merchant_id: MERCHANT_ID
5
- - marketplace: GB
6
- aws_access_key_id: AWS_ACCESS_KEY_ID
7
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
8
- merchant_id: MERCHANT_ID
9
- - marketplace: DE
10
- aws_access_key_id: AWS_ACCESS_KEY_ID
11
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
12
- merchant_id: MERCHANT_ID
13
- - marketplace: CA
14
- aws_access_key_id: AWS_ACCESS_KEY_ID
15
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
16
- merchant_id: MERCHANT_ID
17
- - marketplace: FR
18
- aws_access_key_id: AWS_ACCESS_KEY_ID
19
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
20
- merchant_id: MERCHANT_ID
21
- - marketplace: JP
22
- aws_access_key_id: AWS_ACCESS_KEY_ID
23
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
24
- merchant_id: MERCHANT_ID
25
- - marketplace: ES
26
- aws_access_key_id: AWS_ACCESS_KEY_ID
27
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
28
- merchant_id: MERCHANT_ID
29
- - marketplace: IT
30
- aws_access_key_id: AWS_ACCESS_KEY_ID
31
- aws_secret_access_key: AWS_SECRET_ACCESS_KEY
32
- merchant_id: MERCHANT_ID
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'peddler/client'
4
- require 'securerandom'
5
-
6
- module Null
7
- module Parser
8
- def self.new(res, *)
9
- res
10
- end
11
- end
12
-
13
- class Client < ::Peddler::Client
14
- self.path = '/'
15
-
16
- def configure_with_mock_data!
17
- self.aws_access_key_id = SecureRandom.hex
18
- self.aws_secret_access_key = SecureRandom.hex
19
- self.merchant_id = SecureRandom.hex
20
- self.marketplace = 'US'
21
- end
22
-
23
- self.parser = Parser
24
- end
25
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'peddler/vcr_matcher'
4
- require 'yaml'
5
- require 'vcr'
6
-
7
- # So we can continue testing against old Content-MD5 header
8
- ::Peddler::VCRMatcher.ignored_params << 'ContentMD5Value'
9
-
10
- VCR.configure do |c|
11
- c.hook_into :excon
12
- c.cassette_library_dir = 'test/vcr_cassettes'
13
-
14
- c.default_cassette_options = {
15
- match_requests_on: [::Peddler::VCRMatcher],
16
- record: ENV['RECORD'] ? :new_episodes : :none
17
- }
18
-
19
- # c.before_record do |interaction|
20
- # code = interaction.response.status.code
21
- # interaction.ignore! if code >= 400 && code != 414
22
- # end
23
- end
24
-
25
- module Recorder
26
- def setup
27
- ENV['LIVE'] ? VCR.turn_off! : VCR.insert_cassette(test_name)
28
- end
29
-
30
- def teardown
31
- VCR.eject_cassette if VCR.turned_on?
32
- end
33
-
34
- private
35
-
36
- def test_name
37
- self.class.name.sub('Test', '')
38
- end
39
- end
@@ -1,103 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
- require 'mws/feeds/client'
5
-
6
- class TestMWSFeedsClient < MiniTest::Test
7
- def setup
8
- @client = MWS::Feeds::Client.new(marketplace: 'GB')
9
- end
10
-
11
- def test_submitting_feed
12
- operation = {
13
- 'Action' => 'SubmitFeed',
14
- 'FeedType' => 'type',
15
- 'MarketplaceIdList.Id.1' => '1'
16
- }
17
-
18
- @client.stub(:run, nil) do
19
- @client.submit_feed('content', 'type', marketplace_id_list: '1')
20
- end
21
-
22
- assert_equal operation, @client.operation
23
- end
24
-
25
- def test_getting_feed_submission_list
26
- operation = {
27
- 'Action' => 'GetFeedSubmissionList',
28
- 'FeedSubmissionIdList.Id.1' => '1',
29
- 'FeedTypeList.Type.1' => '2',
30
- 'FeedProcessingStatusList.Status.1' => '3'
31
- }
32
-
33
- @client.stub(:run, nil) do
34
- @client.get_feed_submission_list(
35
- feed_submission_id_list: '1',
36
- feed_type_list: '2',
37
- feed_processing_status_list: '3'
38
- )
39
- end
40
-
41
- assert_equal operation, @client.operation
42
- end
43
-
44
- def test_getting_feed_submission_list_by_next_token
45
- operation = {
46
- 'Action' => 'GetFeedSubmissionListByNextToken',
47
- 'NextToken' => '1'
48
- }
49
-
50
- @client.stub(:run, nil) do
51
- @client.get_feed_submission_list_by_next_token('1')
52
- end
53
-
54
- assert_equal operation, @client.operation
55
- end
56
-
57
- def test_getting_feed_submission_count
58
- operation = {
59
- 'Action' => 'GetFeedSubmissionCount',
60
- 'FeedTypeList.Type.1' => '1',
61
- 'FeedProcessingStatusList.Status.1' => '2'
62
- }
63
-
64
- @client.stub(:run, nil) do
65
- @client.get_feed_submission_count(
66
- feed_type_list: '1',
67
- feed_processing_status_list: '2'
68
- )
69
- end
70
-
71
- assert_equal operation, @client.operation
72
- end
73
-
74
- def test_canceling_feed_submissions
75
- operation = {
76
- 'Action' => 'CancelFeedSubmissions',
77
- 'FeedTypeList.Type.1' => '1',
78
- 'FeedSubmissionIdList.Id.1' => '2'
79
- }
80
-
81
- @client.stub(:run, nil) do
82
- @client.cancel_feed_submissions(
83
- feed_type_list: '1',
84
- feed_submission_id_list: '2'
85
- )
86
- end
87
-
88
- assert_equal operation, @client.operation
89
- end
90
-
91
- def test_getting_feed_submission_result
92
- operation = {
93
- 'Action' => 'GetFeedSubmissionResult',
94
- 'FeedSubmissionId' => '1'
95
- }
96
-
97
- @client.stub(:run, nil) do
98
- @client.get_feed_submission_result('1')
99
- end
100
-
101
- assert_equal operation, @client.operation
102
- end
103
- end
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
- require 'mws/finances/client'
5
-
6
- class TestMWSFinancesClient < MiniTest::Test
7
- def setup
8
- @client = MWS::Finances::Client.new
9
- end
10
-
11
- def test_listing_financial_event_groups
12
- operation = {
13
- 'Action' => 'ListFinancialEventGroups',
14
- 'FinancialEventGroupStartedAfter' => '2015-01-01'
15
- }
16
-
17
- @client.stub(:run, nil) do
18
- @client.list_financial_event_groups('2015-01-01')
19
- end
20
-
21
- assert_equal operation, @client.operation
22
- end
23
-
24
- def test_listing_financial_event_groups_by_next_token
25
- operation = {
26
- 'Action' => 'ListFinancialEventGroupsByNextToken',
27
- 'NextToken' => '1'
28
- }
29
-
30
- @client.stub(:run, nil) do
31
- @client.list_financial_event_groups_by_next_token('1')
32
- end
33
-
34
- assert_equal operation, @client.operation
35
- end
36
-
37
- def test_listing_financial_events
38
- operation = {
39
- 'Action' => 'ListFinancialEvents',
40
- 'AmazonOrderId' => '123'
41
- }
42
-
43
- @client.stub(:run, nil) do
44
- @client.list_financial_events(amazon_order_id: '123')
45
- end
46
-
47
- assert_equal operation, @client.operation
48
- end
49
-
50
- def test_listing_financial_events_by_next_token
51
- operation = {
52
- 'Action' => 'ListFinancialEventsByNextToken',
53
- 'NextToken' => '1'
54
- }
55
-
56
- @client.stub(:run, nil) do
57
- @client.list_financial_events_by_next_token('1')
58
- end
59
-
60
- assert_equal operation, @client.operation
61
- end
62
-
63
- def test_getting_service_status
64
- operation = {
65
- 'Action' => 'GetServiceStatus'
66
- }
67
-
68
- @client.stub(:run, nil) do
69
- @client.get_service_status
70
- end
71
-
72
- assert_equal operation, @client.operation
73
- end
74
- end
@@ -1,426 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
- require 'mws/fulfillment_inbound_shipment/client'
5
-
6
- class TestMWSFulfillmentInboundShipmentClient < MiniTest::Test
7
- def setup
8
- @client = MWS::FulfillmentInboundShipment::Client.new
9
- end
10
-
11
- def test_getting_inbound_guidance_for_sku
12
- operation = {
13
- 'Action' => 'GetInboundGuidanceForSKU',
14
- 'MarketplaceId' => 'ATVPDKIKX0DER',
15
- 'SellerSKUList.Id.1' => 'us001'
16
- }
17
-
18
- @client.stub(:run, nil) do
19
- @client.get_inbound_guidance_for_sku('ATVPDKIKX0DER', 'us001')
20
- end
21
-
22
- assert_equal operation, @client.operation
23
- end
24
-
25
- def test_getting_inbound_guidance_for_asin
26
- operation = {
27
- 'Action' => 'GetInboundGuidanceForASIN',
28
- 'MarketplaceId' => 'ATVPDKIKX0DER',
29
- 'ASINList.Id.1' => 'B00005N5PF'
30
- }
31
-
32
- @client.stub(:run, nil) do
33
- @client.get_inbound_guidance_for_asin('ATVPDKIKX0DER', 'B00005N5PF')
34
- end
35
-
36
- assert_equal operation, @client.operation
37
- end
38
-
39
- def test_creating_inbound_shipment_plan
40
- operation = {
41
- 'Action' => 'CreateInboundShipmentPlan',
42
- 'LabelPrepPreference' => 'SELLER_LABEL',
43
- 'ShipFromAddress.Name' => 'test1',
44
- 'ShipFromAddress.City' => 'Seattle',
45
- 'ShipFromAddress.CountryCode' => 'US',
46
- 'InboundShipmentPlanRequestItems.member.1.SellerSKU' => 'SKU00001',
47
- 'InboundShipmentPlanRequestItems.member.1.Quantity' => '1',
48
- 'InboundShipmentPlanRequestItems.member.1.PrepDetailsList.member.1.PrepInstruction' => 'Taping',
49
- 'InboundShipmentPlanRequestItems.member.1.PrepDetailsList.member.1.PrepOwner' => 'AMAZON',
50
- 'InboundShipmentPlanRequestItems.member.1.PrepDetailsList.member.2.PrepInstruction' => 'BubbleWrapping',
51
- 'InboundShipmentPlanRequestItems.member.1.PrepDetailsList.member.2.PrepOwner' => 'AMAZON',
52
- 'InboundShipmentPlanRequestItems.member.2.SellerSKU' => 'SKU00002',
53
- 'InboundShipmentPlanRequestItems.member.2.Quantity' => '1',
54
- 'InboundShipmentPlanRequestItems.member.2.PrepDetailsList.member.1.PrepInstruction' => 'Taping',
55
- 'InboundShipmentPlanRequestItems.member.2.PrepDetailsList.member.1.PrepOwner' => 'AMAZON',
56
- 'InboundShipmentPlanRequestItems.member.2.PrepDetailsList.member.2.PrepInstruction' => 'BubbleWrapping',
57
- 'InboundShipmentPlanRequestItems.member.2.PrepDetailsList.member.2.PrepOwner' => 'AMAZON'
58
- }
59
-
60
- @client.stub(:run, nil) do
61
- address = {
62
- 'Name' => 'test1',
63
- 'City' => 'Seattle',
64
- 'CountryCode' => 'US'
65
- }
66
- request_items = [
67
- {
68
- 'SellerSKU' => 'SKU00001',
69
- 'Quantity' => '1',
70
- 'PrepDetailsList' => [
71
- { 'PrepInstruction' => 'Taping', 'PrepOwner' => 'AMAZON' },
72
- { 'PrepInstruction' => 'BubbleWrapping', 'PrepOwner' => 'AMAZON' }
73
- ]
74
- }, {
75
- 'SellerSKU' => 'SKU00002',
76
- 'Quantity' => '1',
77
- 'PrepDetailsList' => [
78
- { 'PrepInstruction' => 'Taping', 'PrepOwner' => 'AMAZON' },
79
- { 'PrepInstruction' => 'BubbleWrapping', 'PrepOwner' => 'AMAZON' }
80
- ]
81
- }
82
- ]
83
- @client.create_inbound_shipment_plan(address, request_items,
84
- label_prep_preference: 'SELLER_LABEL')
85
- end
86
-
87
- assert_equal operation, @client.operation
88
- end
89
-
90
- def test_creating_inbound_shipment
91
- operation = {
92
- 'Action' => 'CreateInboundShipment',
93
- 'ShipmentId' => '1',
94
- 'InboundShipmentHeader.Foo' => '1',
95
- 'InboundShipmentItems.member.1.Bar' => '2'
96
- }
97
-
98
- @client.stub(:run, nil) do
99
- @client.create_inbound_shipment('1', { 'Foo' => '1' }, [{ 'Bar' => '2' }])
100
- end
101
-
102
- assert_equal operation, @client.operation
103
- end
104
-
105
- def test_updating_inbound_shipment
106
- operation = {
107
- 'Action' => 'UpdateInboundShipment',
108
- 'ShipmentId' => '1',
109
- 'InboundShipmentHeader.Foo' => '1',
110
- 'InboundShipmentItems.member.1.Bar' => '2'
111
- }
112
-
113
- @client.stub(:run, nil) do
114
- @client.update_inbound_shipment('1', { 'Foo' => '1' }, [{ 'Bar' => '2' }])
115
- end
116
-
117
- assert_equal operation, @client.operation
118
- end
119
-
120
- def test_getting_preorder_info
121
- operation = {
122
- 'Action' => 'GetPreorderInfo',
123
- 'ShipmentId' => '1'
124
- }
125
-
126
- @client.stub(:run, nil) do
127
- @client.get_preorder_info('1')
128
- end
129
-
130
- assert_equal operation, @client.operation
131
- end
132
-
133
- def test_confirming_preorder
134
- operation = {
135
- 'Action' => 'ConfirmPreorder',
136
- 'ShipmentId' => '1',
137
- 'NeedByDate' => '2015-12-27'
138
- }
139
-
140
- @client.stub(:run, nil) do
141
- @client.confirm_preorder('1', Date.new(2015, 12, 27))
142
- end
143
-
144
- assert_equal operation, @client.operation
145
- end
146
-
147
- def test_getting_prep_instructions_for_sku
148
- operation = {
149
- 'Action' => 'GetPrepInstructionsForSKU',
150
- 'ShipToCountryCode' => 'US',
151
- 'SellerSKUList.Id.1' => 'ca_001'
152
- }
153
-
154
- @client.stub(:run, nil) do
155
- @client.get_prep_instructions_for_sku('US', 'ca_001')
156
- end
157
-
158
- assert_equal operation, @client.operation
159
- end
160
-
161
- def test_getting_prep_instructions_for_asin
162
- operation = {
163
- 'Action' => 'GetPrepInstructionsForASIN',
164
- 'ShipToCountryCode' => 'US',
165
- 'ASINList.Id.1' => 'B00005N5PF',
166
- 'ASINList.Id.2' => 'B0INVALIDF'
167
- }
168
-
169
- @client.stub(:run, nil) do
170
- @client.get_prep_instructions_for_asin('US', 'B00005N5PF', 'B0INVALIDF')
171
- end
172
-
173
- assert_equal operation, @client.operation
174
- end
175
-
176
- def test_handling_bug_when_getting_prep_instructions_for_asin
177
- first_run = true
178
- callable = lambda {
179
- if first_run
180
- first_run = false
181
- raise Peddler::Errors::Error, "Value null at 'asinList'"
182
- end
183
- }
184
- @client.stub(:run, callable) do
185
- @client.get_prep_instructions_for_asin('US', 'B00005N5PF')
186
- end
187
-
188
- refute @client.operation.key?('ASINList.Id.1')
189
- assert @client.operation.key?('AsinList.Id.1')
190
- end
191
-
192
- def test_putting_transport_content_with_package_list
193
- transport_details = {
194
- parcel_data: {
195
- package_list: [
196
- {
197
- tracking_id: '123'
198
- }
199
- ]
200
- }
201
- }
202
-
203
- operation = {
204
- 'Action' => 'PutTransportContent',
205
- 'ShipmentId' => '1',
206
- 'IsPartnered' => true,
207
- 'ShipmentType' => 'Foo',
208
- 'TransportDetails.ParcelData.PackageList.member.1.TrackingId' => '123'
209
- }
210
-
211
- @client.stub(:run, nil) do
212
- @client.put_transport_content('1', true, 'Foo', transport_details)
213
- end
214
-
215
- assert_equal operation, @client.operation
216
- end
217
-
218
- def test_putting_transport_content_with_pallet_list
219
- transport_details = {
220
- parcel_data: {
221
- pallet_list: [
222
- {
223
- tracking_id: '123'
224
- }
225
- ]
226
- }
227
- }
228
-
229
- operation = {
230
- 'Action' => 'PutTransportContent',
231
- 'ShipmentId' => '1',
232
- 'IsPartnered' => true,
233
- 'ShipmentType' => 'Foo',
234
- 'TransportDetails.ParcelData.PalletList.member.1.TrackingId' => '123'
235
- }
236
-
237
- @client.stub(:run, nil) do
238
- @client.put_transport_content('1', true, 'Foo', transport_details)
239
- end
240
-
241
- assert_equal operation, @client.operation
242
- end
243
-
244
- def test_estimating_transport_request
245
- operation = {
246
- 'Action' => 'EstimateTransportRequest',
247
- 'ShipmentId' => '1'
248
- }
249
-
250
- @client.stub(:run, nil) do
251
- @client.estimate_transport_request('1')
252
- end
253
-
254
- assert_equal operation, @client.operation
255
- end
256
-
257
- def test_getting_transport_request
258
- operation = {
259
- 'Action' => 'GetTransportContent',
260
- 'ShipmentId' => '1'
261
- }
262
-
263
- @client.stub(:run, nil) do
264
- @client.get_transport_content('1')
265
- end
266
-
267
- assert_equal operation, @client.operation
268
- end
269
-
270
- def test_confirming_transport_request
271
- operation = {
272
- 'Action' => 'ConfirmTransportRequest',
273
- 'ShipmentId' => '1'
274
- }
275
-
276
- @client.stub(:run, nil) do
277
- @client.confirm_transport_request('1')
278
- end
279
-
280
- assert_equal operation, @client.operation
281
- end
282
-
283
- def test_voiding_transport_request
284
- operation = {
285
- 'Action' => 'VoidTransportRequest',
286
- 'ShipmentId' => '1'
287
- }
288
-
289
- @client.stub(:run, nil) do
290
- @client.void_transport_request('1')
291
- end
292
-
293
- assert_equal operation, @client.operation
294
- end
295
-
296
- def test_getting_package_labels
297
- operation = {
298
- 'Action' => 'GetPackageLabels',
299
- 'ShipmentId' => '1',
300
- 'PageType' => '2'
301
- }
302
-
303
- @client.stub(:run, nil) do
304
- @client.get_package_labels('1', '2')
305
- end
306
-
307
- assert_equal operation, @client.operation
308
- end
309
-
310
- def test_getting_unique_package_labels
311
- operation = {
312
- 'Action' => 'GetUniquePackageLabels',
313
- 'ShipmentId' => 'FBAQFGQZ',
314
- 'PageType' => 'PackageLabel_Letter_6',
315
- 'PackageLabelsToPrint.member.1' => 'CartonA',
316
- 'PackageLabelsToPrint.member.2' => 'CartonB',
317
- 'PackageLabelsToPrint.member.3' => 'CartonC',
318
- 'PackageLabelsToPrint.member.4' => 'CartonD'
319
- }
320
-
321
- @client.stub(:run, nil) do
322
- @client.get_unique_package_labels(
323
- 'FBAQFGQZ',
324
- 'PackageLabel_Letter_6',
325
- %w[CartonA CartonB CartonC CartonD]
326
- )
327
- end
328
-
329
- assert_equal operation, @client.operation
330
- end
331
-
332
- def test_getting_pallet_labels
333
- operation = {
334
- 'Action' => 'GetPalletLabels',
335
- 'ShipmentId' => 'FBAQFGQZ',
336
- 'PageType' => 'PackageLabel_Letter_4',
337
- 'NumberOfPallets' => 4
338
- }
339
-
340
- @client.stub(:run, nil) do
341
- @client.get_pallet_labels('FBAQFGQZ', 'PackageLabel_Letter_4', 4)
342
- end
343
-
344
- assert_equal operation, @client.operation
345
- end
346
-
347
- def test_getting_bill_of_lading
348
- operation = {
349
- 'Action' => 'GetBillOfLading',
350
- 'ShipmentId' => '1'
351
- }
352
-
353
- @client.stub(:run, nil) do
354
- @client.get_bill_of_lading('1')
355
- end
356
-
357
- assert_equal operation, @client.operation
358
- end
359
-
360
- def test_listing_inbound_shipments
361
- operation = {
362
- 'Action' => 'ListInboundShipments',
363
- 'ShipmentStatusList.member.1' => 'Foo',
364
- 'ShipmentIdList.member.1' => 'Bar'
365
- }
366
-
367
- @client.stub(:run, nil) do
368
- @client.list_inbound_shipments(
369
- shipment_status_list: ['Foo'],
370
- shipment_id_list: ['Bar']
371
- )
372
- end
373
-
374
- assert_equal operation, @client.operation
375
- end
376
-
377
- def test_listing_inbound_shipments_by_next_token
378
- operation = {
379
- 'Action' => 'ListInboundShipmentsByNextToken',
380
- 'NextToken' => '1'
381
- }
382
-
383
- @client.stub(:run, nil) do
384
- @client.list_inbound_shipments_by_next_token('1')
385
- end
386
-
387
- assert_equal operation, @client.operation
388
- end
389
-
390
- def test_listing_inbound_shipment_items
391
- operation = {
392
- 'Action' => 'ListInboundShipmentItems'
393
- }
394
-
395
- @client.stub(:run, nil) do
396
- @client.list_inbound_shipment_items
397
- end
398
-
399
- assert_equal operation, @client.operation
400
- end
401
-
402
- def test_listing_inbound_shipment_items_by_next_token
403
- operation = {
404
- 'Action' => 'ListInboundShipmentItemsByNextToken',
405
- 'NextToken' => '1'
406
- }
407
-
408
- @client.stub(:run, nil) do
409
- @client.list_inbound_shipment_items_by_next_token('1')
410
- end
411
-
412
- assert_equal operation, @client.operation
413
- end
414
-
415
- def test_getting_service_status
416
- operation = {
417
- 'Action' => 'GetServiceStatus'
418
- }
419
-
420
- @client.stub(:run, nil) do
421
- @client.get_service_status
422
- end
423
-
424
- assert_equal operation, @client.operation
425
- end
426
- end