shipsurance 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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