Skip to content

Commit 770d774

Browse files
committed
2.8.0
1 parent 2354b0d commit 770d774

File tree

7 files changed

+51
-1
lines changed

7 files changed

+51
-1
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 2.8.0
2+
3+
* Added next_billing_date and transaction_id to subscription search
4+
* Added address_country_name to customer search
5+
* Added new error codes
6+
17
## 2.7.0
28

39
* Added Customer search

braintree/customer_search.py

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class CustomerSearch:
88
address_postal_code = Search.TextNodeBuilder("address_postal_code")
99
address_region = Search.TextNodeBuilder("address_region")
1010
address_street_address = Search.TextNodeBuilder("address_street_address")
11+
address_country_name = Search.TextNodeBuilder("address_country_name")
1112
cardholder_name = Search.TextNodeBuilder("cardholder_name")
1213
company = Search.TextNodeBuilder("company")
1314
created_at = Search.RangeNodeBuilder("created_at")

braintree/error_codes.py

+2
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ class Subscription(object):
111111
PlanIdIsInvalid = "91904"
112112
PriceCannotBeBlank = "81903"
113113
PriceFormatIsInvalid = "81904"
114+
PriceIsTooLarge = "81923"
114115
StatusIsCanceled = "81905"
115116
TokenFormatIsInvalid = "81906"
116117
TrialDurationFormatIsInvalid = "81907"
@@ -120,6 +121,7 @@ class Subscription(object):
120121
class Modification(object):
121122
AmountCannotBeBlank = "92003"
122123
AmountIsInvalid = "92002"
124+
AmountIsTooLarge = "92023"
123125
CannotEditModificationsOnPastDueSubscription = "92022"
124126
CannotUpdateAndRemove = "92015"
125127
ExistingIdIsIncorrectKind = "92020"

braintree/subscription_search.py

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ class SubscriptionSearch:
99
ids = Search.MultipleValueNodeBuilder("ids")
1010
in_trial_period = Search.MultipleValueNodeBuilder("in_trial_period")
1111
merchant_account_id = Search.MultipleValueNodeBuilder("merchant_account_id")
12+
next_billing_date = Search.RangeNodeBuilder("next_billing_date")
1213
plan_id = Search.MultipleValueOrTextNodeBuilder("plan_id")
1314
price = Search.RangeNodeBuilder("price")
1415
status = Search.MultipleValueNodeBuilder("status", Constants.get_all_constant_values_from_class(Subscription.Status))
16+
transaction_id = Search.TextNodeBuilder("transaction_id")

braintree/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Version = "2.7.0"
1+
Version = "2.8.0"

tests/integration/test_customer_search.py

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def test_advanced_search_searches_all_text_fields(self):
5151
"address_extended_address": "Suite 3",
5252
"address_locality": "Chicago",
5353
"address_region": "Illinois",
54+
"address_country_name": "United States of America",
5455
"payment_method_token": token,
5556
"cardholder_name": "Tim Toole",
5657
"credit_card_number": "4111111111111111",

tests/integration/test_subscription.py

+38
Original file line numberDiff line numberDiff line change
@@ -1006,6 +1006,24 @@ def test_search_on_price(self):
10061006
self.assertTrue(TestHelper.includes(collection, subscription_1000))
10071007
self.assertFalse(TestHelper.includes(collection, subscription_900))
10081008

1009+
def test_search_on_transaction_id(self):
1010+
subscription_found = Subscription.create({
1011+
"payment_method_token": self.credit_card.token,
1012+
"plan_id": TestHelper.trialless_plan["id"],
1013+
}).subscription
1014+
1015+
subscription_not_found = Subscription.create({
1016+
"payment_method_token": self.credit_card.token,
1017+
"plan_id": TestHelper.trialless_plan["id"],
1018+
}).subscription
1019+
1020+
collection = Subscription.search(
1021+
SubscriptionSearch.transaction_id == subscription_found.transactions[0].id
1022+
)
1023+
1024+
self.assertTrue(TestHelper.includes(collection, subscription_found))
1025+
self.assertFalse(TestHelper.includes(collection, subscription_not_found))
1026+
10091027
def test_search_on_id(self):
10101028
subscription_found = Subscription.create({
10111029
"id": "find_me_%s" % random.randint(1,1000000),
@@ -1026,6 +1044,26 @@ def test_search_on_id(self):
10261044
self.assertTrue(TestHelper.includes(collection, subscription_found))
10271045
self.assertFalse(TestHelper.includes(collection, subscription_not_found))
10281046

1047+
def test_search_on_next_billing_date(self):
1048+
subscription_found = Subscription.create({
1049+
"payment_method_token": self.credit_card.token,
1050+
"plan_id": TestHelper.trialless_plan["id"]
1051+
}).subscription
1052+
1053+
subscription_not_found = Subscription.create({
1054+
"payment_method_token": self.credit_card.token,
1055+
"plan_id": TestHelper.trial_plan["id"]
1056+
}).subscription
1057+
1058+
next_billing_date_cutoff = datetime.today() + timedelta(days=5)
1059+
1060+
collection = Subscription.search(
1061+
SubscriptionSearch.next_billing_date >= next_billing_date_cutoff
1062+
)
1063+
1064+
self.assertTrue(TestHelper.includes(collection, subscription_found))
1065+
self.assertFalse(TestHelper.includes(collection, subscription_not_found))
1066+
10291067
def test_retryCharge_without_amount__deprecated(self):
10301068
subscription = Subscription.create({
10311069
"payment_method_token": self.credit_card.token,

0 commit comments

Comments
 (0)