killbill-paypal-express 1.6.4 → 1.6.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fe1f13de94d8a2b969153a632b2535bcad835554
4
- data.tar.gz: 3910bf4a1da4b9dbb589e645030f367e752b5b1f
3
+ metadata.gz: e6edd71974c6e3f234a22b6012786d8311d4145e
4
+ data.tar.gz: b0cf73fbec05c8a238d0575a69d870810cb2c436
5
5
  SHA512:
6
- metadata.gz: 52172874baa3fa108d1a0622f7a7969b268d0747ba3c12f2d369ea0968a31fc9f7637fdec3244ea9c529e8e6c39836b9ae1ee4a345db6517a37e19a6737cc5c4
7
- data.tar.gz: c39b4197ff9a3d91a8887f9e8aac08a947f4337b2160057be4e31999fe877b32aa89334354e5b51d2af311acc85770d99e23d9176e6ebeb3464abcec73502e8e
6
+ metadata.gz: 2d7de8573d9a997cce9dffd8dc470573f9ec220151722d96c9e44dca6f372652c9b7c135b3c6670d9220deaab3ed635e3dd293607f4458eef09403106c498c31
7
+ data.tar.gz: 388ed005eef4307c1105621f39d85f8db4f00b30c2e5124c73a77d1a04e2c19b48f3f8f6d8a8608cffcd25c4536fd222c0502e52aacae02cac4c2c0adb81282e
data/Jarfile CHANGED
@@ -1,6 +1,6 @@
1
- jar 'com.ning.billing:killbill-api', '0.7.8'
2
- jar 'com.ning.billing.plugin:killbill-plugin-api-notification', '0.6.2'
3
- jar 'com.ning.billing.plugin:killbill-plugin-api-payment', '0.6.2'
4
- jar 'com.ning.billing.plugin:killbill-plugin-api-currency', '0.6.2'
5
- jar 'com.ning.billing:killbill-util:tests', '0.7.1'
1
+ jar 'com.ning.billing:killbill-api', '0.8.0'
2
+ jar 'com.ning.billing.plugin:killbill-plugin-api-notification', '0.6.3'
3
+ jar 'com.ning.billing.plugin:killbill-plugin-api-payment', '0.6.3'
4
+ jar 'com.ning.billing.plugin:killbill-plugin-api-currency', '0.6.3'
5
+ jar 'com.ning.billing:killbill-util:tests', '0.8.8'
6
6
  jar 'javax.servlet:javax.servlet-api', '3.0.1'
data/NEWS CHANGED
@@ -1,3 +1,11 @@
1
+ 1.6.5
2
+ Implement payments and refunds search
3
+ Fix amount to cents conversion
4
+ Update to latest killbill (2.0.0)
5
+
6
+ 1.6.4
7
+ Update to latest killbill (1.9.0)
8
+
1
9
  1.6.3
2
10
  Fix bugs for currency conversion during payment/refunds
3
11
 
data/README.md CHANGED
@@ -6,6 +6,9 @@ killbill-paypal-express-plugin
6
6
 
7
7
  Plugin to use Express Checkout as a gateway.
8
8
 
9
+ Release builds are available on [Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.ning.killbill.ruby%22%20AND%20a%3A%22paypal-express-plugin%22) with coordinates `com.ning.killbill.ruby:paypal-express-plugin`.
10
+
11
+
9
12
  Usage
10
13
  -----
11
14
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.6.4
1
+ 1.6.5
@@ -22,9 +22,10 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.rdoc_options << '--exclude' << '.'
24
24
 
25
- s.add_dependency 'killbill', '~> 1.9.0'
25
+ s.add_dependency 'killbill', '~> 2.0.0'
26
26
  s.add_dependency 'activemerchant', '~> 1.36.0'
27
27
  s.add_dependency 'activerecord', '~> 3.2.1'
28
+ s.add_dependency 'money', '~> 6.0.0'
28
29
  s.add_dependency 'sinatra', '~> 1.3.4'
29
30
  if defined?(JRUBY_VERSION)
30
31
  s.add_dependency 'activerecord-jdbcmysql-adapter', '~> 1.2.9'
@@ -17,7 +17,8 @@ module Killbill::PaypalExpress
17
17
  end
18
18
 
19
19
  def process_payment(kb_account_id, kb_payment_id, kb_payment_method_id, amount, currency, call_context = nil, options = {})
20
- amount_in_cents = (amount * 100).to_i
20
+ # Use Money to compute the amount in cents, as it depends on the currency (1 cent of BTC is 1 Satoshi, not 0.01 BTC)
21
+ amount_in_cents = Money.new_with_amount(amount, currency).cents.to_i
21
22
 
22
23
  # If the payment was already made, just return the status
23
24
  paypal_express_transaction = PaypalExpressTransaction.from_kb_payment_id(kb_payment_id) rescue nil
@@ -54,7 +55,8 @@ module Killbill::PaypalExpress
54
55
  end
55
56
 
56
57
  def process_refund(kb_account_id, kb_payment_id, amount, currency, call_context = nil, options = {})
57
- amount_in_cents = (amount * 100).to_i
58
+ # Use Money to compute the amount in cents, as it depends on the currency (1 cent of BTC is 1 Satoshi, not 0.01 BTC)
59
+ amount_in_cents = Money.new_with_amount(amount, currency).cents.to_i
58
60
 
59
61
  # Check for currency conversion
60
62
  actual_amount, actual_currency = convert_amount_currency_if_required(amount_in_cents, currency, kb_payment_id)
@@ -74,11 +76,11 @@ module Killbill::PaypalExpress
74
76
  end
75
77
 
76
78
  def get_refund_info(kb_account_id, kb_payment_id, tenant_context = nil, options = {})
77
- paypal_express_transaction = PaypalExpressTransaction.refund_from_kb_payment_id(kb_payment_id)
79
+ paypal_express_transactions = PaypalExpressTransaction.refunds_from_kb_payment_id(kb_payment_id)
78
80
 
79
81
  # We could also re-fetch it via: @gateway.transaction_details(transaction_id)
80
82
  # but we would need to reconstruct the refund_info object
81
- paypal_express_transaction.paypal_express_response.to_refund_response
83
+ paypal_express_transactions.map { |t| t.paypal_express_response.to_refund_response }
82
84
  end
83
85
 
84
86
  def add_payment_method(kb_account_id, kb_payment_method_id, payment_method_props, set_default = false, call_context = nil, options = {})
@@ -173,6 +175,14 @@ module Killbill::PaypalExpress
173
175
  end
174
176
  end
175
177
 
178
+ def search_payments(search_key, offset = 0, limit = 100, call_context = nil, options = {})
179
+ PaypalExpressResponse.search(search_key, offset, limit, :payment)
180
+ end
181
+
182
+ def search_refunds(search_key, offset = 0, limit = 100, call_context = nil, options = {})
183
+ PaypalExpressResponse.search(search_key, offset, limit, :refund)
184
+ end
185
+
176
186
  def search_payment_methods(search_key, offset = 0, limit = 100, call_context = nil, options = {})
177
187
  PaypalExpressPaymentMethod.search(search_key, offset, limit)
178
188
  end
@@ -125,12 +125,57 @@ module Killbill::PaypalExpress
125
125
  to_killbill_response :refund
126
126
  end
127
127
 
128
+ # VisibleForTesting
129
+ def self.search_query(api_call, search_key, offset = nil, limit = nil)
130
+ t = self.arel_table
131
+
132
+ # Exact matches only
133
+ where_clause = t[:authorization].eq(search_key)
134
+ .or(t[:billing_agreement_id].eq(search_key))
135
+ .or(t[:payment_info_transactionid].eq(search_key))
136
+
137
+ # Only search successful payments and refunds
138
+ where_clause = where_clause.and(t[:api_call].eq(api_call))
139
+ .and(t[:success].eq(true))
140
+
141
+ query = t.where(where_clause)
142
+ .order(t[:id])
143
+
144
+ if offset.blank? and limit.blank?
145
+ # true is for count distinct
146
+ query.project(t[:id].count(true))
147
+ else
148
+ query.skip(offset) unless offset.blank?
149
+ query.take(limit) unless limit.blank?
150
+ query.project(t[Arel.star])
151
+ # Not chainable
152
+ query.distinct
153
+ end
154
+ query
155
+ end
156
+
157
+ def self.search(search_key, offset = 0, limit = 100, type = :payment)
158
+ api_call = type == :payment ? 'charge' : 'refund'
159
+ pagination = Killbill::Plugin::Model::Pagination.new
160
+ pagination.current_offset = offset
161
+ pagination.total_nb_records = self.count_by_sql(self.search_query(api_call, search_key))
162
+ pagination.max_nb_records = self.where(:api_call => api_call, :success => true).count
163
+ pagination.next_offset = (!pagination.total_nb_records.nil? && offset + limit >= pagination.total_nb_records) ? nil : offset + limit
164
+ # Reduce the limit if the specified value is larger than the number of records
165
+ actual_limit = [pagination.max_nb_records, limit].min
166
+ pagination.iterator = StreamyResultSet.new(actual_limit) do |offset,limit|
167
+ self.find_by_sql(self.search_query(api_call, search_key, offset, limit))
168
+ .map { |x| type == :payment ? x.to_payment_response : x.to_refund_response }
169
+ end
170
+ pagination
171
+ end
172
+
128
173
  private
129
174
 
130
175
  def to_killbill_response(type)
131
176
  if paypal_express_transaction.nil?
132
- # payment_info_grossamount is e.g. "100.00" - we need to convert it in cents
133
- amount_in_cents = payment_info_grossamount ? (payment_info_grossamount.to_f * 100).to_i : nil
177
+ # payment_info_grossamount may have a value but we cannot convert it to cents since we don't have the currency
178
+ amount_in_cents = nil
134
179
  currency = nil
135
180
  created_date = created_at
136
181
  first_payment_reference_id = nil
@@ -139,8 +184,8 @@ module Killbill::PaypalExpress
139
184
  amount_in_cents = paypal_express_transaction.amount_in_cents
140
185
  currency = paypal_express_transaction.currency
141
186
  created_date = paypal_express_transaction.created_at
142
- first_payment_reference_id = paypal_express_transaction.paypal_express_txn_id
143
- second_payment_reference_id = nil
187
+ first_reference_id = paypal_express_transaction.paypal_express_txn_id
188
+ second_reference_id = nil
144
189
  end
145
190
 
146
191
  effective_date = created_date
@@ -149,26 +194,29 @@ module Killbill::PaypalExpress
149
194
 
150
195
  if type == :payment
151
196
  p_info_plugin = Killbill::Plugin::Model::PaymentInfoPlugin.new
152
- p_info_plugin.amount = BigDecimal.new(amount_in_cents.to_s) / 100.0 if amount_in_cents
197
+ p_info_plugin.kb_payment_id = kb_payment_id
198
+ p_info_plugin.amount = Money.new(amount_in_cents, currency).to_d if currency
153
199
  p_info_plugin.currency = currency
154
200
  p_info_plugin.created_date = created_date
155
201
  p_info_plugin.effective_date = effective_date
156
202
  p_info_plugin.status = (success ? :PROCESSED : :ERROR)
157
203
  p_info_plugin.gateway_error = gateway_error
158
204
  p_info_plugin.gateway_error_code = gateway_error_code
159
- p_info_plugin.first_payment_reference_id = first_payment_reference_id
160
- p_info_plugin.second_payment_reference_id = second_payment_reference_id
205
+ p_info_plugin.first_payment_reference_id = first_reference_id
206
+ p_info_plugin.second_payment_reference_id = second_reference_id
161
207
  p_info_plugin
162
208
  else
163
209
  r_info_plugin = Killbill::Plugin::Model::RefundInfoPlugin.new
164
- r_info_plugin.amount = BigDecimal.new(amount_in_cents.to_s) / 100.0 if amount_in_cents
210
+ r_info_plugin.kb_payment_id = kb_payment_id
211
+ r_info_plugin.amount = Money.new(amount_in_cents, currency).to_d if currency
165
212
  r_info_plugin.currency = currency
166
213
  r_info_plugin.created_date = created_date
167
214
  r_info_plugin.effective_date = effective_date
168
215
  r_info_plugin.status = (success ? :PROCESSED : :ERROR)
169
216
  r_info_plugin.gateway_error = gateway_error
170
217
  r_info_plugin.gateway_error_code = gateway_error_code
171
- r_info_plugin.reference_id = first_payment_reference_id
218
+ r_info_plugin.first_refund_reference_id = first_reference_id
219
+ r_info_plugin.second_refund_reference_id = second_reference_id
172
220
  r_info_plugin
173
221
  end
174
222
  end
@@ -8,18 +8,11 @@ module Killbill::PaypalExpress
8
8
  :paypal_express_txn_id
9
9
 
10
10
  def self.from_kb_payment_id(kb_payment_id)
11
- single_transaction_from_kb_payment_id :charge, kb_payment_id
11
+ transaction_from_kb_payment_id :charge, kb_payment_id, :single
12
12
  end
13
13
 
14
- def self.refund_from_kb_payment_id(kb_payment_id)
15
- single_transaction_from_kb_payment_id :refund, kb_payment_id
16
- end
17
-
18
- def self.single_transaction_from_kb_payment_id(api_call, kb_payment_id)
19
- paypal_express_transactions = find_all_by_api_call_and_kb_payment_id(api_call, kb_payment_id)
20
- raise "Unable to find Paypal Express transaction id for payment #{kb_payment_id}" if paypal_express_transactions.empty?
21
- raise "Killbill payment mapping to multiple Paypal Express transactions for payment #{kb_payment_id}" if paypal_express_transactions.size > 1
22
- paypal_express_transactions[0]
14
+ def self.refunds_from_kb_payment_id(kb_payment_id)
15
+ transaction_from_kb_payment_id :refund, kb_payment_id, :multiple
23
16
  end
24
17
 
25
18
  def self.find_candidate_transaction_for_refund(kb_payment_id, amount_in_cents)
@@ -38,5 +31,18 @@ module Killbill::PaypalExpress
38
31
 
39
32
  paypal_express_transactions.first
40
33
  end
34
+
35
+ private
36
+
37
+ def self.transaction_from_kb_payment_id(api_call, kb_payment_id, how_many)
38
+ paypal_express_transactions = find_all_by_api_call_and_kb_payment_id(api_call, kb_payment_id)
39
+ raise "Unable to find Paypal Express transaction id for payment #{kb_payment_id}" if paypal_express_transactions.empty?
40
+ if how_many == :single
41
+ raise "Killbill payment mapping to multiple Paypal Express transactions for payment #{kb_payment_id}" if paypal_express_transactions.size > 1
42
+ paypal_express_transactions[0]
43
+ else
44
+ paypal_express_transactions
45
+ end
46
+ end
41
47
  end
42
48
  end
@@ -1,6 +1,7 @@
1
1
  require 'active_record'
2
2
  require 'activemerchant'
3
3
  require 'bigdecimal'
4
+ require 'money'
4
5
  require 'pathname'
5
6
  require 'sinatra'
6
7
  require 'singleton'
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.6.4</version>
28
+ <version>1.6.5</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>
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+
3
+ describe Killbill::PaypalExpress::PaypalExpressResponse do
4
+ before :all do
5
+ Killbill::PaypalExpress::PaypalExpressResponse.delete_all
6
+ end
7
+
8
+ it 'should generate the right SQL query' do
9
+ # Check count query (search query numeric)
10
+ expected_query = "SELECT COUNT(DISTINCT \"paypal_express_responses\".\"id\") FROM \"paypal_express_responses\" WHERE ((\"paypal_express_responses\".\"authorization\" = '1234' OR \"paypal_express_responses\".\"billing_agreement_id\" = '1234') OR \"paypal_express_responses\".\"payment_info_transactionid\" = '1234') AND \"paypal_express_responses\".\"api_call\" = 'charge' AND \"paypal_express_responses\".\"success\" = 't' ORDER BY \"paypal_express_responses\".\"id\""
11
+ # Note that Kill Bill will pass a String, even for numeric types
12
+ Killbill::PaypalExpress::PaypalExpressResponse.search_query('charge', '1234').to_sql.should == expected_query
13
+
14
+ # Check query with results (search query numeric)
15
+ expected_query = "SELECT DISTINCT \"paypal_express_responses\".* FROM \"paypal_express_responses\" WHERE ((\"paypal_express_responses\".\"authorization\" = '1234' OR \"paypal_express_responses\".\"billing_agreement_id\" = '1234') OR \"paypal_express_responses\".\"payment_info_transactionid\" = '1234') AND \"paypal_express_responses\".\"api_call\" = 'charge' AND \"paypal_express_responses\".\"success\" = 't' ORDER BY \"paypal_express_responses\".\"id\" LIMIT 10 OFFSET 0"
16
+ # Note that Kill Bill will pass a String, even for numeric types
17
+ Killbill::PaypalExpress::PaypalExpressResponse.search_query('charge', '1234', 0, 10).to_sql.should == expected_query
18
+
19
+ # Check count query (search query string)
20
+ expected_query = "SELECT COUNT(DISTINCT \"paypal_express_responses\".\"id\") FROM \"paypal_express_responses\" WHERE ((\"paypal_express_responses\".\"authorization\" = 'XXX' OR \"paypal_express_responses\".\"billing_agreement_id\" = 'XXX') OR \"paypal_express_responses\".\"payment_info_transactionid\" = 'XXX') AND \"paypal_express_responses\".\"api_call\" = 'charge' AND \"paypal_express_responses\".\"success\" = 't' ORDER BY \"paypal_express_responses\".\"id\""
21
+ Killbill::PaypalExpress::PaypalExpressResponse.search_query('charge', 'XXX').to_sql.should == expected_query
22
+
23
+ # Check query with results (search query string)
24
+ expected_query = "SELECT DISTINCT \"paypal_express_responses\".* FROM \"paypal_express_responses\" WHERE ((\"paypal_express_responses\".\"authorization\" = 'XXX' OR \"paypal_express_responses\".\"billing_agreement_id\" = 'XXX') OR \"paypal_express_responses\".\"payment_info_transactionid\" = 'XXX') AND \"paypal_express_responses\".\"api_call\" = 'charge' AND \"paypal_express_responses\".\"success\" = 't' ORDER BY \"paypal_express_responses\".\"id\" LIMIT 10 OFFSET 0"
25
+ Killbill::PaypalExpress::PaypalExpressResponse.search_query('charge', 'XXX', 0, 10).to_sql.should == expected_query
26
+ end
27
+
28
+ it 'should search all fields' do
29
+ do_search('foo').size.should == 0
30
+
31
+ pm = Killbill::PaypalExpress::PaypalExpressResponse.create :api_call => 'charge',
32
+ :kb_payment_id => '11-22-33-44',
33
+ :authorization => '55-66-77-88',
34
+ :billing_agreement_id => 38102343,
35
+ :payment_info_transactionid => 'order-id-1',
36
+ :success => true
37
+
38
+ # Wrong api_call
39
+ ignored1 = Killbill::PaypalExpress::PaypalExpressResponse.create :api_call => 'add_payment_method',
40
+ :kb_payment_id => pm.kb_payment_id,
41
+ :authorization => pm.authorization,
42
+ :billing_agreement_id => pm.billing_agreement_id,
43
+ :payment_info_transactionid => pm.payment_info_transactionid,
44
+ :success => true
45
+
46
+ # Not successful
47
+ ignored2 = Killbill::PaypalExpress::PaypalExpressResponse.create :api_call => 'charge',
48
+ :kb_payment_id => pm.kb_payment_id,
49
+ :authorization => pm.authorization,
50
+ :billing_agreement_id => pm.billing_agreement_id,
51
+ :payment_info_transactionid => pm.payment_info_transactionid,
52
+ :success => false
53
+
54
+ do_search('foo').size.should == 0
55
+ do_search(pm.authorization).size.should == 1
56
+ do_search(pm.billing_agreement_id).size.should == 1
57
+ do_search(pm.payment_info_transactionid).size.should == 1
58
+
59
+ pm2 = Killbill::PaypalExpress::PaypalExpressResponse.create :api_call => 'charge',
60
+ :kb_payment_id => '11-22-33-44',
61
+ :authorization => '11-22-33-44',
62
+ :billing_agreement_id => pm.billing_agreement_id,
63
+ :payment_info_transactionid => 'order-id-2',
64
+ :success => true
65
+
66
+ do_search('foo').size.should == 0
67
+ do_search(pm.authorization).size.should == 1
68
+ do_search(pm.billing_agreement_id).size.should == 2
69
+ do_search(pm.payment_info_transactionid).size.should == 1
70
+ do_search(pm2.authorization).size.should == 1
71
+ do_search(pm2.billing_agreement_id).size.should == 2
72
+ do_search(pm2.payment_info_transactionid).size.should == 1
73
+ end
74
+
75
+ private
76
+
77
+ def do_search(search_key)
78
+ pagination = Killbill::PaypalExpress::PaypalExpressResponse.search(search_key)
79
+ pagination.current_offset.should == 0
80
+ results = pagination.iterator.to_a
81
+ pagination.total_nb_records.should == results.size
82
+ results
83
+ end
84
+ end
@@ -85,9 +85,10 @@ describe Killbill::PaypalExpress::PaymentPlugin do
85
85
  response.success.should be_true
86
86
 
87
87
  # Check we can retrieve the refund
88
- refund_response = @plugin.get_refund_info @pm.kb_account_id, kb_payment_id
89
- refund_response.amount.should == amount
90
- refund_response.status.should == :PROCESSED
88
+ refund_responses = @plugin.get_refund_info @pm.kb_account_id, kb_payment_id
89
+ refund_responses.size.should == 1
90
+ refund_responses[0].amount.should == amount
91
+ refund_responses[0].status.should == :PROCESSED
91
92
 
92
93
  # Try another payment to verify the BAID
93
94
  second_amount = BigDecimal.new("94.23")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-paypal-express
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.4
4
+ version: 1.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kill Bill core team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-02 00:00:00.000000000 Z
11
+ date: 2014-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: killbill
@@ -16,12 +16,12 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 1.9.0
19
+ version: 2.0.0
20
20
  requirement: !ruby/object:Gem::Requirement
21
21
  requirements:
22
22
  - - ~>
23
23
  - !ruby/object:Gem::Version
24
- version: 1.9.0
24
+ version: 2.0.0
25
25
  prerelease: false
26
26
  type: :runtime
27
27
  - !ruby/object:Gem::Dependency
@@ -52,6 +52,20 @@ dependencies:
52
52
  version: 3.2.1
53
53
  prerelease: false
54
54
  type: :runtime
55
+ - !ruby/object:Gem::Dependency
56
+ name: money
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 6.0.0
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: 6.0.0
67
+ prerelease: false
68
+ type: :runtime
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: sinatra
57
71
  version_requirements: !ruby/object:Gem::Requirement
@@ -170,6 +184,7 @@ files:
170
184
  - release.sh
171
185
  - spec/paypal_express/base_plugin_spec.rb
172
186
  - spec/paypal_express/paypal_express_payment_method_spec.rb
187
+ - spec/paypal_express/paypal_express_response_spec.rb
173
188
  - spec/paypal_express/remote/integration_spec.rb
174
189
  - spec/paypal_express/streamy_result_set_spec.rb
175
190
  - spec/spec_helper.rb
@@ -202,6 +217,7 @@ summary: Plugin to use Express Checkout as a gateway.
202
217
  test_files:
203
218
  - spec/paypal_express/base_plugin_spec.rb
204
219
  - spec/paypal_express/paypal_express_payment_method_spec.rb
220
+ - spec/paypal_express/paypal_express_response_spec.rb
205
221
  - spec/paypal_express/remote/integration_spec.rb
206
222
  - spec/paypal_express/streamy_result_set_spec.rb
207
223
  - spec/spec_helper.rb