rock_rms 4.15.0 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 41cc0f6ea6c7f644e2c873726cd21b454cb35a35
4
- data.tar.gz: 9cd54ba92b23df44095a2a6f5d2cc0f6e7075083
3
+ metadata.gz: 9cdeba8c6445c28a97f6ae95e91b65731de96d4b
4
+ data.tar.gz: 8c6fd406588607a4c3f445f89c27a023ef3f78d1
5
5
  SHA512:
6
- metadata.gz: 9bcc9f2d9c7c74dae5ed291b9e426674dd310d7cf8b16c53e891bcca04d13a92e675b2e84510c0614b6dd7a2b4c4b050e1958909ff724ef028155cef19cd7929
7
- data.tar.gz: 686a624238a10934efec2a9f557146bea99843f987e497a5b9c550402d1e4044ed511d04a366263976de17dba1e4ca7129ceadbd63c478012dd481662a28444d
6
+ metadata.gz: e87c92795588370db7d42df6ced5654be5c365a457df0e1a343ee80e1e79e5605203977ad2e160725097e10b7c2543cf5f58e3371b6b6b51fb3b64e0149fd9af
7
+ data.tar.gz: 818a07c9b3fa588175a9ad62c686e5c08342dc3971d2ff62b6a3b178ae566a55b715fe1b935582a738cd185dd6ee274e1896e09de6d421da17bb7bd4235ade8c
@@ -27,6 +27,7 @@ module RockRMS
27
27
  include RockRMS::Client::Person
28
28
  include RockRMS::Client::PhoneNumber
29
29
  include RockRMS::Client::RecurringDonation
30
+ include RockRMS::Client::RecurringDonationDetail
30
31
  include RockRMS::Client::Refund
31
32
  include RockRMS::Client::RefundReason
32
33
  include RockRMS::Client::SavedPaymentMethod
@@ -38,13 +39,14 @@ module RockRMS
38
39
  include RockRMS::Client::WorkflowActivityType
39
40
  include RockRMS::Client::WorkflowType
40
41
 
41
- attr_reader :url, :username, :password, :logger, :cookie, :connection
42
+ attr_reader :url, :username, :password, :logger, :cookie, :connection, :adapter
42
43
 
43
- def initialize(url:, username:, password:, logger: true)
44
+ def initialize(url:, username:, password:, logger: true, adapter: Faraday.default_adapter)
44
45
  @url = "#{url}/api/"
45
46
  @username = username
46
47
  @password = password
47
48
  @logger = logger
49
+ @adapter = adapter
48
50
  @cookie = auth['set-cookie']
49
51
  end
50
52
 
@@ -92,7 +94,7 @@ module RockRMS
92
94
  conn.response :logger if logger
93
95
  conn.response :oj
94
96
  conn.use FaradayMiddleware::RockRMSErrorHandler
95
- conn.adapter Faraday.default_adapter
97
+ conn.adapter adapter
96
98
  end
97
99
  end
98
100
  end
@@ -1,5 +1,11 @@
1
1
  module RockRMS
2
2
  class Error < StandardError; end
3
+ class BadRequest < Error; end
4
+ class Forbidden < Error; end
5
+ class GatewayTimeout < Error; end
6
+ class InternalServerError < Error; end
7
+ class NotFound < Error; end
8
+ class Unauthorized < Error; end
3
9
  end
4
10
 
5
11
  require 'faraday'
@@ -9,6 +15,18 @@ module FaradayMiddleware
9
15
 
10
16
  def on_complete(env)
11
17
  case env[:status]
18
+ when 400
19
+ raise RockRMS::BadRequest, "#{env[:status]}: #{env[:body]} #{env[:url]}"
20
+ when 401
21
+ raise RockRMS::Unauthorized, "#{env[:status]}: #{env[:body]} #{env[:url]}"
22
+ when 403
23
+ raise RockRMS::Forbidden, "#{env[:status]}: #{env[:body]} #{env[:url]}"
24
+ when 404
25
+ raise RockRMS::NotFound, "#{env[:status]}: #{env[:body]} #{env[:url]}"
26
+ when 500
27
+ raise RockRMS::InternalServerError, "#{env[:status]}: #{env[:body]} #{env[:url]}"
28
+ when 504
29
+ raise RockRMS::GatewayTimeout, "#{env[:status]}: #{env[:body]} #{env[:url]}"
12
30
  when ERROR_STATUSES
13
31
  raise RockRMS::Error, "#{env[:status]}: #{env[:body]} #{env[:url]}"
14
32
  end
@@ -20,6 +20,7 @@ module RockRMS
20
20
  gateway_id: nil,
21
21
  gateway_schedule_id: nil,
22
22
  next_payment_date:,
23
+ payment_detail_id: nil,
23
24
  source_type_id: 10,
24
25
  transaction_code: nil,
25
26
  start_date:
@@ -32,6 +33,7 @@ module RockRMS
32
33
  'NextPaymentDate' => next_payment_date,
33
34
  'IsActive' => active,
34
35
  'FinancialGatewayId' => gateway_id,
36
+ 'FinancialPaymentDetailId' => payment_detail_id,
35
37
  'TransactionCode' => transaction_code,
36
38
  'ScheduledTransactionDetails' => translate_funds(funds),
37
39
  'GatewayScheduleId' => gateway_schedule_id,
@@ -45,11 +47,13 @@ module RockRMS
45
47
  id,
46
48
  next_payment_date:,
47
49
  transaction_code: nil,
50
+ payment_detail_id: nil,
48
51
  active: nil
49
52
  )
50
53
  options = { 'NextPaymentDate' => next_payment_date }
51
- options['TransactionCode'] = transaction_code if transaction_code
52
- options['IsActive'] = active if !active.nil?
54
+ options['FinancialPaymentDetailId'] = payment_detail_id if payment_detail_id
55
+ options['TransactionCode'] = transaction_code if transaction_code
56
+ options['IsActive'] = active if !active.nil?
53
57
 
54
58
  patch(recurring_donation_path(id), options)
55
59
  end
@@ -0,0 +1,19 @@
1
+ module RockRMS
2
+ class Client
3
+ module RecurringDonationDetail
4
+ def update_recurring_donation_detail(id, fund_id: nil, amount: nil)
5
+ options = {}
6
+ options['AccountId'] = fund_id if fund_id
7
+ options['Amount'] = amount if amount
8
+
9
+ patch(recurring_donation_detail_path(id), options)
10
+ end
11
+
12
+ private
13
+
14
+ def recurring_donation_detail_path(id = nil)
15
+ id ? "FinancialScheduledTransactionDetails/#{id}" : 'FinancialScheduledTransactionDetails'
16
+ end
17
+ end
18
+ end
19
+ end
@@ -11,10 +11,11 @@ module RockRMS
11
11
  Response::TransactionDetail.format(res)
12
12
  end
13
13
 
14
- def update_transaction_detail(id, fund_id:)
15
- options = {
16
- 'AccountId' => fund_id
17
- }
14
+ def update_transaction_detail(id, fund_id: nil, fee_amount: nil)
15
+ options = {}
16
+ options['AccountId'] = fund_id if fund_id
17
+ options['FeeAmount'] = fee_amount if fee_amount
18
+
18
19
  patch(transaction_detail_path(id), options)
19
20
  end
20
21
 
@@ -3,7 +3,8 @@ module RockRMS
3
3
  class RecurringDonationDetails < Base
4
4
  MAP = {
5
5
  amount: 'Amount',
6
- fund_id: 'AccountId'
6
+ fund_id: 'AccountId',
7
+ id: 'Id'
7
8
  }.freeze
8
9
 
9
10
  def format_single(data)
@@ -3,6 +3,7 @@ module RockRMS
3
3
  class TransactionDetail < Base
4
4
  MAP = {
5
5
  id: 'Id',
6
+ fee_amount: 'FeeAmount',
6
7
  fund: 'Account',
7
8
  fund_id: 'AccountId',
8
9
  amount: 'Amount'
@@ -1,3 +1,3 @@
1
1
  module RockRMS
2
- VERSION = '4.15.0'.freeze
2
+ VERSION = '5.1.0'.freeze
3
3
  end
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.add_runtime_dependency 'faraday_middleware-parse_oj'
26
26
  s.add_runtime_dependency 'json'
27
27
 
28
- s.add_development_dependency 'bundler', '~> 1.15'
28
+ s.add_development_dependency 'bundler', '~> 2.0'
29
29
  s.add_development_dependency 'dotenv'
30
30
  s.add_development_dependency 'pry'
31
31
  s.add_development_dependency 'rake', '~> 10.4'
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RockRMS::Client::RecurringDonationDetail, type: :model do
4
+ include_context 'resource specs'
5
+
6
+ describe '#update_recurring_donation_detail' do
7
+ subject(:resource) do
8
+ client.update_recurring_donation_detail(
9
+ 123,
10
+ fund_id: 2,
11
+ amount: 100.0
12
+ )
13
+ end
14
+
15
+ it 'returns nothing' do
16
+ expect(client.update_recurring_donation_detail(123, fund_id: 5, amount: 100.0)).to eq(nil)
17
+ end
18
+
19
+ it 'passes options' do
20
+ expect(client).to receive(:patch)
21
+ .with(
22
+ 'FinancialScheduledTransactionDetails/123',
23
+ 'AccountId' => 2,
24
+ 'Amount' => 100.0
25
+ ).and_call_original
26
+ resource
27
+ end
28
+ end
29
+ end
@@ -49,7 +49,7 @@ RSpec.describe RockRMS::Client::RecurringDonation, type: :model do
49
49
  end
50
50
 
51
51
  describe '#update_recurring_donation(id)' do
52
- it 'queries updates the recurring donation' do
52
+ it 'updates the recurring donation' do
53
53
  expect(client).to receive(:patch)
54
54
  .with(
55
55
  'FinancialScheduledTransactions/123',
@@ -137,6 +137,7 @@ RSpec.describe RockRMS::Client::RecurringDonation, type: :model do
137
137
  'NextPaymentDate' => '2010-01-01',
138
138
  'IsActive' => true,
139
139
  'FinancialGatewayId' => nil,
140
+ 'FinancialPaymentDetailId' => nil,
140
141
  'TransactionCode' => 'asdf',
141
142
  'ScheduledTransactionDetails' => [{ 'Amount' => 450, 'AccountId' => 2 }],
142
143
  'GatewayScheduleId' => nil,
@@ -76,7 +76,8 @@ class RockMock < Sinatra::Base
76
76
  'FinancialBatches/:id',
77
77
  'FinancialScheduledTransactions/:id',
78
78
  'FinancialTransactions/:id',
79
- 'FinancialTransactionDetails/:id'
79
+ 'FinancialTransactionDetails/:id',
80
+ 'FinancialScheduledTransactionDetails/:id',
80
81
  ].each do |end_point|
81
82
  patch "/api/#{end_point}" do
82
83
  content_type :json
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rock_rms
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.15.0
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taylor Brooks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-01 00:00:00.000000000 Z
11
+ date: 2020-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.15'
75
+ version: '2.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.15'
82
+ version: '2.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: dotenv
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -202,6 +202,7 @@ files:
202
202
  - lib/rock_rms/resources/person.rb
203
203
  - lib/rock_rms/resources/phone_number.rb
204
204
  - lib/rock_rms/resources/recurring_donation.rb
205
+ - lib/rock_rms/resources/recurring_donation_detail.rb
205
206
  - lib/rock_rms/resources/refund.rb
206
207
  - lib/rock_rms/resources/refund_reason.rb
207
208
  - lib/rock_rms/resources/saved_payment_method.rb
@@ -253,6 +254,7 @@ files:
253
254
  - spec/rock_rms/resources/payment_detail_spec.rb
254
255
  - spec/rock_rms/resources/person_spec.rb
255
256
  - spec/rock_rms/resources/phone_number_spec.rb
257
+ - spec/rock_rms/resources/recurring_donation_detail_spec.rb
256
258
  - spec/rock_rms/resources/recurring_donation_spec.rb
257
259
  - spec/rock_rms/resources/refund_reason_spec.rb
258
260
  - spec/rock_rms/resources/refund_spec.rb