blastramp 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,11 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- blastramp (0.0.2)
4
+ blastramp (0.0.3)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
+ activesupport (3.0.8)
9
10
  builder (3.0.0)
10
11
  crack (0.1.8)
11
12
  diff-lcs (1.1.2)
@@ -39,6 +40,7 @@ PLATFORMS
39
40
  ruby
40
41
 
41
42
  DEPENDENCIES
43
+ activesupport (~> 3.0.3)
42
44
  blastramp!
43
45
  mocha (~> 0.9.8)
44
46
  rspec (~> 2.3.0)
data/README.md CHANGED
@@ -22,16 +22,13 @@ Usage example
22
22
  inventory_count.total_shipped
23
23
 
24
24
  # Create order:
25
- order = Blastramp::OrderUpload.new
26
- order.session = blastramp
25
+ order = Blastramp::Order.new
27
26
 
28
27
  order.order_id = '123'
29
28
  order.order_date = Time.now.strftime("%m/%d/%Y")
30
29
  order.start_date = Time.now.strftime("%m/%d/%Y")
31
30
  order.expiry_date = 1.month.from_now.strftime("%m/%d/%Y")
32
- order.num_of_cartons = 1
33
- order.weight = 1
34
- order.ship_method = order.shipping_service
31
+ order.ship_method = 'UPS Worldwide Standard'
35
32
  order.warehouse_id = '0001'
36
33
 
37
34
  ship_address = Blastramp::Address.new
@@ -40,20 +37,20 @@ Usage example
40
37
  ship_address.line2 = 'Apt 205'
41
38
  ship_address.city = 'Springfield'
42
39
  ship_address.provstate = 'IL'
43
- ship_address.postalcode = '45678'
44
40
  ship_address.country = 'USA'
45
41
  ship_address.phone = '555-555-5555'
46
42
  order.ship_address = ship_address
43
+ order.bill_address = ship_address
47
44
 
48
45
  order_item = Blastramp::OrderItem.new
49
46
  order_item.order_id = '123'
50
47
  order_item.sku = 'AAA-01-XX'
51
48
  order_item.quantity = 2
52
49
  order_item.item_value = 12.99
53
- order_item.warehouse_id = '0001'
54
50
  order.order_items << order_item
55
51
 
56
- order.save
52
+ order_upload = Blastramp::OrderUpload.new(blastramp, order)
53
+ order_upload.submit
57
54
 
58
55
  Credits
59
56
  -------
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
+ s.add_development_dependency "activesupport", "~> 3.0.3"
22
23
  s.add_development_dependency "rspec", "~> 2.3.0"
23
24
  s.add_development_dependency "mocha", "~> 0.9.8"
24
25
  s.add_development_dependency "savon", "~> 0.8.0.beta.3"
@@ -1,8 +1,15 @@
1
- $LOAD_PATH << File.expand_path(File.join(*%w[ .. lib ]), File.dirname(__FILE__))
1
+ require 'active_support/ordered_hash'
2
2
  require 'savon'
3
+
4
+ $LOAD_PATH << File.expand_path(File.join(*%w[ .. lib ]), File.dirname(__FILE__))
3
5
  require 'ext'
6
+ require 'blastramp/entity'
7
+ require 'blastramp/address'
4
8
  require 'blastramp/inventory_count'
5
9
  require 'blastramp/inventory_count_query'
10
+ require 'blastramp/order'
11
+ require 'blastramp/order_item'
12
+ require 'blastramp/order_upload'
6
13
  require 'blastramp/session'
7
14
 
8
15
  module Blastramp
@@ -0,0 +1,41 @@
1
+ module Blastramp
2
+ class Address < Entity
3
+ has_properties :name, :line1, :line2, :line3, :city, :provstate, :country, :phone, :fax, :email, :web, :contact
4
+
5
+ def initialize_defaults
6
+ self.name = '' # Name as it appears on the ship to address label.
7
+ self.line1 = '' # Street information (line 1) to appear on the ship to address label. Max total length of line1, line2 and line3 is 200 character
8
+ self.line2 = ''
9
+ self.line3 = ''
10
+ self.city = '' # City name as on the ship to address label
11
+ self.provstate = '' # Province/State as it appears on the ship to address label
12
+ self.country = 'CA' # Country name as it appears on the ship to address label.
13
+ self.phone = '--' # Phone number (any format). If not known submit "--"
14
+ self.fax = '--' # Fax number (any format). If not known submit "--"
15
+ self.email = '--' # Email address. If not known submit "--"
16
+ self.web = '--' # Web site URL If not known submit "--"
17
+ self.contact = '' # Contact person's full name at the location.
18
+ end
19
+
20
+ # Returns OrderedHash with the properties of Address in the correct order, camelcased and ready
21
+ # to be sent via SOAP
22
+ def soap_data
23
+ data = ActiveSupport::OrderedHash.new
24
+ data['name'] = name
25
+ data['line1'] = line1
26
+ data['line2'] = line2
27
+ data['line3'] = line3
28
+ data['city'] = city
29
+ data['provstate'] = provstate
30
+ data['country'] = country
31
+ data['phone'] = phone
32
+ data['fax'] = fax
33
+ data['email'] = email
34
+ data['web'] = web
35
+ data['contact'] = contact
36
+
37
+ return data
38
+ end
39
+
40
+ end
41
+ end
@@ -0,0 +1,53 @@
1
+ module Blastramp
2
+ class Entity
3
+ # Internal accessors
4
+ attr_accessor :session
5
+
6
+ class << self
7
+ def has_properties(*properties)
8
+ @properties = properties
9
+ properties.each do |property|
10
+ unless instance_methods.collect(&:to_s).include?(property.to_s)
11
+ # Create property accessors that loads the full Entity from the API if necessary
12
+ define_method "#{property}" do
13
+ instance_variable_get("@#{property}")
14
+ end
15
+ end
16
+
17
+ # Just use regular writers
18
+ attr_writer property
19
+ end
20
+ end
21
+
22
+ def properties
23
+ @properties || []
24
+ end
25
+ end
26
+
27
+ def initialize(values = {})
28
+ initialize_defaults
29
+ update_properties(values)
30
+ end
31
+
32
+ def initialize_defaults
33
+ nil
34
+ end
35
+
36
+ def inspect
37
+ props = self.class.properties.collect { |p| "#{p}=#{self.send(p).inspect}" }
38
+ "#<#{self.class}:#{self.object_id}, #{props.join(', ')}>"
39
+ end
40
+
41
+ # Updates properties of Entity with the values from hash
42
+ def update_properties(hash)
43
+ hash.each do |key, value|
44
+ self.send("#{key}=", value)
45
+ end
46
+ end
47
+
48
+ # Returns OrderedHash with the data structure to send to the API
49
+ def soap_data
50
+ end
51
+
52
+ end
53
+ end
@@ -16,7 +16,8 @@ module Blastramp
16
16
 
17
17
  def find(sku)
18
18
  # Get a list of InventoryCounts from Blastramp
19
- response = session.request 'InventoryCountQuery' do
19
+ endpoint = "http://www.ioperate.net/ws/order/orderws.asmx?wsdl"
20
+ response = session.request endpoint, 'InventoryCountQuery' do
20
21
  http.headers["SOAPAction"] = "http://chrome52/webservices/InventoryCountQuery"
21
22
 
22
23
  soap.body = {
@@ -0,0 +1,65 @@
1
+ module Blastramp
2
+ class Order < Entity
3
+ has_properties :order_id, :po, :order_date, :start_date, :expiry_date, :num_of_cartons, :weight, :ship_method, :order_terms, :order_type, :order_currency, :order_tax, :warehouse_currency, :warehouse_id, :note, :season
4
+
5
+ # Associations
6
+ attr_accessor :order_items, :ship_address, :bill_address
7
+
8
+ def initialize
9
+ super
10
+ @order_items = []
11
+ @ship_address = Blastramp::Address.new
12
+ @bill_address = Blastramp::Address.new
13
+ end
14
+
15
+ def initialize_defaults
16
+ self.order_id = 0 # The order number. If it is to be determined by Blastramp then submit "TBD"
17
+ self.po = 0 # Customer purchase order number
18
+ self.order_date = Time.now.strftime("%m/%d/%Y") # The order date as dd/mm/yyyy
19
+ self.start_date = Time.now.strftime("%m/%d/%Y") # The orders start date as dd/mm/yyyy. The earliest date the order is expected to be released to the warehouse
20
+ self.expiry_date = (Time.now + 186400).strftime("%m/%d/%Y") # The orders expiry date as dd/mm/yyyy. The latest date the order would be released to the warehouse
21
+ self.num_of_cartons = 0 #N umber of cartons expected in the order. Unknown (and default) is "0"
22
+ self.weight = 0.0 # Estimated weight of the order. Unknown (and default) is "0.0"
23
+ self.ship_method = nil # Description of the desired shipping method. More detail is better: if known submit carrier, service description and service code. A list of valid values to be used must be provided to Blastramp
24
+ self.order_terms = "Terms Unknown" # Description of the order terms. Unknown (and default) "Terms Unknown"
25
+ self.order_type = 'P' # P := Pick and Pack. C := Crossdock.
26
+ self.order_currency = 'CAD' # IATA Currency of the order. Default is "CAD"
27
+ self.order_tax = nil # Tax rate to be applied to the order. Default is the current Canada GST rate.
28
+ self.warehouse_currency = 'CAD' # IATA used by the warehouse DC. Default is "CAD"
29
+ self.warehouse_id = '0001' # The iOperate identifier for the DC handling the order. Default is "0001"
30
+ self.note = nil # Other notes or instructions to be attached to the order
31
+ self.season = nil # The season code to which the order would apply. All available code must be provided to Chrome52
32
+ end
33
+
34
+ # Returns OrderedHash with the properties of CurrentInvoice in the correct order, camelcased and ready
35
+ # to be sent via SOAP
36
+ def soap_data
37
+ data = ActiveSupport::OrderedHash.new
38
+ data['orderid'] = order_id
39
+ data['po'] = po
40
+ data['orderDate'] = order_date
41
+ data['startDate'] = start_date
42
+ data['expiryDate'] = expiry_date
43
+ data['numOfCartons'] = num_of_cartons
44
+ data['weight'] = weight
45
+ data['shipMethod'] = ship_method
46
+ data['orderTerms'] = order_terms
47
+ data['orderType'] = order_type
48
+ data['orderCurrency'] = order_currency
49
+ data['orderTax'] = order_tax
50
+ data['warehouseCurrency'] = warehouse_currency
51
+ data['warehouseid'] = warehouse_id
52
+ data['note'] = note
53
+ data['season'] = season
54
+ data['shipAddress'] = ship_address.soap_data
55
+ data['billAddress'] = bill_address.soap_data
56
+ data['orderItems'] = []
57
+ order_items.each do |i|
58
+ data['orderItems'] << {'OrderItem' => i.soap_data}
59
+ end
60
+
61
+ return data
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,33 @@
1
+ module Blastramp
2
+ class OrderItem < Entity
3
+ has_properties :order_id, :sku, :quantity, :item_value, :line_note, :carton, :warehouse_id, :category_id
4
+
5
+ def initialize_defaults
6
+ self.order_id = 0 # The orderID. Should equal the orderID in the Order
7
+ self.sku = 0 # The item sku as in the item list as provided to Blastramp
8
+ self.quantity = 0 # Quantity of this item included in the order
9
+ self.item_value = 0.0 # Monetary value of each item in the order currency.
10
+ self.line_note = '' # Other notes or instructions attached to this order item.
11
+ self.carton = '' # Carton identifier for a cross dock order.
12
+ self.warehouse_id = '0001' # The iOperate identifier for the DC handling the order (should be the same as in the order). Default is "0001"
13
+ self.category_id = '0001' # The inventory category id to which this product type belongs. Default is "0001"
14
+ end
15
+
16
+ # Returns OrderedHash with the properties of CurrentInvoice in the correct order, camelcased and ready
17
+ # to be sent via SOAP
18
+ def soap_data
19
+ data = ActiveSupport::OrderedHash.new
20
+ data['orderid'] = order_id
21
+ data['sku'] = sku
22
+ data['quantity'] = quantity
23
+ data['itemValue'] = item_value
24
+ data['lineNote'] = line_note
25
+ data['carton'] = carton
26
+ data['warehouseid'] = warehouse_id
27
+ data['categoryid'] = category_id
28
+
29
+ return data
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,26 @@
1
+ module Blastramp
2
+ class OrderUpload
3
+ # Associations
4
+ attr_reader :session
5
+ attr_reader :order
6
+
7
+ def initialize(session, order)
8
+ @session = session
9
+ @order = order
10
+ end
11
+
12
+ def submit
13
+ # Submit order upload to Blastramp
14
+ endpoint = "http://www.ioperate.net/ws/order/orderws.asmx?wsdl"
15
+ response = session.request endpoint, 'OrderUpload' do
16
+ http.headers["SOAPAction"] = "http://chrome52/webservices/OrderUpload"
17
+
18
+ soap.body = {
19
+ 'VendorCode' => session.vendor_code,
20
+ 'VendorAccessKey' => session.vendor_access_key,
21
+ 'Batch' => {:order => order.soap_data}
22
+ }
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,16 +1,19 @@
1
1
  module Blastramp
2
2
  class Session
3
3
  attr_accessor :vendor_code, :vendor_access_key
4
+ attr_accessor :endpoint
4
5
 
5
6
  def initialize(vendor_code, vendor_access_key)
6
7
  self.vendor_code = vendor_code
7
8
  self.vendor_access_key = vendor_access_key
9
+ self.endpoint = nil
8
10
  end
9
11
 
10
12
  # Returns the Savon::Client used to connect to Blastramp
11
13
  def client
12
14
  @client ||= Savon::Client.new do
13
- wsdl.document = "http://www.ioperate.net/ws/inventory/inventoryws.asmx?wsdl"
15
+ wsdl.document = self.endpoint
16
+ # wsdl.document = "http://www.ioperate.net/ws/inventory/inventoryws.asmx?wsdl"
14
17
  #
15
18
  # wsdl.endpoint = "http://www.ioperate.net/ws/inventory/inventoryws.asmx"
16
19
  # wsdl.namespace = "http://chrome52/webservices"
@@ -22,7 +25,8 @@ module Blastramp
22
25
  @inventory_counts ||= InventoryCountQuery.new(self)
23
26
  end
24
27
 
25
- def request(action, &block)
28
+ def request(ep, action, &block)
29
+ self.endpoint = ep
26
30
  response = client.request :soap, action, &block
27
31
  response_hash = response.to_hash
28
32
  action = action.snake_case
@@ -1,3 +1,4 @@
1
1
  module Blastramp
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
4
+
@@ -0,0 +1,10 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Blastramp::Address do
4
+ let(:session) { stub_session }
5
+ subject { Blastramp::Address }
6
+
7
+ it "inherits from Blastramp::Entity" do
8
+ Blastramp::Address.ancestors.should include(Blastramp::Entity)
9
+ end
10
+ end
@@ -0,0 +1,49 @@
1
+ require './spec/spec_helper'
2
+
3
+ class SpecEntity < Blastramp::Entity
4
+ has_properties :foo, :baz
5
+
6
+ def existing_method; end
7
+ end
8
+
9
+ describe Blastramp::Entity do
10
+ let(:session) { stub_session }
11
+
12
+ describe "class methods" do
13
+ subject { SpecEntity }
14
+
15
+ describe "new" do
16
+ subject { Blastramp::Entity.new }
17
+
18
+ it "creates a new instance" do
19
+ subject.should be_instance_of(Blastramp::Entity)
20
+ end
21
+
22
+ it "initializes the entity with values from the given hash" do
23
+ entity = SpecEntity.new(:foo => 'bar', :baz => 'qux')
24
+ entity.foo.should == 'bar'
25
+ entity.baz.should == 'qux'
26
+ end
27
+ end
28
+
29
+ describe "has_properties" do
30
+ it "creates getter for all properties" do
31
+ subject.expects(:define_method).with('name')
32
+ subject.expects(:define_method).with('age')
33
+ subject.has_properties :name, :age
34
+ end
35
+
36
+ it "creates setter for all properties" do
37
+ subject.expects(:attr_writer).with(:name)
38
+ subject.expects(:attr_writer).with(:age)
39
+ subject.has_properties :name, :age
40
+ end
41
+
42
+ it "does not clobber existing methods" do
43
+ subject.expects(:define_method).with('existing_method').never
44
+ subject.has_properties :existing_method
45
+ end
46
+
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,10 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Blastramp::OrderItem do
4
+ let(:session) { stub_session }
5
+ subject { Blastramp::OrderItem }
6
+
7
+ it "inherits from Blastramp::Entity" do
8
+ Blastramp::OrderItem.ancestors.should include(Blastramp::Entity)
9
+ end
10
+ end
@@ -0,0 +1,16 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Blastramp::Order do
4
+ subject { Blastramp::Order.new }
5
+
6
+ it "inherits from Blastramp::Entity" do
7
+ Blastramp::Order.ancestors.should include(Blastramp::Entity)
8
+ end
9
+
10
+ describe "new" do
11
+ it "initializes order_items as an empty array" do
12
+ subject.order_items.should == []
13
+ end
14
+ end
15
+
16
+ end
@@ -0,0 +1,25 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Blastramp::OrderUpload do
4
+ let(:session) { stub_session }
5
+ let(:order) { stub_order }
6
+ subject { Blastramp::OrderUpload.new(session, order) }
7
+
8
+ describe "new" do
9
+ it "stores session" do
10
+ subject.session.should === session
11
+ end
12
+ end
13
+
14
+ describe "order_upload" do
15
+
16
+ it "uses OrderUpload on API" do
17
+ savon.expects('OrderUpload').with(
18
+ 'VendorCode' => 'ABC',
19
+ 'VendorAccessKey' => 'TWX45IX2R9G35394',
20
+ 'Batch' => {:order => order.soap_data}).returns(:success)
21
+ subject.submit
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
3
+ <soap:Body>
4
+ <OrderUploadResponse xmlns="http://chrome52/webservices/">
5
+ <OrderUploadResult>
6
+ <result>SUCCESS</result>
7
+ <error/>
8
+ <orderids>
9
+ <string>12345</string>
10
+ <string>67890</string>
11
+ </orderids>
12
+ </OrderUploadResult>
13
+ </OrderUploadResponse>
14
+ </soap:Body>
15
+ </soap:Envelope>
@@ -34,3 +34,8 @@ end
34
34
  def stub_session
35
35
  Blastramp::Session.new('ABC', 'TWX45IX2R9G35394')
36
36
  end
37
+
38
+ def stub_order
39
+ order = Blastramp::Order.new
40
+ end
41
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 3
9
- version: 0.0.3
8
+ - 4
9
+ version: 0.0.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - cnantais
@@ -18,9 +18,24 @@ date: 2011-06-29 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- name: rspec
21
+ name: activesupport
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 3
30
+ - 0
31
+ - 3
32
+ version: 3.0.3
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
24
39
  none: false
25
40
  requirements:
26
41
  - - ~>
@@ -31,11 +46,11 @@ dependencies:
31
46
  - 0
32
47
  version: 2.3.0
33
48
  type: :development
34
- version_requirements: *id001
49
+ version_requirements: *id002
35
50
  - !ruby/object:Gem::Dependency
36
51
  name: mocha
37
52
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
39
54
  none: false
40
55
  requirements:
41
56
  - - ~>
@@ -46,11 +61,11 @@ dependencies:
46
61
  - 8
47
62
  version: 0.9.8
48
63
  type: :development
49
- version_requirements: *id002
64
+ version_requirements: *id003
50
65
  - !ruby/object:Gem::Dependency
51
66
  name: savon
52
67
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
68
+ requirement: &id004 !ruby/object:Gem::Requirement
54
69
  none: false
55
70
  requirements:
56
71
  - - ~>
@@ -63,11 +78,11 @@ dependencies:
63
78
  - 3
64
79
  version: 0.8.0.beta.3
65
80
  type: :development
66
- version_requirements: *id003
81
+ version_requirements: *id004
67
82
  - !ruby/object:Gem::Dependency
68
83
  name: savon_spec
69
84
  prerelease: false
70
- requirement: &id004 !ruby/object:Gem::Requirement
85
+ requirement: &id005 !ruby/object:Gem::Requirement
71
86
  none: false
72
87
  requirements:
73
88
  - - ~>
@@ -78,7 +93,7 @@ dependencies:
78
93
  - 6
79
94
  version: 0.1.6
80
95
  type: :development
81
- version_requirements: *id004
96
+ version_requirements: *id005
82
97
  description: Blastramp Shipping Services Client Library for polling inventory and submitting shipping orders.
83
98
  email:
84
99
  - cnantais@gmail.com
@@ -97,14 +112,25 @@ files:
97
112
  - Rakefile
98
113
  - blastramp.gemspec
99
114
  - lib/blastramp.rb
115
+ - lib/blastramp/address.rb
116
+ - lib/blastramp/entity.rb
100
117
  - lib/blastramp/inventory_count.rb
101
118
  - lib/blastramp/inventory_count_query.rb
119
+ - lib/blastramp/order.rb
120
+ - lib/blastramp/order_item.rb
121
+ - lib/blastramp/order_upload.rb
102
122
  - lib/blastramp/session.rb
103
123
  - lib/blastramp/version.rb
104
124
  - lib/ext.rb
125
+ - spec/blastramp/address_spec.rb
126
+ - spec/blastramp/entity_spec.rb
105
127
  - spec/blastramp/inventory_count_query_spec.rb
128
+ - spec/blastramp/order_item_spec.rb
129
+ - spec/blastramp/order_spec.rb
130
+ - spec/blastramp/order_upload_spec.rb
106
131
  - spec/blastramp/session_spec.rb
107
132
  - spec/fixtures/inventory_count_query/many.xml
133
+ - spec/fixtures/order_upload/success.xml
108
134
  - spec/fixtures/wsdl.xml
109
135
  - spec/spec_helper.rb
110
136
  has_rdoc: true
@@ -140,8 +166,14 @@ signing_key:
140
166
  specification_version: 3
141
167
  summary: Blastramp Shipping Services Client Library
142
168
  test_files:
169
+ - spec/blastramp/address_spec.rb
170
+ - spec/blastramp/entity_spec.rb
143
171
  - spec/blastramp/inventory_count_query_spec.rb
172
+ - spec/blastramp/order_item_spec.rb
173
+ - spec/blastramp/order_spec.rb
174
+ - spec/blastramp/order_upload_spec.rb
144
175
  - spec/blastramp/session_spec.rb
145
176
  - spec/fixtures/inventory_count_query/many.xml
177
+ - spec/fixtures/order_upload/success.xml
146
178
  - spec/fixtures/wsdl.xml
147
179
  - spec/spec_helper.rb