This library is a way to test Braintree code without hitting Braintree's servers. It uses Capybara::Server to intercept all of the calls from Braintree's Ruby library and returns XML that the Braintree library can parse. The whole point is not to hit the Braintree API.
It supports a lot of Braintree methods, but it does not support every single one of them (yet).
Braintree::Address.create
Braintree::CreditCard.createBraintree::CreditCard.findBraintree::CreditCard.saleBraintree::CreditCard.update
Braintree::Customer.create(including adding add-ons and discounts)Braintree::Customer.deleteBraintree::Customer.findBraintree::Customer.update
Braintree::Subscription.cancelBraintree::Subscription.createBraintree::Subscription.findBraintree::Subscription.updateBraintree::Subscription.retry_charge
Braintree::Transaction.findBraintree::Transaction.refundBraintree::Transaction.saleBraintree::Transaction.voidBraintree::Transaction.submit_for_settlement
Braintree::TransparentRedirect.confirm(only for creating customers)Braintree::TransparentRedirect.url
Just require the library and you're good to go:
require 'fake_braintree'
FakeBraintree.clear! will clear all data, which you almost certainly want to
do before each test.
Full example:
# spec/spec_helper.rb
require 'fake_braintree'
RSpec.configure do |c|
c.before do
FakeBraintree.clear!
end
end
If you're using Cucumber, add this too:
# features/support/env.rb
require 'fake_braintree'
Before do
FakeBraintree.clear!
end
It is advised to run your tests with js: true (RSpec) or @javascript
(Cucumber), so that the requests correctly go through FakeBraintree. You might
want to give a look at
capybara-webkit.
credit_card.card_typewill always be"FakeBraintree".
To verify every credit card you try to use, call:
FakeBraintree.verify_all_cards!
This will stay "on" until you set
FakeBraintree.verify_all_cards = false
Calling FakeBraintree.clear! will not change this setting. It does very basic
verification: it only matches the credit card number against these:
http://www.braintreepayments.com/docs/ruby/reference/sandbox and rejects them if
they aren't one of the listed numbers.
To decline every card you try, call:
FakeBraintree.decline_all_cards!
This will decline all cards until you call
FakeBraintree.clear!
This behavior is different from FakeBraintree.verify_all_cards, which will
stay on even when clear! is called.
Note that after decline_all_cards! is set, Braintree will still create
customers, but will not be able to charge them (so charging for e.g. a subscription
will fail). Setting verify_all_cards!, on the other hand, will prevent
creation of customers with bad credit cards - Braintree won't even get to trying
to charge them.
You can generate a transaction using FakeBraintree.generate_transaction. This
is for use in testing, e.g.
before { user.transaction = FakeBraintree.generate_transaction }.
It takes the following options:
:subscription_id: the ID of the subscription associated with the transaction.:created_at: when the transaction was created (defaults toTime.now):amount: the amount of the transaction:status: the status of the transaction, e.g.Braintree::Transaction::Status::Failed
Any or all of these can be nil, and in fact are nil by default. You can also call it with no arguments.
Full example:
transaction = FakeBraintree.generate_transaction(
amount: '20.00',
status: Braintree::Transaction::Status::Settled,
subscription_id: 'foobar',
created_at: Time.now + 60
)
p transaction
# {
# "status_history" =>
# [{
# "timestamp" => 2011-11-20 12:57:25 -0500,
# "amount" => "20.00",
# "status" => "settled",
# "created_at" => 2011-11-20 12:58:25 -0500
# }],
# "subscription_id" => "foobar"
# }
During tests, debug-level logs will be sent to tmp/braintree_log. This is
useful for seeing which URLs Braintree is actually hitting.
If you get this error:
No Rack handler was defined! Please include gem "thin" or gem "puma" in your Gemfile." (RuntimeError).
First, ensure that either thin or puma is in your Gemfile.
If they're in your Gemfile and you still see the error, try these steps:
- Add
require "fake_braintree"to yourspec/spec_helper.rb - Add
require "thin"orrequire "puma"aboverequire "fake_braintree"in yourspec_helper.rb.
Fake Braintree is maintained and funded by thoughtbot, inc
Thank you to all the contributors!
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
Fake Braintree is Copyright © 2011-2013 thoughtbot. It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.
fake_braintree's People
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
OpenClaw
Personal AI Assistant
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.

