balanced 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/CONTRIBUTORS CHANGED
@@ -4,3 +4,5 @@ Alex Notov
4
4
  Josh Deeden
5
5
  Ivan Lyutov
6
6
  Alex Sharp
7
+ Marc Sherry
8
+ Joonas Bergius
@@ -7,17 +7,11 @@ module Balanced
7
7
  class BankAccount
8
8
  include Balanced::Resource
9
9
 
10
- def self.has_account?
11
- self.respond_to?('account') && !self.account.nil?
12
- end
13
-
14
10
  def self.uri
15
- # Override the default nesting -- bank accounts can be toplevel now
16
- if !self.has_account?
17
- self.collection_path
18
- else
19
- self.class.uri
20
- end
11
+ # Override the default nesting -- bank accounts can be top-level now
12
+ # but they can also be nested under marketplaces, which is what we
13
+ # want to default to unless explicitly set
14
+ self.collection_path
21
15
  end
22
16
 
23
17
  def initialize attributes = {}
@@ -28,6 +22,10 @@ module Balanced
28
22
  super attributes
29
23
  end
30
24
 
25
+ def has_account?
26
+ self.respond_to? 'account' and !self.account.nil?
27
+ end
28
+
31
29
  # Creates a Debit of funds from this BankAccount to your Marketplace's escrow account.
32
30
  #
33
31
  # @param [String] appears_on_statement_as If nil then Balanced will use
@@ -55,18 +53,28 @@ module Balanced
55
53
  options = args.last.is_a?(Hash) ? args.pop : {}
56
54
  amount = args[0] || options.fetch(:amount) { nil }
57
55
  description = args[1] || options.fetch(:description) { nil }
58
- if !self.class.has_account?
59
- Credit.new(
60
- :amount => amount,
61
- :description => description,
62
- :uri => self.credits_uri,
63
- ).save
64
- else
56
+
57
+ if self.has_account?
65
58
  meta = args[2] || options.fetch(:meta) { nil }
66
59
  appears_on_statement_as = args[3] || options.fetch(:appears_on_statement_as) { nil }
67
- destination_url = args[4] || options.fetch(:destination_uri) { self.uri }
68
- self.account.credit(amount, meta, description, destination_uri, appears_on_statement_as)
60
+ destination_uri = args[4] || options.fetch(:destination_uri) { self.uri }
61
+ credit = self.account.credit(
62
+ :amount => amount,
63
+ :meta => meta,
64
+ :description => description,
65
+ :destination_uri => destination_uri,
66
+ :appears_on_statement_as => appears_on_statement_as
67
+ )
68
+ else
69
+ credit = Credit.new(
70
+ :uri => self.credits_uri,
71
+ :amount => amount,
72
+ :description => description
73
+ )
74
+ credit.save
69
75
  end
76
+
77
+ credit
70
78
  end
71
79
 
72
80
  def invalidate
@@ -118,7 +118,7 @@ module Balanced
118
118
  if self == Balanced::Merchant || self == Balanced::Marketplace || self == Balanced::ApiKey
119
119
  collection_path
120
120
  else
121
- if !Balanced::Marketplace.marketplace_exists?
121
+ unless Balanced::Marketplace.marketplace_exists?
122
122
  raise Balanced::StandardError, "#{self.name} is nested under a marketplace, which is not created or configured."
123
123
  end
124
124
 
@@ -1,3 +1,3 @@
1
1
  module Balanced
2
- VERSION = '0.5.1'
2
+ VERSION = '0.5.2'
3
3
  end
@@ -6,13 +6,13 @@ describe Balanced::BankAccount do
6
6
  before do
7
7
  api_key = Balanced::ApiKey.new.save
8
8
  Balanced.configure api_key.secret
9
+
9
10
  @marketplace = Balanced::Marketplace.new.save
10
- card = Balanced::Card.new(
11
+ card = @marketplace.create_card(
11
12
  :card_number => "5105105105105100",
12
13
  :expiration_month => "12",
13
14
  :expiration_year => "2015"
14
- ).save
15
-
15
+ )
16
16
  # An initial balance for the marketplace
17
17
  @buyer = @marketplace.create_buyer(
18
18
  :email_address => 'buyer@example.org',
@@ -43,18 +43,46 @@ describe Balanced::BankAccount do
43
43
  use_vcr_cassette
44
44
 
45
45
  before do
46
- @bank_account = Balanced::BankAccount.new(
47
- :account_number => "0987654321",
48
- :bank_code => "321174851",
49
- :name => "Timmy T. McTimmerson",
50
- :type => "checking"
51
- ).save
46
+ @bank_account = @marketplace.create_bank_account(
47
+ :account_number => "0987654321",
48
+ :bank_code => "321174851",
49
+ :name => "Timmy T. McTimmerson",
50
+ :type => "checking"
51
+ )
52
52
  end
53
53
 
54
- describe 'account' do
55
- use_vcr_cassette
54
+ context 'without an account' do
55
+
56
56
  subject { @bank_account.account }
57
57
  it { should be_nil }
58
+
59
+ describe 'has_account?' do
60
+
61
+ subject { @bank_account.has_account? }
62
+ it { should be_false }
63
+
64
+ end
65
+ end
66
+
67
+ context 'with an account' do
68
+ use_vcr_cassette
69
+ before do
70
+ @account = @marketplace.create_account
71
+ bank_account = @marketplace.create_bank_account(
72
+ :account_number => "0987654321",
73
+ :bank_code => "321174851",
74
+ :name => "Timmy T. McTimmerson",
75
+ :type => "checking"
76
+ )
77
+ @account.add_bank_account(bank_account.uri)
78
+ @bank_account_two = bank_account.reload
79
+ end
80
+
81
+ describe 'has_account?' do
82
+ subject { @bank_account_two.has_account? }
83
+ it { should be_true }
84
+ end
85
+
58
86
  end
59
87
 
60
88
  describe 'account_number' do
@@ -80,12 +108,42 @@ describe Balanced::BankAccount do
80
108
  end
81
109
 
82
110
  describe 'bank_account' do
83
- use_vcr_cassette
84
-
85
111
  subject { @credit.bank_account }
86
112
  its(:account_number) {should end_with '4321'}
87
113
  its(:routing_number) {should eql '321174851'}
114
+
88
115
  end
116
+
117
+ describe 'without an account' do
118
+ subject { @credit }
119
+ it { should respond_to :account }
120
+ its(:account) { should be_nil }
121
+ end
122
+
123
+ describe 'with an account' do
124
+ use_vcr_cassette
125
+
126
+ before do
127
+ @account = @marketplace.create_account
128
+ bank_account = @marketplace.create_bank_account(
129
+ :account_number => "1234567890111",
130
+ :bank_code => "021000021",
131
+ :name => "Timmy T. McTimmerson",
132
+ :type => "checking"
133
+ )
134
+ @account.add_bank_account(bank_account.uri)
135
+ bank_account = bank_account.reload
136
+ @credit_with_account = bank_account.credit(
137
+ :amount => 500,
138
+ :description => 'Blahblahblah'
139
+ )
140
+ end
141
+
142
+ subject { @credit_with_account }
143
+ it { should respond_to :account }
144
+ it { should be_instance_of Balanced::Credit }
145
+ end
146
+
89
147
  end
90
148
  end
91
149
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: balanced
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
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: 2012-12-11 00:00:00.000000000 Z
12
+ date: 2012-12-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday