peddler 0.1.3
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.
- data/.gitignore +1 -0
- data/History.txt +8 -0
- data/LICENSE +22 -0
- data/README.rdoc +118 -0
- data/Rakefile +18 -0
- data/VERSION.yml +4 -0
- data/init.rb +1 -0
- data/lib/peddler/client.rb +215 -0
- data/lib/peddler/feeds.rb +184 -0
- data/lib/peddler/handlers.rb +58 -0
- data/lib/peddler/inventory.rb +108 -0
- data/lib/peddler/legacy_reports.rb +107 -0
- data/lib/peddler/refunds.rb +54 -0
- data/lib/peddler/reports.rb +94 -0
- data/lib/peddler/transport.rb +135 -0
- data/lib/peddler.rb +25 -0
- data/peddler.gemspec +80 -0
- data/spec/peddler/client_spec.rb +47 -0
- data/spec/peddler/feeds_spec.rb +80 -0
- data/spec/peddler/handlers_spec.rb +19 -0
- data/spec/peddler/inventory_spec.rb +74 -0
- data/spec/peddler/legacy_reports_spec.rb +86 -0
- data/spec/peddler/refunds_spec.rb +35 -0
- data/spec/peddler/reports_spec.rb +19 -0
- data/spec/peddler/transport_spec.rb +58 -0
- data/spec/spec_helper.rb +3 -0
- metadata +108 -0
@@ -0,0 +1,80 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
|
3
|
+
module Peddler
|
4
|
+
module Feeds
|
5
|
+
module OrderFulfillment
|
6
|
+
describe Batch do
|
7
|
+
before(:each) do
|
8
|
+
@transport = Peddler::Transport.new
|
9
|
+
@transport.modernize_request
|
10
|
+
@feed = Peddler::Feeds::OrderFulfillment::Batch.new(@transport)
|
11
|
+
@fulfilled_order = Peddler::Feeds::OrderFulfillment::Item.new :order_id => "123-1234567-1234567",
|
12
|
+
:ship_date => Date.parse("2009-08-11").to_s
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should add items to batch" do
|
16
|
+
@feed.batch.size.should == 0
|
17
|
+
@feed << @fulfilled_order
|
18
|
+
@feed.batch.size.should == 1
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should create content for upload" do
|
22
|
+
@feed << @fulfilled_order
|
23
|
+
@feed.file_content.should == "order-id\torder-item-id\tquantity\tship-date\tcarrier-code\tcarrier-name\ttracking-number\tship-method\r\n123-1234567-1234567\t\t\t2009-08-11\t\t\t\t\r\n"
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should upload" do
|
27
|
+
@feed.id.should == nil
|
28
|
+
@transport.stub!(:execute_request).and_return('<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://merchant-query.amazon.com/query/schema/MerchantQueryResponses.xsd"><Upload> <UploadId>130895733</UploadId><UploadType>_POST_FLAT_FILE_FULFILLMENT_DATA_</UploadType><UploadStatus>_SUBMITTED_</UploadStatus><SubmittedDate>2007-04-05T00:34:00+0000</SubmittedDate></Upload></Response>')
|
29
|
+
@feed.upload
|
30
|
+
@feed.id.should == "130895733"
|
31
|
+
@feed.status.should == "_SUBMITTED_"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should refresh status" do
|
35
|
+
@transport.stub!(:execute_request).and_return('<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://merchant-query.amazon.com/query/schema/MerchantQueryResponses.xsd"><Upload> <UploadId>130895733</UploadId><UploadType>_POST_FLAT_FILE_FULFILLMENT_DATA_</UploadType><UploadStatus>_SUBMITTED_</UploadStatus><SubmittedDate>2007-04-05T00:34:00+0000</SubmittedDate></Upload></Response>')
|
36
|
+
@feed.upload
|
37
|
+
@transport.stub!(:execute_request).and_return('<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://merchant-query.amazon.com/query/schema/MerchantQueryResponses.xsd"><UploadsStatusList><Upload><UploadId>130895733</UploadId><UploadType>_POST_FLAT_FILE_FULFILLMENT_DATA_</UploadType><UploadStatus>_IN_PROGRESS_</UploadStatus><SubmittedDate>2007-04-05T00:34:00+0000</SubmittedDate><StartedProcessingDate>2007-04-05T00:39:00+0000</StartedProcessingDate></Upload></UploadsStatusList></Response>')
|
38
|
+
@feed.status.should == "_SUBMITTED_"
|
39
|
+
@feed.status!.should == "_IN_PROGRESS_"
|
40
|
+
@transport.stub!(:execute_request).and_return('<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://merchant-query.amazon.com/query/schema/MerchantQueryResponses.xsd"><UploadsStatusList><Upload><UploadId>130895733</UploadId><UploadType>_POST_FLAT_FILE_FULFILLMENT_DATA_</UploadType><UploadStatus>_DONE_</UploadStatus><SubmittedDate>2007-04-05T00:34:00+0000</SubmittedDate><StartedProcessingDate>2007-04-05T00:39:00+0000</StartedProcessingDate><CompletedProcessingDate>2007-04-05T01:02:00+0000</CompletedProcessingDate><MessagesProcessed>2</MessagesProcessed><MessagesSuccessful>2</MessagesSuccessful><MessagesWithErrors>0</MessagesWithErrors><MessagesWithWarnings>0</MessagesWithWarnings><RelatedDownloadsList><Download><DownloadId>3404021</DownloadId><DownloadType>FeedSummaryReport</DownloadType><RelatedReferenceId>4307285844</RelatedReferenceId><AvailableDate>2009-04-24T23:47:24+00:00</AvailableDate><Acknowledged>FALSE</Acknowledged></Download></RelatedDownloadsList></Upload></UploadsStatusList></Response>')
|
41
|
+
@feed.status!.should == "_DONE_"
|
42
|
+
@feed.download.id.should == "3404021"
|
43
|
+
@feed.download.available_at.to_s.should == "Sat Apr 25 00:47:24 +0100 2009"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
module OrderCancellation
|
49
|
+
describe Batch do
|
50
|
+
before(:each) do
|
51
|
+
@transport = Peddler::Transport.new
|
52
|
+
@transport.modernize_request
|
53
|
+
@feed = Peddler::Feeds::OrderCancellation::Batch.new(@transport)
|
54
|
+
@cancelled_order = Peddler::Feeds::OrderCancellation::Item.new :order_id => "123-1234567-1234567"
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should add items to batch" do
|
58
|
+
@feed.batch.size.should == 0
|
59
|
+
@feed << @cancelled_order
|
60
|
+
@feed.batch.size.should == 1
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should create content for upload" do
|
64
|
+
@feed << @cancelled_order
|
65
|
+
@feed.file_content.should == "TemplateType=OrderCancellation Version=1.0/1.0.3 This row for Amazon.com use only. Do not modify or delete.\r\norder-id\tcancellation-reason-code\tamazon-order-item-code\r\n123-1234567-1234567\t\t\r\n"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should raise error if cancellation reason code is given but Amazon order item code is missing" do
|
69
|
+
@cancelled_order.cancellation_reason_code = "BuyerCanceled"
|
70
|
+
lambda { @cancelled_order.to_s }.should raise_error(PeddlerError)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should raise error if Amazon order item code is given but cancellation reason code is missing" do
|
74
|
+
@cancelled_order.amazon_order_item_code = "111111111111"
|
75
|
+
lambda { @cancelled_order.to_s }.should raise_error(PeddlerError)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
module Peddler
|
3
|
+
module Handlers
|
4
|
+
describe XMLHandler do
|
5
|
+
it "should parse XML" do
|
6
|
+
xml = Peddler::Handlers::XMLHandler.decode_response("<Reports> <Report>reportstarttime=08-13-2009:06-16-06 reportendtime=12-31-1969:16-00-00 reportid=2599221990 </Report></Reports>")
|
7
|
+
statuses = Peddler::Handlers::XMLHandler.parse_legacy(xml)
|
8
|
+
statuses[0].id.should == "2599221990"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe TabDelimitedHandler do
|
13
|
+
it "should parse tab-delimited text" do
|
14
|
+
text = Peddler::Handlers::TabDelimitedHandler.decode_response("title\tautor\nA Thousand Plateaus\tGilles Deleuze\n")
|
15
|
+
text[0].title.should == "A Thousand Plateaus"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
|
3
|
+
module Peddler
|
4
|
+
|
5
|
+
module Inventory
|
6
|
+
|
7
|
+
describe Queue do
|
8
|
+
|
9
|
+
it "should show queue count" do
|
10
|
+
transport = Peddler::Transport.new
|
11
|
+
transport.legacize_request
|
12
|
+
transport.stub!(:execute_request).and_return("<PendingUploadsCount>1</PendingUploadsCount>")
|
13
|
+
Peddler::Inventory::Queue.count(transport).should == 1
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
describe Batch do
|
19
|
+
|
20
|
+
before(:each) do
|
21
|
+
@transport = Peddler::Transport.new
|
22
|
+
@transport.legacize_request
|
23
|
+
@inventory = Peddler::Inventory::Batch.new(@transport)
|
24
|
+
@item = Peddler::Inventory::Item.new :product_id => "1234567890",
|
25
|
+
:price => 100.00,
|
26
|
+
:sku => "FOO-SKU",
|
27
|
+
:quantity => 10
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should add items to batch" do
|
31
|
+
@inventory.batch.size.should == 0
|
32
|
+
@inventory << @item
|
33
|
+
@inventory.batch.size.should == 1
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should generate an upload file" do
|
37
|
+
@inventory << @item
|
38
|
+
@inventory.file_content.should == "product-id\tproduct-id-type\titem-condition\tprice\tsku\tquantity\tadd-delete\twill-ship-internationally\texpedited-shipping\titem-note\titem-is-marketplace\tfulfillment-center-id\titem-name\titem-description\tcategory1\timage-url\tshipping-fee\tbrowse-path\tstorefront-feature\tboldface\tasin1\tasin2\tasin3\r\n1234567890\t\t\t100.0\tFOO-SKU\t10\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should generate a modify-only upload file" do
|
42
|
+
@inventory << @item
|
43
|
+
@inventory.file_content(:short).should == "sku\tprice\tquantity\r\nFOO-SKU\t100.0\t10\r\n"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should generate default headers for uploading" do
|
47
|
+
params = @inventory.defaultize :file_format => "UIEE",
|
48
|
+
:enable_expedited_shipping => "N"
|
49
|
+
params[:method].should be_nil
|
50
|
+
params[:upload_for].should == "Marketplace"
|
51
|
+
params[:email].should == "Y"
|
52
|
+
params[:file_format].should == "UIEE"
|
53
|
+
params["enable-expedited-shipping"].should == "N"
|
54
|
+
params[:enable_expedited_shipping].should be_nil
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should upload batch" do
|
58
|
+
@transport.stub!(:execute_request).and_return("<BatchID>2585199250</BatchID>")
|
59
|
+
@inventory.upload.should == true
|
60
|
+
@inventory.id.should == "2585199250"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should raise error if a subsequent upload is attempted" do
|
64
|
+
@transport.stub!(:execute_request).and_return("<BatchID>2585199250</BatchID>")
|
65
|
+
@inventory.upload.should == true
|
66
|
+
@inventory.id.should_not == nil
|
67
|
+
lambda { @inventory.upload }.should raise_error(PeddlerError)
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
|
3
|
+
module Peddler
|
4
|
+
describe LegacyReports do
|
5
|
+
before(:each) do
|
6
|
+
@transport = Peddler::Transport.new
|
7
|
+
@transport.legacize_request
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should generate an order report" do
|
11
|
+
@transport.stub!(:execute_request).and_return("<Status>SUCCESS</Status>")
|
12
|
+
res = Peddler::LegacyReports.generate(@transport, :order, :number_of_days => 30)
|
13
|
+
res.should be_an_instance_of(Peddler::LegacyReports::Report)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should show most recent order reports" do
|
17
|
+
@transport.stub!(:execute_request).and_return("<Reports> <Report>reportstarttime=07-23-2009:08-33-48 reportendtime=08-07-2009:08-33-48 reportid=1234567890 </Report></Reports>")
|
18
|
+
report_status = Peddler::LegacyReports.latest(@transport, :order, :count => 1)[0]
|
19
|
+
report_status.starts_at.should == "07-23-2009:08-33-48"
|
20
|
+
report_status.id.should == "1234567890"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should show most recent uploads" do
|
24
|
+
@transport.stub!(:execute_request).and_return("<Batches> <Batch>batchid=2586376232 status=Done dateandtime=08/07/2009 01:48:23 PDT activateditems=1020 numberofwarnings=0 itemsnotacivated=0 </Batch></Batches>")
|
25
|
+
upload = Peddler::LegacyReports.latest(@transport, :upload, :count => 1)[0]
|
26
|
+
upload.id.should == "2586376232"
|
27
|
+
upload.status.should == "Done"
|
28
|
+
upload.datetime.should == "08/07/2009 01:48:23 PDT"
|
29
|
+
upload.activated_items.should == "1020"
|
30
|
+
upload.number_of_warnings.should == "0"
|
31
|
+
upload.items_not_activated.should == "0"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
module LegacyReports
|
36
|
+
describe Report do
|
37
|
+
before(:each) do
|
38
|
+
@transport = Peddler::Transport.new
|
39
|
+
@transport.legacize_request
|
40
|
+
@report = Peddler::LegacyReports::Report.new(@transport)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should download an inventory upload error log" do
|
44
|
+
@transport.stub!(:execute_request).and_return("Feed Processing Summary:\n\tNumber of records processed\t\t82\n\tNumber of records successful\t\t81\n\noriginal-record-number\tsku\terror-code\terror-type\terror-message\n27\t1111111111\t8026\tError\tSeller is not authorized to list products in this category. For more details, see http://sellercentral.amazon.com/gp/errorcode/8026\n")
|
45
|
+
|
46
|
+
@report.name = :upload
|
47
|
+
@report.id = "1234567890"
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should download an inventory upload error log" do
|
51
|
+
@transport.stub!(:execute_request).and_return("Feed Processing Summary:\n\tNumber of records processed\t\t82\n\tNumber of records successful\t\t81\n\noriginal-record-number\tsku\terror-code\terror-type\terror-message\n27\t1111111111\t8026\tError\tSeller is not authorized to list products in this category. For more details, see http://sellercentral.amazon.com/gp/errorcode/8026\n")
|
52
|
+
@report.name = :upload
|
53
|
+
@report.id = "1234567890"
|
54
|
+
@report.body.should =~ /Feed Processing Summary/
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should retrieve an order report by id" do
|
58
|
+
@transport.stub!(:execute_request).and_return("payments-status\torder-id\torder-item-id\tpayments-date\tpayments-transaction-id\titem-name\tlisting-id\tsku\tprice\tshipping-fee\tquantity-purchased\ttotal-price\tpurchase-date\tbatch-id\tbuyer-email\tbuyer-name\trecipient-name\tship-address-1\tship-address-2\tship-city\tship-state\tship-zip\tship-country\tspecial-comments\tupc\tship-method\n\t001-1234567-1234567\t12345678901234\t2009-07-23 08:59:03 PST\t\tFoo Bar\t000000000000\t1234567890\t10.00\t3.99\t1\t13.99\t2009-07-23 08:59:03 PST\t\tfoo@bar.com\tJOHN DOE\tJohn Doe\t1 MAIN ST\t\tNEW YORK\tNY\t10001-1000\tUS\t\t\tstandard\n")
|
59
|
+
@report.name = :order
|
60
|
+
@report.id = "1234567890"
|
61
|
+
res = Peddler::Handlers::TabDelimitedHandler.decode_response(@report.body)
|
62
|
+
res.size.should == 1
|
63
|
+
res[0].order_id.should == "001-1234567-1234567"
|
64
|
+
res[0].buyer_name.should == "JOHN DOE"
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should retrieve an order report by report name" do
|
68
|
+
@transport.stub!(:execute_request).and_return("payments-status\torder-id\torder-item-id\tpayments-date\tpayments-transaction-id\titem-name\tlisting-id\tsku\tprice\tshipping-fee\tquantity-purchased\ttotal-price\tpurchase-date\tbatch-id\tbuyer-email\tbuyer-name\trecipient-name\tship-address-1\tship-address-2\tship-city\tship-state\tship-zip\tship-country\tspecial-comments\tupc\tship-method\n\t001-1234567-1234567\t12345678901234\t2009-07-23 08:59:03 PST\t\tFoo Bar\t000000000000\t1234567890\t10.00\t3.99\t1\t13.99\t2009-07-23 08:59:03 PST\t\tfoo@bar.com\tJOHN DOE\tJohn Doe\t1 MAIN ST\t\tNEW YORK\tNY\t10001-1000\tUS\t\t\tstandard\n")
|
69
|
+
@report.name = :order
|
70
|
+
res = Peddler::Handlers::TabDelimitedHandler.decode_response(@report.body)
|
71
|
+
res.size.should == 1
|
72
|
+
res[0].order_id.should == "001-1234567-1234567"
|
73
|
+
res[0].buyer_name.should == "JOHN DOE"
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should retrieve an open listings liter report by id" do
|
77
|
+
@transport.stub!(:execute_request).and_return("seller-sku\tquantity\nSKU-FOO\t14\n")
|
78
|
+
@report.name = :open_listings_liter
|
79
|
+
@report.id = "1234567890"
|
80
|
+
res = Peddler::Handlers::TabDelimitedHandler.decode_response(@report.body)
|
81
|
+
res.size.should == 1
|
82
|
+
res[0].seller_sku.should == "SKU-FOO"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
|
3
|
+
module Peddler
|
4
|
+
module Refunds
|
5
|
+
describe Batch do
|
6
|
+
before(:each) do
|
7
|
+
@transport = Peddler::Transport.new
|
8
|
+
@transport.legacize_request
|
9
|
+
@refunds = Peddler::Refunds::Batch.new(@transport)
|
10
|
+
@refund = Peddler::Refunds::Item.new :order_id => "123-1234567-1234567",
|
11
|
+
:payments_transaction_id => "12341234567890",
|
12
|
+
:refund_amount => 10.00,
|
13
|
+
:reason => "CouldNotShip",
|
14
|
+
:message => "With our apologies"
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should add items to batch" do
|
18
|
+
@refunds.batch.size.should == 0
|
19
|
+
@refunds << @refund
|
20
|
+
@refunds.batch.size.should == 1
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should generate an upload file" do
|
24
|
+
@refunds << @refund
|
25
|
+
@refunds.file_content.should == "order-id\tpayments-transaction-id\trefund-amount\treason\tmessage\r\n123-1234567-1234567\t12341234567890\t10.0\tCouldNotShip\tWith our apologies\r\n"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should upload batch" do
|
29
|
+
@transport.stub!(:execute_request).and_return("<Success>SUCCESS</Success>")
|
30
|
+
@refunds << @refund
|
31
|
+
@refunds.upload.should == true
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
|
3
|
+
module Peddler
|
4
|
+
module Reports
|
5
|
+
describe UnshippedOrdersReport do
|
6
|
+
before(:each) do
|
7
|
+
@transport = Peddler::Transport.new
|
8
|
+
@transport.modernize_request
|
9
|
+
@transport.stub!(:execute_request).and_return("<?xml version=\"1.0\"?>\n<Response xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"http://merchant-query.amazon.com/query/schema/MerchantQueryResponses.xsd\"><Report><ReportID>2597613290</ReportID><DownloadType>_GET_FLAT_FILE_ACTIONABLE_ORDER_DATA_</DownloadType><StartDate>2009-08-05T19:54:31+00:00</StartDate><EndDate>2009-08-12T19:54:31+00:00</EndDate><Scheduled>false</Scheduled><ReportStatus>_SUBMITTED_</ReportStatus><SubmittedDate>2009-08-12T19:54:31+00:00</SubmittedDate></Report></Response>")
|
10
|
+
@report = Peddler::Reports::UnshippedOrdersReport.new(@transport)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should add generate a request" do
|
14
|
+
@report.id.should == "2597613290"
|
15
|
+
@report.status.should == "_SUBMITTED_"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "/../spec_helper")
|
2
|
+
|
3
|
+
module Peddler
|
4
|
+
|
5
|
+
describe Transport do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@transport = Peddler::Transport.new
|
9
|
+
@transport.username = "user"
|
10
|
+
@transport.password = "secret"
|
11
|
+
@transport.region = "us"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should switch regions" do
|
15
|
+
@transport.legacize_request
|
16
|
+
@transport.region = "uk"
|
17
|
+
@transport.url.host.should == "secure.amazon.co.uk"
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should raise error when region is invalid" do
|
21
|
+
lambda { @transport.region = "foo" }.should raise_error(PeddlerError)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should add path to legacy URL" do
|
25
|
+
@transport.legacize_request
|
26
|
+
@transport.path << "foo"
|
27
|
+
@transport.url.to_s.should == "https://secure.amazon.com/exec/panama/seller-admin/foo/"
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should add path to modern URL" do
|
31
|
+
@transport.modernize_request
|
32
|
+
@transport.path << "foo"
|
33
|
+
@transport.url.to_s.should == "https://secure.amazon.com/query/foo/?Service=MerchantQueryService"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should add query parameters to the modern URL" do
|
37
|
+
@transport.modernize_request
|
38
|
+
@transport.query_params["key1"] = "val1"
|
39
|
+
@transport.query_params["key2"] = "val2"
|
40
|
+
@transport.url.to_s.should == "https://secure.amazon.com/query/?key1=val1&key2=val2&Service=MerchantQueryService"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should url_encode query parameters" do
|
44
|
+
@transport.modernize_request
|
45
|
+
@transport.query_params["key"] = "!@#"
|
46
|
+
@transport.url.to_s.should == "https://secure.amazon.com/query/?key=%21%40%23&Service=MerchantQueryService"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should authenticate request" do
|
50
|
+
@transport.legacize_request
|
51
|
+
req = @transport.request
|
52
|
+
req["authorization"].should_not be(nil)
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: peddler
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Hakan Senol Ensari
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-11-06 00:00:00 +00:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: xml-simple
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
description: Peddler is a Ruby wrapper to the Amazon Inventory Management API.
|
36
|
+
email: hakan.ensari@papercavalier.com
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files:
|
42
|
+
- LICENSE
|
43
|
+
- README.rdoc
|
44
|
+
files:
|
45
|
+
- .gitignore
|
46
|
+
- History.txt
|
47
|
+
- LICENSE
|
48
|
+
- README.rdoc
|
49
|
+
- Rakefile
|
50
|
+
- VERSION.yml
|
51
|
+
- init.rb
|
52
|
+
- lib/peddler.rb
|
53
|
+
- lib/peddler/client.rb
|
54
|
+
- lib/peddler/feeds.rb
|
55
|
+
- lib/peddler/handlers.rb
|
56
|
+
- lib/peddler/inventory.rb
|
57
|
+
- lib/peddler/legacy_reports.rb
|
58
|
+
- lib/peddler/refunds.rb
|
59
|
+
- lib/peddler/reports.rb
|
60
|
+
- lib/peddler/transport.rb
|
61
|
+
- peddler.gemspec
|
62
|
+
- spec/peddler/client_spec.rb
|
63
|
+
- spec/peddler/feeds_spec.rb
|
64
|
+
- spec/peddler/handlers_spec.rb
|
65
|
+
- spec/peddler/inventory_spec.rb
|
66
|
+
- spec/peddler/legacy_reports_spec.rb
|
67
|
+
- spec/peddler/refunds_spec.rb
|
68
|
+
- spec/peddler/reports_spec.rb
|
69
|
+
- spec/peddler/transport_spec.rb
|
70
|
+
- spec/spec_helper.rb
|
71
|
+
has_rdoc: true
|
72
|
+
homepage: http://snl.github.com/peddler
|
73
|
+
licenses: []
|
74
|
+
|
75
|
+
post_install_message:
|
76
|
+
rdoc_options:
|
77
|
+
- --charset=UTF-8
|
78
|
+
require_paths:
|
79
|
+
- lib
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: "0"
|
85
|
+
version:
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: "0"
|
91
|
+
version:
|
92
|
+
requirements: []
|
93
|
+
|
94
|
+
rubyforge_project:
|
95
|
+
rubygems_version: 1.3.5
|
96
|
+
signing_key:
|
97
|
+
specification_version: 3
|
98
|
+
summary: A Ruby wrapper to the Amazon Inventory Management API
|
99
|
+
test_files:
|
100
|
+
- spec/peddler/client_spec.rb
|
101
|
+
- spec/peddler/feeds_spec.rb
|
102
|
+
- spec/peddler/handlers_spec.rb
|
103
|
+
- spec/peddler/inventory_spec.rb
|
104
|
+
- spec/peddler/legacy_reports_spec.rb
|
105
|
+
- spec/peddler/refunds_spec.rb
|
106
|
+
- spec/peddler/reports_spec.rb
|
107
|
+
- spec/peddler/transport_spec.rb
|
108
|
+
- spec/spec_helper.rb
|