This repository has been archived by the owner on Aug 1, 2023. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7161b61
commit 8885c1b
Showing
6 changed files
with
196 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
<coupon href="{{ coupon.uris.object_uri }}"> | ||
<redemptions href="{{ coupon.uris.redemptions_uri }}"/> | ||
<coupon_code>{{ coupon.coupon_code }}</coupon_code> | ||
<name>{{ coupon.name }}</name> | ||
<state>{{ coupon.state }}</state> | ||
<discount_type>{{ coupon.discount_type }}</discount_type> | ||
{% if coupon.discount_type == 'percent' %} | ||
<discount_percent type="integer">{{ coupon.discount_percent }}</discount_percent> | ||
{% else %} | ||
<discount_in_cents> | ||
{% for currency, value in plan.unit_amount_in_cents.items() %} | ||
<{{ currency }} type="integer">{{ value }}</{{ currency }}> | ||
{% endfor %} | ||
</discount_in_cents> | ||
{% endif %} | ||
{% if coupon.redeem_by_date %} | ||
<redeem_by_date type="datetime">{{ coupon.redeem_by_date }}</redeem_by_date> | ||
{% else %} | ||
<redeem_by_date nil="nil"></redeem_by_date> | ||
{% endif %} | ||
<single_use type="boolean">{% if coupon.single_use %}true{% else %}false{% endif %}</single_use> | ||
{% if coupon.applies_for_months %} | ||
<applies_for_months>{{ coupon.applies_for_months }}</applies_for_months> | ||
{% else %} | ||
<applies_for_months nil="nil"></applies_for_months> | ||
{% endif %} | ||
{% if coupon.max_redemptions %} | ||
<max_redemptions type="integer">{{ coupon.max_redemptions }}</max_redemptions> | ||
{% else %} | ||
<max_redemptions nil="nil"></max_redemptions> | ||
{% endif %} | ||
<applies_to_all_plans type="boolean">{% if coupon.applies_to_all_plans %}true{% else %}false{% endif %}</applies_to_all_plans> | ||
<created_at type="datetime">{{ coupon.created_at }}</created_at> | ||
{% if not coupon.applies_to_all_plans %} | ||
<plan_codes type="array"> | ||
{% for plan_code in coupon.plan_codes %} | ||
<plan_code>{{ plan_code }}</plan_code> | ||
{% endfor %} | ||
</plan_codes> | ||
{% endif %} | ||
<a name="redeem" href="{{ coupon.uris.redeem_uri }}" method="post"/> | ||
</coupon> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
<redemption href="{{ redemption.uris.object_uri }}"> | ||
<coupon href="{{ redemption.uris.coupon_uri }}"/> | ||
<account href="{{ redemption.uris.account_uri }}"/> | ||
<single_use type="boolean">{{ redemption.coupon.single_use }}</single_use> | ||
<currency>{{ redemption.currency }}</currency> | ||
<created_at type="datetime">{{ redemption.created_at }}</created_at> | ||
</redemption> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
import unittest | ||
import datetime | ||
import iso8601 | ||
import recurly | ||
recurly.API_KEY = 'blah' | ||
|
||
import mocurly.core | ||
import mocurly.backend | ||
|
||
class TestCoupons(unittest.TestCase): | ||
def setUp(self): | ||
self.mocurly_ = mocurly.core.mocurly() | ||
self.mocurly_.start() | ||
|
||
self.base_address_data = { | ||
'address1': '123 Jackson St.', | ||
'address2': 'Data City', | ||
'state': 'CA', | ||
'zip': '94105' | ||
} | ||
self.base_billing_info_data = { | ||
'uuid': 'blah', | ||
'first_name': 'Foo', | ||
'last_name': 'Bar' | ||
} | ||
self.base_account_data = { | ||
'uuid': 'blah', | ||
'account_code': 'blah', | ||
'email': 'foo@bar.com', | ||
'first_name': 'Foo', | ||
'last_name': 'Bar', | ||
'address': self.base_address_data, | ||
'hosted_login_token': 'abcd1234', | ||
'created_at': '2014-08-11' | ||
} | ||
mocurly.backend.accounts_backend.add_object(self.base_account_data['uuid'], self.base_account_data) | ||
mocurly.backend.billing_info_backend.add_object(self.base_billing_info_data['uuid'], self.base_billing_info_data) | ||
|
||
self.base_coupon_data = { | ||
'coupon_code': 'special', | ||
'name': 'Special 10% off', | ||
'discount_type': 'percent', | ||
'discount_percent': 10 | ||
} | ||
|
||
def tearDown(self): | ||
self.mocurly_.stop() | ||
|
||
def test_simple_coupon_creation(self): | ||
self.assertEqual(len(mocurly.backend.coupons_backend.datastore), 0) | ||
|
||
coupon = recurly.Coupon(**self.base_coupon_data) | ||
coupon.save() | ||
|
||
self.assertEqual(len(mocurly.backend.coupons_backend.datastore), 1) | ||
|
||
def test_coupon_redemption(self): | ||
self.assertEqual(len(mocurly.backend.coupon_redemptions_backend.datastore), 0) | ||
mocurly.backend.coupons_backend.add_object(self.base_coupon_data['coupon_code'], self.base_coupon_data) | ||
|
||
coupon = recurly.Coupon.get(self.base_coupon_data['coupon_code']) | ||
redemption = recurly.Redemption(account_code=self.base_account_data['account_code'], currency='USD') | ||
redemption = coupon.redeem(redemption) | ||
|
||
self.assertEqual(len(mocurly.backend.coupon_redemptions_backend.datastore), 1) |