peddler 0.3.1 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,89 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Peddler
4
- describe LegacyReports do
5
- let(:transport) do
6
- transport = Peddler::Transport.new
7
- transport.legacize_request
8
- transport
9
- end
10
-
11
- it 'generates an order report' do
12
- transport.stub!(:execute_request).and_return('<Status>SUCCESS</Status>')
13
- res = Peddler::LegacyReports.generate(transport, :order, :number_of_days => 30)
14
- res.should be_an_instance_of(Peddler::LegacyReports::Report)
15
- end
16
-
17
- it 'shows most recent order reports' do
18
- transport.stub!(:execute_request).and_return('<Reports> <Report>reportstarttime=12-26-2009:19-00-02 reportendtime=01-10-2010:19-00-02 reportid=2893717072 </Report><Report>reportstarttime=01-10-2010:14-00-00 reportendtime=01-10-2010:18-00-00 reportid=2893636754 </Report><Report>reportstarttime=12-26-2009:18-00-01 reportendtime=01-10-2010:18-00-01 reportid=2893629784 </Report><Report>reportstarttime=12-26-2009:17-00-07 reportendtime=01-10-2010:17-00-07 reportid=2893548356 </Report><Report>reportstarttime=12-26-2009:16-00-02 reportendtime=01-10-2010:16-00-02 reportid=2893461740 </Report><Report>reportstarttime=12-26-2009:15-00-02 reportendtime=01-10-2010:15-00-02 reportid=2893375352 </Report><Report>reportstarttime=01-10-2010:10-00-00 reportendtime=01-10-2010:14-00-00 reportid=2893291418 </Report><Report>reportstarttime=12-26-2009:14-00-02 reportendtime=01-10-2010:14-00-02 reportid=2893283538 </Report><Report>reportstarttime=12-26-2009:13-00-02 reportendtime=01-10-2010:13-00-02 reportid=2893197830 </Report><Report>reportstarttime=12-26-2009:12-00-02 reportendtime=01-10-2010:12-00-02 reportid=2893112598 </Report></Reports>')
19
- report_status = Peddler::LegacyReports.latest(transport, :order, :count => 1)[0]
20
- report_status.starts_at.should == '12-26-2009:19-00-02'
21
- report_status.id.should == '2893717072'
22
- end
23
-
24
- it 'shows most recent uploads' do
25
- 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>')
26
- upload = Peddler::LegacyReports.latest(transport, :upload, :count => 1)[0]
27
- upload.id.should == '2586376232'
28
- upload.status.should == 'Done'
29
- upload.datetime.should == '08/07/2009 01:48:23 PDT'
30
- upload.activated_items.should == '1020'
31
- upload.number_of_warnings.should == '0'
32
- upload.items_not_activated.should == '0'
33
- end
34
- end
35
-
36
- module LegacyReports
37
- describe Report do
38
- let(:transport) do
39
- transport = Peddler::Transport.new
40
- transport.legacize_request
41
- transport
42
- end
43
-
44
- let(:report) { Peddler::LegacyReports::Report.new(transport) }
45
-
46
- it 'downloads an inventory upload error log' do
47
- 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")
48
-
49
- report.name = :upload
50
- report.id = '1234567890'
51
- end
52
-
53
- it 'downloads an inventory upload error log' do
54
- 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")
55
- report.name = :upload
56
- report.id = '1234567890'
57
- report.body.should =~ /Feed Processing Summary/
58
- end
59
-
60
- it 'retrieves an order report by id' do
61
- 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")
62
- report.name = :order
63
- report.id = '1234567890'
64
- res = Peddler::Handlers::TabDelimitedHandler.decode_response(report.body)
65
- res.size.should == 1
66
- res[0].order_id.should == '001-1234567-1234567'
67
- res[0].buyer_name.should == 'JOHN DOE'
68
- end
69
-
70
- it 'retrieves an order report by report name' do
71
- 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")
72
- report.name = :order
73
- res = Peddler::Handlers::TabDelimitedHandler.decode_response(report.body)
74
- res.size.should == 1
75
- res[0].order_id.should == '001-1234567-1234567'
76
- res[0].buyer_name.should == 'JOHN DOE'
77
- end
78
-
79
- it 'retrieves an open listings liter report by id' do
80
- transport.stub!(:execute_request).and_return("seller-sku\tquantity\nSKU-FOO\t14\n")
81
- report.name = :open_listings_liter
82
- report.id = '1234567890'
83
- res = Peddler::Handlers::TabDelimitedHandler.decode_response(report.body)
84
- res.size.should == 1
85
- res[0].seller_sku.should == 'SKU-FOO'
86
- end
87
- end
88
- end
89
- end
@@ -1,42 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Peddler
4
- module Refunds
5
- describe Batch do
6
- let(:transport) do
7
- transport = Peddler::Transport.new
8
- transport.legacize_request
9
- transport
10
- end
11
-
12
- let(:refunds) { Peddler::Refunds::Batch.new(transport) }
13
-
14
- let(:refund) do
15
- Peddler::Refunds::Item.new(
16
- :order_id => "123-1234567-1234567",
17
- :payments_transaction_id => "12341234567890",
18
- :refund_amount => 10.00,
19
- :reason => "CouldNotShip",
20
- :message => "With our apologies"
21
- )
22
- end
23
-
24
- it "adds items to batch" do
25
- refunds.batch.size.should == 0
26
- refunds << refund
27
- refunds.batch.size.should == 1
28
- end
29
-
30
- it "generates an upload file" do
31
- refunds << refund
32
- 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"
33
- end
34
-
35
- it "uploads batch" do
36
- transport.stub!(:execute_request).and_return("<Success>SUCCESS</Success>")
37
- refunds << refund
38
- refunds.upload.should == true
39
- end
40
- end
41
- end
42
- end
@@ -1,26 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Peddler
4
- module Reports
5
- describe UnshippedOrdersReport do
6
- let(:transport) 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
- transport
11
- end
12
-
13
- let(:report) { Peddler::Reports::UnshippedOrdersReport.new(transport) }
14
-
15
- it 'generates a request' do
16
- report.id.should == '2597613290'
17
- report.status.should == '_SUBMITTED_'
18
- end
19
-
20
- it 'updates status' do
21
- 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"><ReportsList><Report><ReportID>2893967048</ReportID><DownloadType>_GET_FLAT_FILE_ACTIONABLE_ORDER_DATA_</DownloadType><StartDate>2010-01-04T00:00:00+00:00</StartDate><EndDate>2010-01-12T00:00:00+00:00</EndDate><Scheduled>false</Scheduled><ReportStatus>_SUBMITTED_</ReportStatus><SubmittedDate>2010-01-11T06:02:40+00:00</SubmittedDate></Report></ReportsList></Response>')
22
- report.status!.should == '_SUBMITTED_'
23
- end
24
- end
25
- end
26
- end
@@ -1,65 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Peddler
4
- describe Transport do
5
- let(:transport) do
6
- transport = Peddler::Transport.new
7
- transport.username = 'user'
8
- transport.password = 'secret'
9
- transport.region = :us
10
- transport
11
- end
12
-
13
- it 'switches regions' do
14
- transport.legacize_request
15
- transport.region = :uk
16
- transport.url.host.should == 'secure.amazon.co.uk'
17
- end
18
-
19
- it 'raises error when region is invalid' do
20
- lambda { transport.region = 'foo' }.should raise_error(PeddlerError)
21
- end
22
-
23
- it 'adds path to legacy URL' do
24
- transport.legacize_request
25
- transport.path << 'foo'
26
- transport.url.to_s.should == 'https://secure.amazon.com/exec/panama/seller-admin/foo'
27
- end
28
-
29
- it 'adds path to modern URL' do
30
- transport.modernize_request
31
- transport.path << 'foo'
32
- transport.url.to_s.should == 'https://secure.amazon.com/query/foo?Service=MerchantQueryService'
33
- end
34
-
35
- it 'adds query parameters to the modern URL' do
36
- transport.modernize_request
37
- transport.query_params['key1'] = 'val1'
38
- transport.query_params['key2'] = 'val2'
39
- uri = URI.parse(transport.url.to_s)
40
- keys = uri.query.split('&').map{ |param| param.match(/(.*)=/)[1] }
41
- keys.should include('key1')
42
- keys.should include('key2')
43
- end
44
-
45
- it 'authenticates request' do
46
- transport.legacize_request
47
- req = transport.request
48
- req['authorization'].should_not be(nil)
49
- end
50
-
51
- it 'posts if there is a body' do
52
- transport.body = 'foo'
53
- transport.send(:request_method).should == Net::HTTP::Post
54
- end
55
-
56
- it 'posts if there is a query parameter' do
57
- transport.query_params = { :foo => 'bar' }
58
- transport.send(:request_method).should == Net::HTTP::Post
59
- end
60
-
61
- it 'gets if there is no body or query parameter' do
62
- transport.send(:request_method).should == Net::HTTP::Get
63
- end
64
- end
65
- end
data/spec/spec_helper.rb DELETED
@@ -1,7 +0,0 @@
1
- require "rubygems"
2
- require "bundler/setup"
3
- require "rspec"
4
-
5
- require File.expand_path("../../lib/peddler", __FILE__)
6
-
7
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
@@ -1,2 +0,0 @@
1
- key: KEY
2
- secret: SECRET
@@ -1,3 +0,0 @@
1
- def amazon
2
- @amazon ||= YAML::load_file(File.dirname(__FILE__) + "/amazon.yml")
3
- end
data/spec/support/vcr.rb DELETED
@@ -1,13 +0,0 @@
1
- require 'vcr'
2
-
3
- VCR.config do |c|
4
- c.cassette_library_dir = File.dirname(__FILE__) + '/../fixtures/cassette_library'
5
- c.http_stubbing_library = :webmock
6
- c.default_cassette_options = {
7
- :record => :new_episodes
8
- }
9
- end
10
-
11
- RSpec.configure do |config|
12
- config.extend VCR::RSpec::Macros
13
- end
data/spec_rubies DELETED
@@ -1,2 +0,0 @@
1
- rvm rbx@peddler,ree@peddler,1.9.2@peddler exec bundle install
2
- rvm rbx@peddler,ree@peddler,1.9.2@peddler rake