spec/balanced/resources/card_spec.rb in balanced-0.8.2 vs spec/balanced/resources/card_spec.rb in balanced-1.0.beta1
- old
+ new
@@ -1,36 +1,110 @@
require 'spec_helper'
-describe Balanced::Card, '#debit', :vcr => true, :marketplace => true do
- it 'raises an exception with an unassociated card' do
- card = Balanced::Card.new
- expect {
- card.debit
- }.to raise_error(Balanced::UnassociatedCardError)
- end
-end
+describe Balanced::Card, :vcr do
-describe Balanced::Card, '#hold', :vcr => true, :marketplace => true do
- it 'raises an exception with an unassociated card' do
- card = Balanced::Card.new
- expect {
- card.hold
- }.to raise_error(Balanced::UnassociatedCardError)
+ before do
+ api_key = Balanced::ApiKey.new.save
+ Balanced.configure api_key.secret
+ @marketplace = Balanced::Marketplace.new.save
+ @card = Balanced::Card.new(
+ :number => '5105105105105100',
+ :expiration_month => '12',
+ :expiration_year => '2020',
+ :cvv => '123'
+ ).save
end
-end
-describe Balanced::Card, '#debit', :vcr => true, :marketplace => true do
- it 'debits the card if an account is set' do
- # tokenize card
- card = Balanced::Card.new(
- :card_number => '4111111111111111',
- :expiration_year => '2016',
- :expiration_month => '12')
- card.save
+ describe 'card', :vcr do
+ it 'should be a Balanced::Card' do
+ @card.should be_instance_of Balanced::Card
+ end
- # associate card to account
- Balanced::Account.new(:email_address => 'user@example.com', :name => 'John Doe', :card_uri => card.uri).save
+ describe 'attributes', :vcr do
+ subject { @card }
+ its(:href) { should match "/cards/#{@card.id}" }
+ its(:number) { should end_with '5100' }
+ its(:expiration_month) { should eql 12 }
+ its(:expiration_year) { should eql 2020 }
+ its(:cvv) { should eql 'xxx' }
+ its(:cvv_match) { should eql 'yes' }
+ its(:cvv_result) { should eql 'Match' }
+ end
- card = Balanced::Card.find(card.uri)
- card.debit(:amount => 10000).should be_instance_of Balanced::Debit
+ describe 'creating a one-time debit', :vcr => {:record => :new_episodes} do
+ subject do
+ @card.debit(
+ :amount => 100,
+ :appears_on_statement_as => 'A lolipop',
+ :description => 'My first debit!'
+ )
+ end
+ it { should_not be_nil }
+ it { should be_instance_of Balanced::Debit }
+
+ its(:href) { should_not be_nil }
+ its(:amount) { should eql 100 }
+ its(:appears_on_statement_as) { should eql 'BAL*A lolipop' }
+ its(:description) { should eql 'My first debit!' }
+ its(:status) { should eql 'succeeded' }
+ end
+
+ describe 'creating a one-time hold', :vcr => true, :skip => true do
+ subject do
+ @card.hold(
+ :amount => 100,
+ :appears_on_statement_as => 'HOLD.UP',
+ :description => 'HeldForEver'
+ )
+ end
+ it { should_not be_nil }
+ it { should be_instance_of Balanced::CardHold }
+
+ its(:href) { should_not be_nil }
+ its(:amount) { should eql 100 }
+ its(:description) { should eql 'HeldForEver' }
+ its(:appears_on_statement_as) { should eql 'BAL*HOLD.UP' }
+ end
+
+ describe '#debits', :vcr do
+ subject do
+ @card.debits
+ end
+ its(:href) { should eq("/cards/#{@card.id}/debits") }
+ it 'should be a page' do
+ should be_instance_of Balanced::Pager
+ end
+ end
+
+ describe '#holds', :vcr => true, :skip => true do
+ subject do
+ @card.holds
+ end
+
+ its(:href) { should eq("/cards/#{@card.id}/card_holds") }
+
+ it 'should be a page' do
+ should be_instance_of Balanced::Pager
+ end
+ end
+
+ describe '#customer', :vcr do
+
+ it 'should default to nil' do
+ @card.customer.should be_nil
+ end
+
+ context 'after associating to a customer' do
+ before do
+ @customer = Balanced::Customer.new.save
+ @card.associate_to_customer(@customer)
+ @card.reload
+ end
+ subject { @card }
+ its(:customer) { should_not be_nil }
+ end
+
+ end
+
end
+
end