peddler 0.2.4 → 0.3.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.
- data/.gitignore +5 -3
- data/.rspec +1 -0
- data/.rvmrc +2 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +47 -0
- data/LICENSE +6 -6
- data/README.md +128 -0
- data/Rakefile +12 -18
- data/lib/peddler/client.rb +18 -18
- data/lib/peddler/feeds.rb +26 -26
- data/lib/peddler/handlers.rb +5 -5
- data/lib/peddler/inventory.rb +16 -16
- data/lib/peddler/legacy_reports.rb +12 -12
- data/lib/peddler/refunds.rb +11 -13
- data/lib/peddler/reports.rb +12 -12
- data/lib/peddler/transport.rb +18 -18
- data/lib/peddler/version.rb +3 -0
- data/lib/peddler.rb +10 -11
- data/mussels.jpg +0 -0
- data/peddler.gemspec +28 -0
- data/spec/peddler/client_spec.rb +31 -33
- data/spec/peddler/feeds_spec.rb +65 -57
- data/spec/peddler/handlers_spec.rb +2 -2
- data/spec/peddler/inventory_spec.rb +45 -47
- data/spec/peddler/legacy_reports_spec.rb +54 -51
- data/spec/peddler/refunds_spec.rb +31 -24
- data/spec/peddler/reports_spec.rb +16 -14
- data/spec/peddler/transport_spec.rb +50 -50
- data/spec/spec_helper.rb +7 -3
- data/spec/support/amazon.yml.example +2 -0
- data/spec/support/amazon_credentials.rb +3 -0
- data/spec/support/vcr.rb +13 -0
- data/spec_rubies +2 -0
- metadata +102 -26
- data/History.txt +0 -17
- data/README.rdoc +0 -118
- data/VERSION.yml +0 -5
data/lib/peddler/inventory.rb
CHANGED
@@ -13,23 +13,23 @@ module Peddler
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
# This is an inventory batch.
|
18
18
|
class Batch
|
19
19
|
attr_reader :id
|
20
20
|
attr_accessor :batch
|
21
|
-
|
21
|
+
|
22
22
|
def initialize(transport)
|
23
23
|
@transport = transport
|
24
24
|
@batch = []
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
# Uploads batch to Amazon.
|
28
28
|
def upload(params={})
|
29
29
|
raise PeddlerError.new('Batch already uploaded') unless @id.nil?
|
30
30
|
@transport.legacize_request
|
31
31
|
@transport.path << 'catalog-upload/'
|
32
|
-
|
32
|
+
|
33
33
|
case params[:method].to_s
|
34
34
|
when 'modify'
|
35
35
|
@transport.path << 'modify-only'
|
@@ -42,11 +42,11 @@ module Peddler
|
|
42
42
|
@transport.body = file_content
|
43
43
|
end
|
44
44
|
params.delete(:method)
|
45
|
-
|
45
|
+
|
46
46
|
params = defaultize(params)
|
47
47
|
@transport.headers.merge!(params)
|
48
48
|
res = @transport.execute_request
|
49
|
-
|
49
|
+
|
50
50
|
if res =~ /^<BatchID>(.*)<\/BatchID>$/
|
51
51
|
@id = $1
|
52
52
|
else
|
@@ -54,7 +54,7 @@ module Peddler
|
|
54
54
|
end
|
55
55
|
true
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
# Returns upload file string.
|
59
59
|
def file_content(type=:long)
|
60
60
|
case type
|
@@ -67,14 +67,14 @@ module Peddler
|
|
67
67
|
end
|
68
68
|
out
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
# Adds an item to inventory.
|
72
72
|
def <<(item)
|
73
73
|
@batch << item
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
private
|
77
|
-
|
77
|
+
|
78
78
|
def defaultize(params)
|
79
79
|
params = {
|
80
80
|
:upload_for => 'Marketplace',
|
@@ -84,7 +84,7 @@ module Peddler
|
|
84
84
|
:batch_id => 'Y',
|
85
85
|
:email => 'Y'
|
86
86
|
}.merge(params)
|
87
|
-
|
87
|
+
|
88
88
|
# Some Amazon dimwit figured he'd rather not camelize this one
|
89
89
|
if params[:enable_expedited_shipping]
|
90
90
|
params['enable-expedited-shipping'] = params[:enable_expedited_shipping]
|
@@ -92,11 +92,11 @@ module Peddler
|
|
92
92
|
else
|
93
93
|
params['enable-expedited-shipping'] = 'Y'
|
94
94
|
end
|
95
|
-
|
95
|
+
|
96
96
|
params
|
97
97
|
end
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
# This is an inventory item.
|
101
101
|
class Item
|
102
102
|
attr_accessor :product_id,
|
@@ -122,11 +122,11 @@ module Peddler
|
|
122
122
|
:asin1,
|
123
123
|
:asin2,
|
124
124
|
:asin3
|
125
|
-
|
125
|
+
|
126
126
|
def initialize(params={})
|
127
127
|
params.each_pair{ |key, value| send("#{key.to_s}=", value) }
|
128
128
|
end
|
129
|
-
|
129
|
+
|
130
130
|
def to_s(type=:long)
|
131
131
|
case type
|
132
132
|
when :long
|
@@ -137,4 +137,4 @@ module Peddler
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
end
|
140
|
-
end
|
140
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Peddler
|
2
|
-
|
2
|
+
|
3
3
|
# This module contains methods to manage legacy reports -- anything that comes before section 7 in the API docs.
|
4
4
|
module LegacyReports
|
5
|
-
|
5
|
+
|
6
6
|
# Returns statuses of most recent reports in an array of OpenStructs.
|
7
7
|
def self.latest(transport,name,params={})
|
8
8
|
transport.legacize_request
|
@@ -17,7 +17,7 @@ module Peddler
|
|
17
17
|
res = transport.execute_request
|
18
18
|
Peddler::Handlers::XMLHandler.parse_legacy(Hash.from_xml(res)) || []
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
# Requests a report to be generated and returns the report instance if request is successful.
|
22
22
|
def self.generate(transport,name,params={})
|
23
23
|
transport.legacize_request
|
@@ -27,23 +27,23 @@ module Peddler
|
|
27
27
|
res = transport.execute_request
|
28
28
|
res =~ /SUCCESS/ ? Peddler::LegacyReports::Report.new(transport, name) : false
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
# A legacy report
|
32
32
|
class Report
|
33
33
|
attr_accessor :name, :id, :product_line, :frequency
|
34
|
-
|
34
|
+
|
35
35
|
def initialize(transport, name=nil, params={})
|
36
36
|
@transport, @name = transport, name
|
37
37
|
params.each_pair{ |key, value| self.send "#{key}=", value }
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
def body
|
41
41
|
return nil if @name == :upload && @id.nil?
|
42
42
|
@body ||= download
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
private
|
46
|
-
|
46
|
+
|
47
47
|
def download
|
48
48
|
return false if @name.nil? && @id.nil?
|
49
49
|
case @name.to_s
|
@@ -68,7 +68,7 @@ module Peddler
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
class Status < OpenStruct
|
73
73
|
def initialize(input)
|
74
74
|
if input.kind_of? String
|
@@ -76,12 +76,12 @@ module Peddler
|
|
76
76
|
end
|
77
77
|
super(hash)
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
def id
|
81
81
|
@table[:id] || self.object_id
|
82
82
|
end
|
83
83
|
end
|
84
|
-
|
84
|
+
|
85
85
|
class ReportStatus < Status
|
86
86
|
def initialize(input)
|
87
87
|
@keymap = {
|
@@ -91,7 +91,7 @@ module Peddler
|
|
91
91
|
super(input)
|
92
92
|
end
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
class UploadStatus < Status
|
96
96
|
def initialize(input)
|
97
97
|
@keymap = {
|
data/lib/peddler/refunds.rb
CHANGED
@@ -3,21 +3,21 @@ module Peddler
|
|
3
3
|
# This is a refund batch.
|
4
4
|
class Batch
|
5
5
|
attr_accessor :batch
|
6
|
-
|
6
|
+
|
7
7
|
def initialize(transport)
|
8
8
|
@transport = transport
|
9
9
|
@batch = []
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def file_content
|
13
13
|
out = "order-id\tpayments-transaction-id\trefund-amount\treason\tmessage\r\n"
|
14
14
|
@file_content = @batch.inject(out){ |memo, item| memo << item.to_s }
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
def <<(item)
|
18
18
|
@batch << item
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def upload
|
22
22
|
raise PeddlerError.new("Batch already uploaded") if @completed
|
23
23
|
@transport.legacize_request
|
@@ -26,29 +26,27 @@ module Peddler
|
|
26
26
|
res = @transport.execute_request
|
27
27
|
@completed = true if res == "<Success>SUCCESS</Success>"
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
# This is a refund.
|
33
33
|
class Item
|
34
34
|
REFUND_REASONS = %w{ GeneralAdjustment CouldNotShip DifferentItem MerchandiseNotReceived MerchandiseNotAsDescribed }
|
35
|
-
|
35
|
+
|
36
36
|
attr_accessor :order_id, :payments_transaction_id, :refund_amount, :message
|
37
37
|
attr_reader :reason
|
38
|
-
|
38
|
+
|
39
39
|
def initialize(options={})
|
40
40
|
options.each_pair{ |key, value| send("#{key.to_s}=", value) }
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
def reason=(reason)
|
44
44
|
@reason = reason if REFUND_REASONS.include?(reason)
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
def to_s
|
48
48
|
"#{self.order_id}\t#{self.payments_transaction_id}\t#{self.refund_amount}\t#{self.reason}\t#{self.message}\r\n"
|
49
49
|
end
|
50
50
|
end
|
51
|
-
|
52
51
|
end
|
53
|
-
|
54
|
-
end
|
52
|
+
end
|
data/lib/peddler/reports.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
module Peddler
|
2
|
-
|
2
|
+
|
3
3
|
# This module generates and downloads unshipped order reports.
|
4
4
|
# I decided to keep this out of Peddler::LegacyReports because the API is
|
5
5
|
# quite different.
|
6
6
|
module Reports
|
7
|
-
|
7
|
+
|
8
8
|
# This is an unshipped orders report. It is very similar to the feed
|
9
9
|
# objects, so I'm just porting over the class.
|
10
10
|
class UnshippedOrdersReport < Peddler::Feeds::Feed
|
11
11
|
alias :unshipped_orders :batch
|
12
12
|
attr_accessor :starts_at, :ends_at, :scheduled
|
13
|
-
|
13
|
+
|
14
14
|
MAPPED_PARAMS = {
|
15
15
|
'ReportID' => 'id',
|
16
16
|
'StartDate' => 'starts_at',
|
@@ -22,7 +22,7 @@ module Peddler
|
|
22
22
|
'StartedProcessingDate' => 'started_processing_at',
|
23
23
|
'CompletedProcessingDate' => 'completed_processing_at',
|
24
24
|
'CompletedProcesssingDate' => 'completed_processing_at'}
|
25
|
-
|
25
|
+
|
26
26
|
# Creates new unshipped order report. It will send a request to
|
27
27
|
# Amazon to generate the report if the report ID is not already set.
|
28
28
|
def initialize(transport, params={})
|
@@ -37,9 +37,9 @@ module Peddler
|
|
37
37
|
end
|
38
38
|
self
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
private
|
42
|
-
|
42
|
+
|
43
43
|
def refresh_status
|
44
44
|
@transport.modernize_request
|
45
45
|
@transport.query_params.merge!({
|
@@ -48,7 +48,7 @@ module Peddler
|
|
48
48
|
res = @transport.execute_request
|
49
49
|
process_response(res)
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
def generate_report
|
53
53
|
@transport.modernize_request
|
54
54
|
@transport.query_params.merge!({
|
@@ -59,7 +59,7 @@ module Peddler
|
|
59
59
|
res = @transport.execute_request
|
60
60
|
process_response(res)
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
def process_response(res)
|
64
64
|
hash = Hash.from_xml(res)
|
65
65
|
report = Hash.from_xml(res)['Response']['Report'] || Hash.from_xml(res)['Response']['ReportsList']['Report']
|
@@ -73,7 +73,7 @@ module Peddler
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
# This is an unshipped order.
|
78
78
|
class Item
|
79
79
|
attr_accessor :order_id, :order_item_id, :quantity, :ship_date, :carrier_name, :tracking_number, :ship_method
|
@@ -82,16 +82,16 @@ module Peddler
|
|
82
82
|
def initialize(params={})
|
83
83
|
params.each_pair{ |key, value| send("#{key}=", value) }
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
# Validates when setting carrier code.
|
87
87
|
def carrier_code=(carrier_code)
|
88
88
|
@carrier_code = carrier_code if %w{USPS UPS FedEx other}.include?(carrier_code)
|
89
89
|
end
|
90
|
-
|
90
|
+
|
91
91
|
# Outputs a formatted line for the tab-delimited upload file.
|
92
92
|
def to_s
|
93
93
|
"#{@order_id}\t#{@order_item_id}\t#{@quantity}\t#{@ship_date}\t#{@carrier_code}\t#{@carrier_name}\t#{@tracking_number}\t#{@ship_method}\r\n"
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
97
|
-
end
|
97
|
+
end
|
data/lib/peddler/transport.rb
CHANGED
@@ -4,7 +4,7 @@ module Peddler
|
|
4
4
|
super(msg)
|
5
5
|
end
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
# Our work horse. Runs on top of Net::HTTP.
|
9
9
|
class Transport
|
10
10
|
API_HOSTS = {
|
@@ -15,20 +15,20 @@ module Peddler
|
|
15
15
|
:fr => 'secure.amazon.fr',
|
16
16
|
:jp => 'vendornet.amazon.co.jp'
|
17
17
|
}
|
18
|
-
|
18
|
+
|
19
19
|
BASE_HEADERS = {
|
20
20
|
'User-Agent' => "Peddler/#{Peddler::VERSION}",
|
21
21
|
'Content-Type' => 'text/xml;charset=utf-8',
|
22
22
|
'Cookie' => 'x-main=YvjPkwfntqDKun0QEmVRPcTTZDMe?Tn?; ubid-main=002-8989859-9917520; ubid-tacbus=019-5423258-4241018;x-tacbus=vtm4d53DvX@Sc9LxTnAnxsFL3DorwxJa; ubid-tcmacb=087-8055947-0795529; ubid-ty2kacbus=161-5477122-2773524; session-id=087-178254-5924832;session-id-time=950660664'
|
23
23
|
}
|
24
|
-
|
24
|
+
|
25
25
|
BASE_PARAMS = {
|
26
26
|
'Service' => 'MerchantQueryService'
|
27
27
|
}
|
28
|
-
|
28
|
+
|
29
29
|
attr_writer :username, :password
|
30
30
|
attr_accessor :path, :query_params, :headers, :body
|
31
|
-
|
31
|
+
|
32
32
|
#Returns request instance
|
33
33
|
def request
|
34
34
|
req = request_method.new("#{path.gsub(/\/$/, "")}/#{query_string}")
|
@@ -43,7 +43,7 @@ module Peddler
|
|
43
43
|
req.body = body if body
|
44
44
|
req
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
def execute_request
|
48
48
|
begin
|
49
49
|
conn.start do |http|
|
@@ -57,24 +57,24 @@ module Peddler
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
def clear_request
|
62
62
|
self.headers = BASE_HEADERS.dup
|
63
63
|
self.body = nil
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
def legacize_request
|
67
67
|
clear_request
|
68
68
|
self.path = '/exec/panama/seller-admin/'
|
69
69
|
self.query_params = {}
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
def modernize_request
|
73
73
|
clear_request
|
74
74
|
self.path = '/query/'
|
75
75
|
self.query_params = BASE_PARAMS.dup
|
76
76
|
end
|
77
|
-
|
77
|
+
|
78
78
|
def region=(region)
|
79
79
|
@conn = nil
|
80
80
|
region = region.to_sym
|
@@ -84,19 +84,19 @@ module Peddler
|
|
84
84
|
raise PeddlerError.new('Region not recognized')
|
85
85
|
end
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
def url
|
89
89
|
URI.parse("https://#{host}#{path}#{query_string}")
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
def dump_headers(msg)
|
93
93
|
msg.each_header do |k, v|
|
94
94
|
p "#{k}=#{v}"
|
95
95
|
end
|
96
96
|
end
|
97
|
-
|
97
|
+
|
98
98
|
private
|
99
|
-
|
99
|
+
|
100
100
|
#Returns the Net::HTTP instance.
|
101
101
|
def conn
|
102
102
|
if @conn
|
@@ -108,7 +108,7 @@ module Peddler
|
|
108
108
|
@conn = conn
|
109
109
|
end
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
112
|
def request_method
|
113
113
|
if !body.nil? || (query_params && !query_params.empty?)
|
114
114
|
Net::HTTP::Post
|
@@ -116,11 +116,11 @@ module Peddler
|
|
116
116
|
Net::HTTP::Get
|
117
117
|
end
|
118
118
|
end
|
119
|
-
|
119
|
+
|
120
120
|
def host
|
121
121
|
API_HOSTS[@region]
|
122
122
|
end
|
123
|
-
|
123
|
+
|
124
124
|
def query_string
|
125
125
|
if query_params && !query_params.empty?
|
126
126
|
params = query_params.collect do |k, v|
|
@@ -132,4 +132,4 @@ module Peddler
|
|
132
132
|
end
|
133
133
|
end
|
134
134
|
end
|
135
|
-
end
|
135
|
+
end
|
data/lib/peddler.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
# Peddler is a Ruby wrapper to the Amazon Inventory management API.
|
2
2
|
module Peddler
|
3
|
-
VERSION = '0.2.3'
|
4
3
|
end
|
5
4
|
|
6
|
-
require 'active_support'
|
5
|
+
require 'active_support/core_ext/hash'
|
7
6
|
require 'net/https'
|
8
7
|
require 'ostruct'
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
8
|
+
require 'peddler/client'
|
9
|
+
require 'peddler/handlers'
|
10
|
+
require 'peddler/feeds'
|
11
|
+
require 'peddler/inventory'
|
12
|
+
require 'peddler/legacy_reports'
|
13
|
+
require 'peddler/refunds'
|
14
|
+
require 'peddler/reports'
|
15
|
+
require 'peddler/transport'
|
17
16
|
require 'tempfile'
|
18
|
-
require 'time'
|
17
|
+
require 'time'
|
data/mussels.jpg
ADDED
Binary file
|
data/peddler.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'peddler/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = 'peddler'
|
7
|
+
s.version = Peddler::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ['Hakan Ensari']
|
10
|
+
s.email = ['hakan.ensari@papercavalier.com']
|
11
|
+
s.homepage = 'http://github.com/papercavalier/peddler'
|
12
|
+
s.summary = %q{A Ruby wrapper to the Amazon Inventory Management API}
|
13
|
+
s.description = %q{Peddler is a Ruby wrapper to the Amazon Inventory Management API.}
|
14
|
+
|
15
|
+
s.rubyforge_project = 'peddler'
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ['lib']
|
21
|
+
|
22
|
+
s.add_dependency 'activesupport', '>= 2.3.2'
|
23
|
+
s.add_development_dependency 'rdiscount', '~> 1.6.5'
|
24
|
+
s.add_development_dependency 'sdoc-helpers', '~> 0.1.4'
|
25
|
+
s.add_development_dependency 'rspec', '~> 2.0.0'
|
26
|
+
s.add_development_dependency 'vcr', '~> 1.2.0'
|
27
|
+
s.add_development_dependency 'webmock', '~> 1.4.0'
|
28
|
+
end
|
data/spec/peddler/client_spec.rb
CHANGED
@@ -1,47 +1,45 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
module Peddler
|
4
|
-
|
5
4
|
describe Client do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
let(:client) do
|
6
|
+
Peddler::Client.new(
|
7
|
+
:username => 'seller@example.com',
|
8
|
+
:password => 'secret',
|
9
|
+
:region => 'us'
|
10
|
+
)
|
11
11
|
end
|
12
|
-
|
13
|
-
it "
|
14
|
-
|
12
|
+
|
13
|
+
it "returns a new inventory batch" do
|
14
|
+
client.new_inventory_batch.should be_an_instance_of Peddler::Inventory::Batch
|
15
15
|
end
|
16
|
-
|
17
|
-
it "
|
18
|
-
|
16
|
+
|
17
|
+
it "returns a new inventory item" do
|
18
|
+
client.new_inventory_item.should be_an_instance_of Peddler::Inventory::Item
|
19
19
|
end
|
20
|
-
|
21
|
-
it "
|
22
|
-
|
20
|
+
|
21
|
+
it "returns a new order fulfillment feed" do
|
22
|
+
client.new_order_fulfillment_feed.should be_an_instance_of Peddler::Feeds::OrderFulfillment::Batch
|
23
23
|
end
|
24
|
-
|
25
|
-
it "
|
26
|
-
|
24
|
+
|
25
|
+
it "returns a new fulfilled order" do
|
26
|
+
client.new_fulfilled_order.should be_an_instance_of Peddler::Feeds::OrderFulfillment::Item
|
27
27
|
end
|
28
|
-
|
29
|
-
it "
|
30
|
-
|
28
|
+
|
29
|
+
it "returns a new order cancellation feed" do
|
30
|
+
client.new_order_cancellation_feed.should be_an_instance_of Peddler::Feeds::OrderCancellation::Batch
|
31
31
|
end
|
32
|
-
|
33
|
-
it "
|
34
|
-
|
32
|
+
|
33
|
+
it "returns a new cancelled order" do
|
34
|
+
client.new_cancelled_order.should be_an_instance_of Peddler::Feeds::OrderCancellation::Item
|
35
35
|
end
|
36
|
-
|
37
|
-
it "
|
38
|
-
|
36
|
+
|
37
|
+
it "returns a new refund batch" do
|
38
|
+
client.new_refund_batch.should be_an_instance_of Peddler::Refunds::Batch
|
39
39
|
end
|
40
|
-
|
41
|
-
it "
|
42
|
-
|
40
|
+
|
41
|
+
it "returns a new report" do
|
42
|
+
client.new_report(:foo).should be_an_instance_of Peddler::LegacyReports::Report
|
43
43
|
end
|
44
|
-
|
45
44
|
end
|
46
|
-
|
47
45
|
end
|