shipsurance 0.1.2 → 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/Manifest CHANGED
@@ -5,21 +5,30 @@ lib/extensions/hash.rb
5
5
  lib/shipsurance/address.rb
6
6
  lib/shipsurance/base.rb
7
7
  lib/shipsurance/claim.rb
8
+ lib/shipsurance/claim_response.rb
9
+ lib/shipsurance/claim_status.rb
10
+ lib/shipsurance/claim_status_response.rb
8
11
  lib/shipsurance/person.rb
9
12
  lib/shipsurance/record_shipment.rb
13
+ lib/shipsurance/record_shipment_response.rb
10
14
  lib/shipsurance/response.rb
11
15
  lib/shipsurance/shipsurance.rb
12
16
  lib/shipsurance/validation.rb
17
+ lib/shipsurance/validation_response.rb
13
18
  lib/shipsurance/void_record_shipment.rb
19
+ lib/shipsurance/void_record_shipment_response.rb
14
20
  lib/shipsurance.rb
15
21
  Rakefile
16
22
  README.rdoc
17
23
  spec/lib/shipsurance/address_spec.rb
18
24
  spec/lib/shipsurance/claim_spec.rb
25
+ spec/lib/shipsurance/claim_status_spec.rb
19
26
  spec/lib/shipsurance/person_spec.rb
20
27
  spec/lib/shipsurance/record_shipment_spec.rb
21
28
  spec/lib/shipsurance/validation_spec.rb
22
29
  spec/lib/shipsurance/void_record_shipment_spec.rb
30
+ spec/rcov.opts
23
31
  spec/spec.opts
24
32
  spec/spec_helper.rb
33
+ tasks/rspec.rake
25
34
  Manifest
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('shipsurance', '0.1.2') do |p|
5
+ Echoe.new('shipsurance', '0.1.3') do |p|
6
6
  p.description = "Integration gem for the ShipSurance gem"
7
7
  p.url = "http://www.ordercup.com"
8
8
  p.author = "Tim Matheson"
@@ -3,7 +3,7 @@ require 'cgi'
3
3
  class Hash
4
4
  def to_s
5
5
  keys.each do |key|
6
- self[parametize(key.to_s)] = CGI.escape(self[key].to_s)
6
+ self[parametize(key.to_s)] = self[key].to_s
7
7
  delete(key)
8
8
  end
9
9
  self
@@ -4,11 +4,18 @@ require 'active_support'
4
4
  require 'extensions/hash'
5
5
  require 'shipsurance/shipsurance'
6
6
  require 'shipsurance/base'
7
+ require 'shipsurance/response'
8
+ require 'shipsurance/claim_response'
9
+ require 'shipsurance/claim_status_response'
10
+ require 'shipsurance/record_shipment_response'
11
+ require 'shipsurance/void_record_shipment_response'
12
+ require 'shipsurance/validation_response'
7
13
  require 'shipsurance/claim'
14
+ require 'shipsurance/claim_status'
8
15
  require 'shipsurance/record_shipment'
9
16
  require 'shipsurance/void_record_shipment'
10
17
  require 'shipsurance/validation'
11
18
  require 'shipsurance/person'
12
19
  require 'shipsurance/address'
13
- require 'shipsurance/response'
20
+
14
21
 
@@ -48,7 +48,7 @@ module Shipsurance
48
48
  res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
49
49
  case res
50
50
  when Net::HTTPSuccess#, Net::HTTPRedirection
51
- Shipsurance::Response.new(res)
51
+ response(res)
52
52
  else
53
53
  raise Shipsurance::RequestError, res.error!
54
54
  end
@@ -77,6 +77,10 @@ module Shipsurance
77
77
  @resource_class ||= self.class.to_s.split(":").last
78
78
  end
79
79
 
80
+ def response(response)
81
+ "#{self.class}Response".constantize.new(response)
82
+ end
83
+
80
84
  def base_url
81
85
  return RAILS_ENV =~ /production/ ? @@live_base_url : @@test_base_url
82
86
  end
@@ -202,9 +206,12 @@ module Shipsurance
202
206
  def validate_request(post)
203
207
  @@errors.clear
204
208
  required.each do |key|
205
- @@errors << "Missing required parameter #{key.to_s}" unless post.has_key?(key)
209
+ @@errors << "#{key.to_s}" unless post.has_key?(key)
210
+ end
211
+ unless @@errors.empty?
212
+ @@errors.unshift("Missing required #{@@errors.size > 1 ? "parameters" : "parameter"}")
213
+ raise Shipsurance::RequestError, @@errors.join(", ")
206
214
  end
207
- raise Shipsurance::RequestError, @@errors.join(", ") unless @@errors.empty?
208
215
  end
209
216
 
210
217
  def credentials
@@ -87,7 +87,7 @@ module Shipsurance
87
87
  end
88
88
 
89
89
  def add_file_date(date, post = {})
90
- post[:file_date] = date.strftime("%m/%d/%Y %H:%M %p")#format_date(date)
90
+ post[:file_date] = format_date(date)
91
91
  post
92
92
  end
93
93
 
@@ -0,0 +1,15 @@
1
+ module Shipsurance
2
+ class ClaimResponse < Response
3
+ attr_reader :claim_id, :claim_code
4
+
5
+ def initialize(response)
6
+ @response = parse(response)
7
+ @code = @response[0]
8
+ @reason_code = @response[1]
9
+ @claim_id = @response[2]
10
+ @claim_code = @response[3]
11
+ self
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,8 @@
1
+ module Shipsurance
2
+ class ClaimStatus < Base
3
+
4
+ def required
5
+ super.push(:ext_claim_id, :person_last_name, :person_email)
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,14 @@
1
+ module Shipsurance
2
+ class ClaimStatusResponse < Response
3
+ def initialize(response)
4
+ @response = response.body.split("|")
5
+ @code = @response[0]
6
+ @reason_code = @response[1]
7
+ @claim_status_type = @response[2]
8
+ @claim_status_type_description = @response[3]
9
+ @claim_comments = @response[4]
10
+ @last_updated = @response[5]
11
+ self
12
+ end
13
+ end
14
+ end
@@ -118,7 +118,6 @@ module Shipsurance
118
118
  end
119
119
 
120
120
  def add_departure_address_1(departure_address_1, post = {})
121
- puts "Invoked #{add_departure_address_1}"
122
121
  post[:departure_address_1] = departure_address_1
123
122
  post
124
123
  end
@@ -0,0 +1,13 @@
1
+ module Shipsurance
2
+ class RecordShipmentResponse < Response
3
+ attr_reader :recorded_shipment_id
4
+
5
+ def initialize(response)
6
+ @response = parse(response)
7
+ @code = @response[0]
8
+ @reason_code = @response[1]
9
+ @recorded_shipment_id = @response[2]
10
+ self
11
+ end
12
+ end
13
+ end
@@ -1,14 +1,30 @@
1
1
  module Shipsurance
2
2
  class Response
3
- attr_reader :code, :body, :api_response_code, :success, :recorded_shipment_id
3
+ attr_reader :code, :body, :reason_code, :api_response_code
4
4
 
5
5
  def initialize(response)
6
- response_arry = parse(response)
7
- @code, @api_response_code, @body, @recorded_shipment_id = response.code.to_i, response_arry[0].to_i, response_arry[1], response_arry[2]
8
- @success = (@response_code == 1)
6
+ @response_arry = parse(response)
7
+ @code, @api_response_code, @body, @recorded_shipment_id = response.code.to_i, @response_arry[0].to_i, @response_arry[1], @response_arry[2]
8
+ @success = (@api_response_code == 1)
9
9
  self
10
10
  end
11
11
 
12
+ def code
13
+ @code.to_i == 1 ? 200 : @code
14
+ end
15
+
16
+ def body
17
+ @reason_code || @body
18
+ end
19
+
20
+ def success
21
+ @code.to_i == 1
22
+ end
23
+
24
+ def success?
25
+ @success ||= success
26
+ end
27
+
12
28
  def parse(response)
13
29
  response.body.split(",")
14
30
  end
@@ -0,0 +1,19 @@
1
+ module Shipsurance
2
+ class ValidationResponse < Response
3
+
4
+ attr_reader :validation_type, :response_reason, :response
5
+
6
+ def initialize(response)
7
+ @response = parse(response)
8
+ @code = @response[0]
9
+ @reason_code = @response[1]
10
+ @validation_type = @response[2]
11
+ @response = @response[4]
12
+ self
13
+ end
14
+
15
+ def body
16
+ @reason_code
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ module Shipsurance
2
+ class VoidRecordShipmentResponse < Response
3
+
4
+ def initialize(response)
5
+ @response = parse(response)
6
+ @code = @response[0]
7
+ @reason_code = @response[1]
8
+ self
9
+ end
10
+ end
11
+ end
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{shipsurance}
5
- s.version = "0.1.2"
5
+ s.version = "0.1.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Tim Matheson"]
9
- s.date = %q{2009-12-01}
9
+ s.date = %q{2009-12-07}
10
10
  s.description = %q{Integration gem for the ShipSurance gem}
11
11
  s.email = %q{tim.matheson@ordercup.com}
12
- s.extra_rdoc_files = ["lib/extensions/hash.rb", "lib/shipsurance/address.rb", "lib/shipsurance/base.rb", "lib/shipsurance/claim.rb", "lib/shipsurance/person.rb", "lib/shipsurance/record_shipment.rb", "lib/shipsurance/response.rb", "lib/shipsurance/shipsurance.rb", "lib/shipsurance/validation.rb", "lib/shipsurance/void_record_shipment.rb", "lib/shipsurance.rb", "README.rdoc"]
13
- s.files = ["config/credentials.example.yml", "config/credentials.yml", "init.rb", "lib/extensions/hash.rb", "lib/shipsurance/address.rb", "lib/shipsurance/base.rb", "lib/shipsurance/claim.rb", "lib/shipsurance/person.rb", "lib/shipsurance/record_shipment.rb", "lib/shipsurance/response.rb", "lib/shipsurance/shipsurance.rb", "lib/shipsurance/validation.rb", "lib/shipsurance/void_record_shipment.rb", "lib/shipsurance.rb", "Rakefile", "README.rdoc", "spec/lib/shipsurance/address_spec.rb", "spec/lib/shipsurance/claim_spec.rb", "spec/lib/shipsurance/person_spec.rb", "spec/lib/shipsurance/record_shipment_spec.rb", "spec/lib/shipsurance/validation_spec.rb", "spec/lib/shipsurance/void_record_shipment_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "Manifest", "shipsurance.gemspec"]
12
+ s.extra_rdoc_files = ["lib/extensions/hash.rb", "lib/shipsurance/address.rb", "lib/shipsurance/base.rb", "lib/shipsurance/claim.rb", "lib/shipsurance/claim_response.rb", "lib/shipsurance/claim_status.rb", "lib/shipsurance/claim_status_response.rb", "lib/shipsurance/person.rb", "lib/shipsurance/record_shipment.rb", "lib/shipsurance/record_shipment_response.rb", "lib/shipsurance/response.rb", "lib/shipsurance/shipsurance.rb", "lib/shipsurance/validation.rb", "lib/shipsurance/validation_response.rb", "lib/shipsurance/void_record_shipment.rb", "lib/shipsurance/void_record_shipment_response.rb", "lib/shipsurance.rb", "README.rdoc", "tasks/rspec.rake"]
13
+ s.files = ["config/credentials.example.yml", "config/credentials.yml", "init.rb", "lib/extensions/hash.rb", "lib/shipsurance/address.rb", "lib/shipsurance/base.rb", "lib/shipsurance/claim.rb", "lib/shipsurance/claim_response.rb", "lib/shipsurance/claim_status.rb", "lib/shipsurance/claim_status_response.rb", "lib/shipsurance/person.rb", "lib/shipsurance/record_shipment.rb", "lib/shipsurance/record_shipment_response.rb", "lib/shipsurance/response.rb", "lib/shipsurance/shipsurance.rb", "lib/shipsurance/validation.rb", "lib/shipsurance/validation_response.rb", "lib/shipsurance/void_record_shipment.rb", "lib/shipsurance/void_record_shipment_response.rb", "lib/shipsurance.rb", "Rakefile", "README.rdoc", "spec/lib/shipsurance/address_spec.rb", "spec/lib/shipsurance/claim_spec.rb", "spec/lib/shipsurance/claim_status_spec.rb", "spec/lib/shipsurance/person_spec.rb", "spec/lib/shipsurance/record_shipment_spec.rb", "spec/lib/shipsurance/validation_spec.rb", "spec/lib/shipsurance/void_record_shipment_spec.rb", "spec/rcov.opts", "spec/spec.opts", "spec/spec_helper.rb", "tasks/rspec.rake", "Manifest", "shipsurance.gemspec"]
14
14
  s.homepage = %q{http://www.ordercup.com}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Shipsurance", "--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
@@ -8,26 +8,24 @@ describe Shipsurance::Claim do
8
8
  end
9
9
 
10
10
  context " a valid request" do
11
- # TODO, there is some issue with this call
12
- # It complains about fileDate not being set as DateTime but
13
- # the API specifies it should be mm/dd/yyyy format.
14
- # it "should return success" do
15
- # post = @claim.add_person(person)
16
- # @claim.add_recorded_shipment_id(@shipment_id,post)
17
- # @claim.add_ext_carrier_id(1,post)
18
- # @claim.add_consignee_full_name("Tim Matheson", post)
19
- # @claim.add_claim_payment_full_name("Tim Matheson", post)
20
- # @claim.add_claim_payment_address(@address, post)
21
- # @claim.add_claim_payment_phone("9495551212", post)
22
- # @claim.add_file_date(Time.now, post)
23
- # @claim.add_loss_discovered_date(Time.now, post)
24
- # @claim.add_claim_shipment_date(Time.now, post)
25
- # @claim.add_ext_claim_type_id(1, post)
26
- # @claim.add_claim_description("Test #{rand(9999)}", post)
27
- # @claim.add_claim_amount(5.00, post)
28
- # @claim.add_certify_correct(true, post)
29
- # @claim.commit(post).success.should == true
30
- # end
11
+ it "should return success" do
12
+ post = @claim.add_person(person)
13
+ @claim.add_recorded_shipment_id(@shipment_id,post)
14
+ @claim.add_ext_carrier_id(1,post)
15
+ @claim.add_consignee_full_name("Tim Matheson", post)
16
+ @claim.add_claim_payment_full_name("Tim Matheson", post)
17
+ @claim.add_claim_payment_address(@address, post)
18
+ @claim.add_claim_payment_phone("9495551212", post)
19
+ @claim.add_file_date(Time.now, post)
20
+ @claim.add_loss_discovered_date(Time.now, post)
21
+ @claim.add_claim_shipment_date(Time.now, post)
22
+ @claim.add_ext_claim_type_id(1, post)
23
+ @claim.add_claim_description("Test #{rand(9999)}", post)
24
+ @claim.add_claim_amount(5.00, post)
25
+ @claim.add_certify_correct(true, post)
26
+ response = @claim.commit(post)
27
+ response.body.should == "The transaction was accepted."
28
+ end
31
29
  end
32
30
 
33
31
  context " attributes" do
@@ -0,0 +1,58 @@
1
+ require File.dirname(__FILE__) + "/../../spec_helper"
2
+
3
+ describe Shipsurance::ClaimStatus do
4
+ before(:each) do
5
+ @claim_status = Shipsurance::ClaimStatus.new
6
+ @claim = Shipsurance::Claim.new
7
+ @shipment_id = Shipsurance::RecordShipment.new.commit(valid_record_shipment_params).recorded_shipment_id
8
+ @claim_response = @claim.commit({:recorded_shipment_id => @shipment_id}.merge!(add_params(valid_record_shipment_params)))
9
+ end
10
+
11
+ it "should return success" do
12
+ post = {}
13
+ post[:person_last_name] = "Matheson"
14
+ post[:person_email] = CREDENTIALS[:person_email]
15
+ post[:ext_claim_id] = @claim_response.claim_code
16
+ post[:claim_id] = @claim_response.claim_id
17
+ response = @claim_status.commit(post)
18
+ puts post.inspect
19
+ response.reason_code.should == "foo"
20
+ end
21
+
22
+ private
23
+
24
+ def add_params(post = {})
25
+ post[:person_source_identifier] = '1'
26
+ post[:person_first_name] = 'Tim'
27
+ post[:person_last_name] = 'Matheson'
28
+ post[:ext_carrier_id] = '2'
29
+ post[:consignee_full_name] = 'Tim Matheson'
30
+ post[:claim_payment_full_name] = 'Bill Smith'
31
+ post[:claim_payment_address_1] = '123 Test Address'
32
+ post[:claim_payment_city] = 'RSM'
33
+ post[:claim_payment_postal_code] = '92688'
34
+ post[:claim_payment_country] = 'US'
35
+ post[:claim_payment_phone] = '9492945624'
36
+ post[:file_date] = Time.now.strftime("%m/%d/%Y")
37
+ post[:loss_discovered_date] = Time.now.strftime("%m/%d/%Y")
38
+ post[:ext_claim_type_id] = '1'
39
+ post[:claim_description] = 'Test Description'
40
+ post[:claim_amount] = '11.99'
41
+ post[:certify_correct] = '1'
42
+ post[:claim_shipment_date] = Time.now.strftime("%m/%d/%Y")
43
+ post
44
+ end
45
+
46
+
47
+ def valid_record_shipment_params
48
+ {
49
+ :ext_shipment_type_id => 1,
50
+ :ext_carrier_id => 1,
51
+ :carrier_service_name => "UPS",
52
+ :declared_value => 50.00,
53
+ :shipment_date => Time.now.strftime("%m/%d/%Y"),
54
+ :person_email => CREDENTIALS[:person_email],
55
+ :package_description => "Test Description #{rand(9999999)}"
56
+ }
57
+ end
58
+ end
@@ -14,6 +14,7 @@ describe Shipsurance::RecordShipment do
14
14
 
15
15
  it "should return a transaction key given valid params" do
16
16
  response = @record_shipment.commit(valid_request_params)
17
+ response.body.should == "The transaction was accepted."
17
18
  response.recorded_shipment_id.should_not be_nil
18
19
  end
19
20
 
@@ -24,7 +25,7 @@ describe Shipsurance::RecordShipment do
24
25
 
25
26
  it "should return an api response code of 1 given valid params" do
26
27
  response = @record_shipment.commit(valid_request_params)
27
- response.api_response_code.should == 1
28
+ response.code.should == 200
28
29
  end
29
30
  end
30
31
 
@@ -12,7 +12,7 @@ describe Shipsurance::Validation do
12
12
 
13
13
  it "should return an api_response_code of 1 given a valid validation type" do
14
14
  response = @validation.commit({ :validation_type => "activePolicy" })
15
- response.api_response_code.should == 1
15
+ response.code.should == 200
16
16
  end
17
17
 
18
18
  it "should return an error given an invalid validation type" do
@@ -22,6 +22,6 @@ describe Shipsurance::Validation do
22
22
 
23
23
  it "should return an api_response_code of 2 given an invalid validation type" do
24
24
  response = @validation.commit({ :validation_type => "foo" })
25
- response.api_response_code.should == 2
25
+ response.code.should == "2"
26
26
  end
27
27
  end
@@ -0,0 +1 @@
1
+ --exclude "spec/*,gems/*"
@@ -0,0 +1,13 @@
1
+ require 'spec/rake/spectask'
2
+
3
+ namespace :spec do
4
+ desc "Run all specs in spec directory with RCov (excluding plugin specs)"
5
+ Spec::Rake::SpecTask.new(:rcov) do |t|
6
+ t.spec_opts = ['--options', "\"#{File.dirname(__FILE__)}/../spec/spec.opts\""]
7
+ t.spec_files = FileList['spec/**/*/*_spec.rb']
8
+ t.rcov = true
9
+ t.rcov_opts = lambda do
10
+ IO.readlines(File.dirname(__FILE__) + "/../spec/rcov.opts").map {|l| l.chomp.split " "}.flatten
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shipsurance
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Matheson
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-01 00:00:00 -08:00
12
+ date: 2009-12-07 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -24,14 +24,21 @@ extra_rdoc_files:
24
24
  - lib/shipsurance/address.rb
25
25
  - lib/shipsurance/base.rb
26
26
  - lib/shipsurance/claim.rb
27
+ - lib/shipsurance/claim_response.rb
28
+ - lib/shipsurance/claim_status.rb
29
+ - lib/shipsurance/claim_status_response.rb
27
30
  - lib/shipsurance/person.rb
28
31
  - lib/shipsurance/record_shipment.rb
32
+ - lib/shipsurance/record_shipment_response.rb
29
33
  - lib/shipsurance/response.rb
30
34
  - lib/shipsurance/shipsurance.rb
31
35
  - lib/shipsurance/validation.rb
36
+ - lib/shipsurance/validation_response.rb
32
37
  - lib/shipsurance/void_record_shipment.rb
38
+ - lib/shipsurance/void_record_shipment_response.rb
33
39
  - lib/shipsurance.rb
34
40
  - README.rdoc
41
+ - tasks/rspec.rake
35
42
  files:
36
43
  - config/credentials.example.yml
37
44
  - config/credentials.yml
@@ -40,23 +47,32 @@ files:
40
47
  - lib/shipsurance/address.rb
41
48
  - lib/shipsurance/base.rb
42
49
  - lib/shipsurance/claim.rb
50
+ - lib/shipsurance/claim_response.rb
51
+ - lib/shipsurance/claim_status.rb
52
+ - lib/shipsurance/claim_status_response.rb
43
53
  - lib/shipsurance/person.rb
44
54
  - lib/shipsurance/record_shipment.rb
55
+ - lib/shipsurance/record_shipment_response.rb
45
56
  - lib/shipsurance/response.rb
46
57
  - lib/shipsurance/shipsurance.rb
47
58
  - lib/shipsurance/validation.rb
59
+ - lib/shipsurance/validation_response.rb
48
60
  - lib/shipsurance/void_record_shipment.rb
61
+ - lib/shipsurance/void_record_shipment_response.rb
49
62
  - lib/shipsurance.rb
50
63
  - Rakefile
51
64
  - README.rdoc
52
65
  - spec/lib/shipsurance/address_spec.rb
53
66
  - spec/lib/shipsurance/claim_spec.rb
67
+ - spec/lib/shipsurance/claim_status_spec.rb
54
68
  - spec/lib/shipsurance/person_spec.rb
55
69
  - spec/lib/shipsurance/record_shipment_spec.rb
56
70
  - spec/lib/shipsurance/validation_spec.rb
57
71
  - spec/lib/shipsurance/void_record_shipment_spec.rb
72
+ - spec/rcov.opts
58
73
  - spec/spec.opts
59
74
  - spec/spec_helper.rb
75
+ - tasks/rspec.rake
60
76
  - Manifest
61
77
  - shipsurance.gemspec
62
78
  has_rdoc: true