killbill-paypal-express 1.0.14 → 1.0.15

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/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.14
1
+ 1.0.15
@@ -129,7 +129,40 @@ module Killbill::PaypalExpress
129
129
  end
130
130
 
131
131
  def reset_payment_methods(kb_account_id, payment_methods)
132
- # No-op
132
+ return if payment_methods.nil?
133
+
134
+ paypal_pms = PaypalExpressPaymentMethod.from_kb_account_id(kb_account_id.to_s)
135
+
136
+ payment_methods.delete_if do |payment_method_info_plugin|
137
+ should_be_deleted = false
138
+ paypal_pms.each do |paypal_pm|
139
+ # Do paypal_pm and payment_method_info_plugin represent the same PayPal payment method?
140
+ if paypal_pm.external_payment_method_id == payment_method_info_plugin.external_payment_method_id
141
+ # Do we already have a kb_payment_method_id?
142
+ if paypal_pm.kb_payment_method_id == payment_method_info_plugin.payment_method_id.to_s
143
+ should_be_deleted = true
144
+ break
145
+ elsif paypal_pm.kb_payment_method_id.nil?
146
+ # We didn't have the kb_payment_method_id - update it
147
+ paypal_pm.kb_payment_method_id = payment_method_info_plugin.payment_method_id.to_s
148
+ should_be_deleted = paypal_pm.save
149
+ break
150
+ # Otherwise the same BAID points to 2 different kb_payment_method_id. This should never happen,
151
+ # but we cowardly will insert a second row below
152
+ end
153
+ end
154
+ end
155
+
156
+ should_be_deleted
157
+ end
158
+
159
+ # The remaining elements in payment_methods are not in our table (this should never happen?!)
160
+ payment_methods.each do |payment_method_info_plugin|
161
+ PaypalExpressPaymentMethod.create :kb_account_id => payment_method_info_plugin.account_id.to_s,
162
+ :kb_payment_method_id => payment_method_info_plugin.payment_method_id.to_s,
163
+ :paypal_express_baid => payment_method_info_plugin.external_payment_method_id,
164
+ :paypal_express_token => 'unknown (created by reset)'
165
+ end
133
166
  end
134
167
 
135
168
  private
@@ -6,6 +6,8 @@ module Killbill::PaypalExpress
6
6
  :paypal_express_baid,
7
7
  :paypal_express_token
8
8
 
9
+ alias_attribute :external_payment_method_id, :paypal_express_baid
10
+
9
11
  def self.from_kb_account_id(kb_account_id)
10
12
  find_all_by_kb_account_id_and_is_deleted(kb_account_id, false)
11
13
  end
@@ -32,10 +34,6 @@ module Killbill::PaypalExpress
32
34
  end
33
35
 
34
36
  def to_payment_method_response
35
- external_payment_method_id = paypal_express_baid
36
- # No concept of default payment method in Paypal Express
37
- is_default = false
38
-
39
37
  properties = []
40
38
  properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'payerId', paypal_express_payer_id)
41
39
  properties << Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, 'baid', paypal_express_baid)
@@ -60,11 +58,12 @@ module Killbill::PaypalExpress
60
58
  end
61
59
 
62
60
  def to_payment_method_info_response
63
- external_payment_method_id = paypal_express_baid
64
- # No concept of default payment method in Paypal Express
65
- is_default = false
66
-
67
61
  Killbill::Plugin::Model::PaymentMethodInfoPlugin.new(kb_account_id, kb_payment_method_id, is_default, external_payment_method_id)
68
62
  end
63
+
64
+ def is_default
65
+ # No concept of default payment method in Paypal Express
66
+ false
67
+ end
69
68
  end
70
69
  end
data/pom.xml CHANGED
@@ -25,7 +25,7 @@
25
25
  <groupId>com.ning.killbill.ruby</groupId>
26
26
  <artifactId>paypal-express-plugin</artifactId>
27
27
  <packaging>pom</packaging>
28
- <version>1.0.14</version>
28
+ <version>1.0.15</version>
29
29
  <name>paypal-express-plugin</name>
30
30
  <url>http://github.com/killbill/killbill-paypal-express-plugin</url>
31
31
  <description>Plugin for accessing paypal as a payment gateway</description>
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'logger'
3
2
 
4
3
  describe Killbill::PaypalExpress::PaymentPlugin do
5
4
  before(:each) do
@@ -10,10 +9,11 @@ describe Killbill::PaypalExpress::PaymentPlugin do
10
9
  :signature: 'signature'
11
10
  :login: 'login'
12
11
  :password: 'password'
12
+ # As defined by spec_helper.rb
13
13
  :database:
14
14
  :adapter: 'sqlite3'
15
- :database: 'shouldntmatter.db'
16
- eos
15
+ :database: 'test.db'
16
+ eos
17
17
  file.close
18
18
 
19
19
  @plugin = Killbill::PaypalExpress::PaymentPlugin.new
@@ -25,7 +25,55 @@ eos
25
25
  end
26
26
  end
27
27
 
28
- it "should start and stop correctly" do
28
+ it 'should start and stop correctly' do
29
29
  @plugin.stop_plugin
30
30
  end
31
+
32
+ it 'should reset payment methods' do
33
+ kb_account_id = '129384'
34
+
35
+ @plugin.get_payment_methods(kb_account_id, false, nil).size.should == 0
36
+ verify_pms kb_account_id, 0
37
+
38
+ # Create a pm with a kb_payment_method_id
39
+ Killbill::PaypalExpress::PaypalExpressPaymentMethod.create :kb_account_id => kb_account_id,
40
+ :kb_payment_method_id => 'kb-1',
41
+ :paypal_express_token => 'doesnottmatter',
42
+ :paypal_express_baid => 'paypal-1'
43
+ verify_pms kb_account_id, 1
44
+
45
+ # Add some in KillBill and reset
46
+ payment_methods = []
47
+ # Random order... Shouldn't matter...
48
+ payment_methods << Killbill::Plugin::Model::PaymentMethodInfoPlugin.new(kb_account_id, 'kb-3', false, 'paypal-3')
49
+ payment_methods << Killbill::Plugin::Model::PaymentMethodInfoPlugin.new(kb_account_id, 'kb-2', false, 'paypal-2')
50
+ payment_methods << Killbill::Plugin::Model::PaymentMethodInfoPlugin.new(kb_account_id, 'kb-4', false, 'paypal-4')
51
+ @plugin.reset_payment_methods kb_account_id, payment_methods
52
+ verify_pms kb_account_id, 4
53
+
54
+ # Add a payment method without a kb_payment_method_id
55
+ Killbill::PaypalExpress::PaypalExpressPaymentMethod.create :kb_account_id => kb_account_id,
56
+ :paypal_express_token => 'doesnottmatter',
57
+ :paypal_express_baid => 'paypal-5'
58
+ @plugin.get_payment_methods(kb_account_id, false, nil).size.should == 5
59
+
60
+ # Verify we can match it
61
+ payment_methods << Killbill::Plugin::Model::PaymentMethodInfoPlugin.new(kb_account_id, 'kb-5', false, 'paypal-5')
62
+ @plugin.reset_payment_methods kb_account_id, payment_methods
63
+ verify_pms kb_account_id, 5
64
+
65
+ @plugin.stop_plugin
66
+ end
67
+
68
+ private
69
+
70
+ def verify_pms(kb_account_id, size)
71
+ pms = @plugin.get_payment_methods(kb_account_id, false, nil)
72
+ pms.size.should == size
73
+ pms.each do |pm|
74
+ pm.account_id.should == kb_account_id
75
+ pm.is_default.should == false
76
+ pm.external_payment_method_id.should == 'paypal-' + pm.payment_method_id.split('-')[1]
77
+ end
78
+ end
31
79
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'bundler'
2
2
  require 'paypal_express'
3
3
 
4
+ require 'logger'
5
+
4
6
  require 'rspec'
5
7
 
6
8
  RSpec.configure do |config|
@@ -11,8 +13,8 @@ end
11
13
 
12
14
  require 'active_record'
13
15
  ActiveRecord::Base.establish_connection(
14
- :adapter => 'sqlite3',
15
- :database => 'test.db'
16
+ :adapter => 'sqlite3',
17
+ :database => 'test.db'
16
18
  )
17
19
  # Create the schema
18
20
  require File.expand_path(File.dirname(__FILE__) + '../../db/schema.rb')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-paypal-express
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.14
4
+ version: 1.0.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-03 00:00:00.000000000 Z
12
+ date: 2013-06-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: killbill