# -*- encoding: utf-8 -*-
import pytest
from django.db import IntegrityError
from checkout.models import CheckoutAction
from checkout.tests.factories import CheckoutFactory
from example_checkout.tests.factories import SalesLedgerFactory
# @pytest.mark.django_db
# def test_check_can_pay():
# VatSettingsFactory()
# sales_ledger = SalesLedgerFactory()
# checkout = sales_ledger.create_checkout()
# try:
# checkout.check_can_pay
# pass
# except CheckoutError:
# assert False, 'payment is due - so can be paid'
#
#
# @pytest.mark.django_db
# def test_check_can_pay_not():
# VatSettingsFactory()
# sales_ledger = SalesLedgerFactory()
# payment = sales_ledger.create_payment()
# payment.set_paid()
# with pytest.raises(PayError):
# payment.check_can_pay
#
#
# @pytest.mark.django_db
# def test_check_can_pay_too_early():
# """This should never happen... but test anyway."""
# VatSettingsFactory()
# sales_ledger = SalesLedgerFactory()
# payment = sales_ledger.create_payment()
# payment.created = timezone.now() + relativedelta(hours=+1, minutes=+2)
# payment.save()
# with pytest.raises(PayError):
# payment.check_can_pay
#
#
# @pytest.mark.django_db
# def test_check_can_pay_too_late():
# VatSettingsFactory()
# sales_ledger = SalesLedgerFactory()
# payment = sales_ledger.create_payment()
# payment.created = timezone.now() + relativedelta(hours=-1, minutes=-3)
# payment.save()
# with pytest.raises(PayError):
# payment.check_can_pay
#
#
# @pytest.mark.django_db
# def test_mail_template_context():
# VatSettingsFactory()
# product = ProductFactory(name='Colour Pencils', price=Decimal('10.00'))
# sales_ledger = SalesLedgerFactory(
# email='test@pkimber.net',
# title='Mr Patrick Kimber',
# product=product,
# )
# payment = sales_ledger.create_payment()
# assert {
# 'test@pkimber.net': dict(
# description='Colour Pencils (£10.00 + £2.00 vat)',
# name='Mr Patrick Kimber',
# total='£12.00',
# ),
# } == payment.mail_template_context()
# @pytest.mark.django_db
# def test_make_payment():
# #VatSettingsFactory()
# sales_ledger = SalesLedgerFactory()
# sales_ledger.create_checkout(token='123')
# @pytest.mark.django_db
# def test_manager_payments_audit():
# VatSettingsFactory()
# PaymentLineFactory(payment=PaymentFactory(
# name='p1',
# state=PaymentState.objects.due(),
# content_object=SalesLedgerFactory()
# ))
# PaymentLineFactory(payment=PaymentFactory(
# name='p2',
# state=PaymentState.objects.later(),
# content_object=SalesLedgerFactory()
# ))
# PaymentLineFactory(payment=PaymentFactory(
# name='p3',
# state=PaymentState.objects.fail(),
# content_object=SalesLedgerFactory()
# ))
# PaymentLineFactory(payment=PaymentFactory(
# name='p4',
# state=PaymentState.objects.paid(),
# content_object=SalesLedgerFactory()
# ))
# assert ['p4', 'p3', 'p2', 'p1'] == [
# p.name for p in Payment.objects.payments_audit()
# ]
#
#
# @pytest.mark.django_db
# def test_manager_payments():
# VatSettingsFactory()
# PaymentLineFactory(payment=PaymentFactory(
# name='p1',
# state=PaymentState.objects.due(),
# content_object=SalesLedgerFactory()
# ))
# PaymentLineFactory(payment=PaymentFactory(
# name='p2',
# state=PaymentState.objects.later(),
# content_object=SalesLedgerFactory()
# ))
# PaymentLineFactory(payment=PaymentFactory(
# name='p3',
# state=PaymentState.objects.fail(),
# content_object=SalesLedgerFactory()
# ))
# PaymentLineFactory(payment=PaymentFactory(
# name='p4',
# state=PaymentState.objects.paid(),
# content_object=SalesLedgerFactory()
# ))
# assert ['p4', 'p3'] == [
# p.name for p in Payment.objects.payments()
# ]
[docs]@pytest.mark.django_db
def test_no_content_object():
"""Payments must be linked to a content object."""
with pytest.raises(IntegrityError):
CheckoutFactory()
[docs]@pytest.mark.django_db
def test_is_payment_plan():
checkout = CheckoutFactory(
action=CheckoutAction.objects.payment_plan,
content_object=SalesLedgerFactory(),
)
assert bool(checkout.is_payment_plan) is True
[docs]@pytest.mark.django_db
def test_is_payment_plan_not():
checkout = CheckoutFactory(
action=CheckoutAction.objects.payment,
content_object=SalesLedgerFactory(),
)
assert bool(checkout.is_payment_plan) is False
# @pytest.mark.django_db
# def test_notification_message():
# VatSettingsFactory()
# payment = PaymentFactory(content_object=SalesLedgerFactory())
# product = ProductFactory(name='Paintbrush')
# PaymentLineFactory(payment=payment, product=product)
# payment.set_paid()
# factory = RequestFactory()
# request = factory.get(reverse('project.home'))
# subject, message = payment.mail_subject_and_message(request)
# assert 'payment received from Mr' in message
# assert 'Paintbrush' in message
# assert 'http://testserver/' in message
#
#
# @pytest.mark.django_db
# def test_set_paid():
# VatSettingsFactory()
# sales_ledger = SalesLedgerFactory(title='Carol')
# assert not sales_ledger.is_paid
# payment = sales_ledger.create_payment()
# assert not payment.is_paid
# payment.set_paid()
# # refresh
# payment = Payment.objects.get(pk=payment.pk)
# assert payment.is_paid
# # refresh
# sales_ledger = SalesLedger.objects.get(title='Carol')
# assert sales_ledger.is_paid
#
#
# @pytest.mark.django_db
# def test_set_payment_failed():
# VatSettingsFactory()
# sales_ledger = SalesLedgerFactory(title='Carol')
# assert not sales_ledger.is_paid
# payment = sales_ledger.create_payment()
# assert not payment.is_paid
# payment.set_payment_failed()
# # refresh
# payment = Payment.objects.get(pk=payment.pk)
# assert not payment.is_paid
# sales_ledger = SalesLedger.objects.get(title='Carol')
# assert not sales_ledger.is_paid
# assert PaymentState.FAIL == payment.state.slug
#
#
# @pytest.mark.django_db
# def test_total():
# VatSettingsFactory()
# sales_ledger = SalesLedgerFactory(
# product=ProductFactory(price=Decimal('2.50')),
# quantity=Decimal('2'),
# )
# payment = sales_ledger.create_payment()
# assert Decimal('6.00') == payment.total
#
#
# @pytest.mark.django_db
# def test_unique_together():
# VatSettingsFactory()
# sales_ledger = SalesLedgerFactory()
# sales_ledger.create_payment()
# with pytest.raises(IntegrityError):
# sales_ledger.create_payment()