samurai 0.2.23 → 0.2.24

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.
@@ -9,7 +9,7 @@ GIT
9
9
  PATH
10
10
  remote: .
11
11
  specs:
12
- samurai (0.2.23)
12
+ samurai (0.2.24)
13
13
  activeresource (>= 2.2.2)
14
14
 
15
15
  GEM
@@ -38,7 +38,7 @@ class Samurai::PaymentMethod < Samurai::Base
38
38
  def process_response_errors
39
39
  if respond_to?(:messages) && self.messages
40
40
  self.messages.each do |message|
41
- self.errors.add message.context.gsub(/\./, ' '), message.key
41
+ self.errors.add message.context, message.description
42
42
  end
43
43
  end
44
44
  end
@@ -70,7 +70,7 @@ class Samurai::Transaction < Samurai::Base
70
70
  if self.processor_response && self.processor_response.messages
71
71
  self.processor_response.messages.each do |message|
72
72
  if message.subclass == 'error'
73
- self.errors.add message.context.gsub(/\./, ' '), message.key
73
+ self.errors.add message.context, message.description
74
74
  end
75
75
  end
76
76
  end
@@ -1,3 +1,3 @@
1
1
  module Samurai
2
- VERSION = "0.2.23".freeze
2
+ VERSION = "0.2.24".freeze
3
3
  end
@@ -2,39 +2,81 @@ require 'spec_helper'
2
2
 
3
3
  describe "processing purchases" do
4
4
 
5
- before :each do
6
- payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
7
- @purchase = Samurai::Processor.purchase(payment_method_token, 1.0, :billing_reference=>rand(1000))
8
- end
9
-
10
- it "should process successfully" do
11
- @purchase.processor_response.success.should be_true
12
- end
5
+ describe 'for a successful transaction' do
6
+ before :each do
7
+ @payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
8
+ @purchase = Samurai::Processor.purchase(@payment_method_token, 1.0, :billing_reference=>rand(1000))
9
+ end
13
10
 
14
- it "should be able to void a recent purchase" do
15
- void = @purchase.void
16
- void.processor_response.success.should be_true
17
- end
11
+ it "should process successfully" do
12
+ @purchase.processor_response.success.should be_true
13
+ end
14
+
15
+ it "should be able to void a recent purchase" do
16
+ void = @purchase.void
17
+ void.processor_response.success.should be_true
18
+ end
19
+
20
+ it "should not be able to credit a recent purchase" do
21
+ credit = @purchase.credit
22
+ credit.processor_response.success.should be_false
23
+ end
24
+
25
+ it "should be able to reverse a recent purchase" do
26
+ reverse = @purchase.reverse
27
+ reverse.processor_response.success.should be_true
28
+ end
29
+
30
+ it "should be able to reverse a settled purchase" do
31
+ pending "currently we cannot force settle a purchase, so can't test this properly"
32
+ reverse = @purchase.reverse
33
+ reverse.processor_response.success.should be_true
34
+ end
18
35
 
19
- it "should not be able to credit a recent purchase" do
20
- credit = @purchase.credit
21
- credit.processor_response.success.should be_false
36
+ it "should be able to credit a settled purchase" do
37
+ pending "currently we cannot force settle a purchase, so can't test this properly"
38
+ credit = @purchase.credit
39
+ credit.processor_response.success.should be_true
40
+ end
22
41
  end
23
42
 
24
- it "should be able to reverse a recent purchase" do
25
- reverse = @purchase.reverse
26
- reverse.processor_response.success.should be_true
43
+ describe 'for a declined transaction' do
44
+ before :each do
45
+ @payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
46
+ @purchase = Samurai::Processor.purchase(@payment_method_token, 1.02)
47
+ end
48
+
49
+ it "should process" do
50
+ @purchase.processor_response.success.should be_false
51
+ [@purchase.errors['processor.transaction']].flatten.first.should == 'The card was declined.'
52
+ end
27
53
  end
28
54
 
29
- it "should be able to reverse a settled purchase" do
30
- pending "currently we cannot force settle a purchase, so can't test this properly"
31
- reverse = @purchase.reverse
32
- reverse.processor_response.success.should be_true
55
+
56
+ describe 'for a invalid card number transaction' do
57
+ before :each do
58
+ @payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
59
+ @purchase = Samurai::Processor.purchase(@payment_method_token, 1.07)
60
+ end
61
+
62
+ it "should process" do
63
+ @purchase.processor_response.success.should be_false
64
+ [@purchase.errors['input.card_number']].flatten.first.should == 'The card number was invalid.'
65
+ end
33
66
  end
34
67
 
35
- it "should be able to credit a settled purchase" do
36
- pending "currently we cannot force settle a purchase, so can't test this properly"
37
- credit = @purchase.credit
38
- credit.processor_response.success.should be_true
68
+ describe 'for a expired card transaction' do
69
+ before :each do
70
+ @payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
71
+ @purchase = Samurai::Processor.purchase(@payment_method_token, 1.08)
72
+ end
73
+
74
+ it "should process" do
75
+ @purchase.processor_response.success.should be_false
76
+ [@purchase.errors['input.expiry_month']].flatten.first.should == 'The expiration date month was invalid, or prior to today.'
77
+ [@purchase.errors['input.expiry_year']].flatten.first.should == 'The expiration date year was invalid, or prior to today.'
78
+ end
39
79
  end
80
+
81
+
40
82
  end
@@ -38,41 +38,43 @@ Samurai.options = {
38
38
  require 'logger'
39
39
  ActiveResource::Base.logger = Logger.new(STDOUT)
40
40
 
41
- module ActiveResource
42
- class Connection
43
- private
44
- # Makes a request to the remote service.
45
- def request(method, path, *arguments)
46
- result = ActiveSupport::Notifications.instrument("request.active_resource") do |payload|
47
- payload[:method] = method
48
- payload[:request_uri] = "#{site.scheme}://#{site.host}:#{site.port}#{path}"
49
- payload[:request_arguments] = arguments
50
- payload[:result] = http.send(method, path, *arguments)
41
+ if [ActiveResource::VERSION::MAJOR, ActiveResource::VERSION::MINOR].compact.join('.').to_f >= 3.0
42
+ module ActiveResource
43
+ class Connection
44
+ private
45
+ # Makes a request to the remote service.
46
+ def request(method, path, *arguments)
47
+ result = ActiveSupport::Notifications.instrument("request.active_resource") do |payload|
48
+ payload[:method] = method
49
+ payload[:request_uri] = "#{site.scheme}://#{site.host}:#{site.port}#{path}"
50
+ payload[:request_arguments] = arguments
51
+ payload[:result] = http.send(method, path, *arguments)
52
+ end
53
+ handle_response(result)
54
+ rescue Timeout::Error => e
55
+ raise TimeoutError.new(e.message)
56
+ rescue OpenSSL::SSL::SSLError => e
57
+ raise SSLError.new(e.message)
51
58
  end
52
- handle_response(result)
53
- rescue Timeout::Error => e
54
- raise TimeoutError.new(e.message)
55
- rescue OpenSSL::SSL::SSLError => e
56
- raise SSLError.new(e.message)
57
- end
59
+ end
58
60
  end
59
- end
60
61
 
61
- module ActiveResource
62
- class VerboseLogSubscriber < ActiveSupport::LogSubscriber
63
- def request(event)
64
- result = event.payload[:result]
65
- info "#{event.payload[:method].to_s.upcase} #{event.payload[:request_uri]}"
66
- event.payload[:request_arguments].each {|s| debug s }
67
- info "--> %d %s %d (%.1fms)" % [result.code, result.message, result.body.to_s.length, event.duration]
68
- debug result.body.to_s
69
- end
62
+ module ActiveResource
63
+ class VerboseLogSubscriber < ActiveSupport::LogSubscriber
64
+ def request(event)
65
+ result = event.payload[:result]
66
+ info "#{event.payload[:method].to_s.upcase} #{event.payload[:request_uri]}"
67
+ event.payload[:request_arguments].each {|s| debug s }
68
+ info "--> %d %s %d (%.1fms)" % [result.code, result.message, result.body.to_s.length, event.duration]
69
+ debug result.body.to_s
70
+ end
70
71
 
71
- def logger
72
- ActiveResource::Base.logger
72
+ def logger
73
+ ActiveResource::Base.logger
74
+ end
73
75
  end
74
76
  end
75
- end
76
77
 
77
- ActiveSupport::Notifications.unsubscribe "request.active_resource"
78
- ActiveResource::VerboseLogSubscriber.attach_to :active_resource
78
+ ActiveSupport::Notifications.unsubscribe "request.active_resource"
79
+ ActiveResource::VerboseLogSubscriber.attach_to :active_resource
80
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samurai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.23
4
+ version: 0.2.24
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2011-11-04 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activeresource
17
- requirement: &70268836094780 !ruby/object:Gem::Requirement
17
+ requirement: &70345403388140 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 2.2.2
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70268836094780
25
+ version_requirements: *70345403388140
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: bundler
28
- requirement: &70268836094280 !ruby/object:Gem::Requirement
28
+ requirement: &70345403387640 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.0.0
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *70268836094280
36
+ version_requirements: *70345403387640
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: rspec
39
- requirement: &70268836093800 !ruby/object:Gem::Requirement
39
+ requirement: &70345403387140 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 2.6.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70268836093800
47
+ version_requirements: *70345403387140
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: fakeweb
50
- requirement: &70268836093420 !ruby/object:Gem::Requirement
50
+ requirement: &70345403386760 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70268836093420
58
+ version_requirements: *70345403386760
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: ruby-debug19
61
- requirement: &70268836092920 !ruby/object:Gem::Requirement
61
+ requirement: &70345403386220 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,7 +66,7 @@ dependencies:
66
66
  version: '0'
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70268836092920
69
+ version_requirements: *70345403386220
70
70
  description: If you are an online merchant and using samurai.feefighters.com, this
71
71
  gem will make your life easy. Integrate with the samurai.feefighters.com portal
72
72
  and process transaction.