- Allow configuring API server port (#73)
- Require Capybara 2.2.0+ so we can configure the API server port
FakeBraintree
no longer auto-starts when it is required. You must explicitly callFakeBraintree.activate!
- Allow associating a credit card with a subcription when calling
Braintree::Subscription.create
(#80) - Update addons/discounts when calling
Braintree::Subscription.cancel
(#84) - Support
Braintree::CreditCard.delete
- Add support for Merchant Account API.
- Update client to 2.9.0 and drop-in to 1.7.0
- Remove support for 1.9.2, which is EOL'd.
fake_braintree
now requires Ruby 1.9.3+. - Use WEBrick as the Capybara server handler in all cases. Previously we used Thin and fell back to Puma, which caused problems like issue #54.
- Customers and Subscriptions that were stored with a custom (non-integer) ID can be retrieved (#67)
- Braintree::Subscription has associated dates thanks to @1st8 (#66):
next_billing_date
is 1 month from billing period start datebilling_day_of_month
is the next billing date's mday, but is true to Braintree's exceptional handling of the 31st day of the monthbilling_period_start_date
is either the provided start date or todaybilling_period_end_date
is the day before the next billing date
- Save discounts amount when adding them to a Subscription (#72)
- Remove unused
i18n
gem dependency (#56). - Set
credit_card.card_type
,credit_card.last_4
, andcredit_card.unique_number_identifier
. Ensurecredit_card.bin
is always set (#47). - Support new Braintree credit card API URLs
- Requires Braintree ~> 2.32 instead of Braintree ~> 2.5.
- Add missing quote.
- Add support for Puma server for JRuby support (#59).
fake_braintree
will try to use Thin first and then Puma.
- Add support for
Braintree::Subscription.retry_charge
- Add support for
Braintree::Address.create
- Add support for creating a card with an existing billing address (#45)
- Transactions have a type of "sale" (#46)
- Require at least Ruby 1.9.2
-
Braintree::Transaction.void updates the existing sale transaction instead of creating a new transaction of type Braintree::Transaction::Status::Voided
-
Preserve
redirect_url
query parameters for transparent redirect (#36) -
Transactions can be submitted for settlement by passing an options hash to Braintree::Transaction.create as shown in the Braintree documentation (#31)
-
When a customer is created with a credit card (
Braintree::Customer.create(:credit_card => ...
), that credit card is set as the customer's default card.
- Fake refunds via
Braintree::Transaction.refund
andBraintree::CreditCard.refund
. - Create credit cards via
Braintree::CreditCard.create(:token => token, :number => TEST_CC_NUMBER)
- Depend on Thin instead of Mongrel (fixes NotImplementedError).
- Generated transactions (from
FakeBraintree.generate_transaction
) now include the amount. Braintree::Customer.update
will reject updates that contain credit cards that have been marked as a failure in the registry.
Braintree::CreditCard.update
now works
FakeBraintree.{customers, transactions, failures, subscriptions, redirects}
are now accessed viaFakeBraintree.registry
. For example,FakeBraintree.customers
is nowFakeBraintree.registry.customers
FakeBraintree.credit_card_from_token
is nowFakeBraintree.registry.credit_card_from_token
- The server code (it intercepts calls to Braintree) now lives in FakeBraintree::Server
Braintree::Customer.create
will use the provided customer ID instead of overwriting it (#15).Braintree::Subscription.cancel
now works
- Flesh out the README
- Add support for transparent redirect
- Add basic support for adding add-ons
- Add basic support for adding discounts
- Add support for
Braintree::Customer.update
- Add support for
Braintree::Customer.delete
- Add support for
Braintree::Subscription.delete
- Lots of internal refactorings
- Add support for
Braintree::Customer.find
- Allow for very basic card verification
- Ensure
FakeBraintree.log_file_path
directory exists - The
FakeBraintree.log_file_path
attribute can now be read (it could only be set before) - Clear log when
FakeBraintree.clear!
is called - Correctly handle nonexistent subscriptions when using
Braintree::Subscription.find