# -*- encoding: utf-8 -*-
from decimal import Decimal
from django.test import TestCase
from django.urls import reverse
from checkout.tests.factories import CheckoutSettingsFactory
from checkout.views import CONTENT_OBJECT_PK
from example_checkout.tests.factories import SalesLedgerFactory
from finance.tests.factories import VatSettingsFactory
from login.tests.factories import TEST_PASSWORD
from login.tests.scenario import default_scenario_login, get_user_web
from mail.models import Notify
from stock.models import Product, ProductCategory, ProductType
[docs]class TestView(TestCase):
"""
Session variables difficult to test ref:
http://stackoverflow.com/questions/4453764/how-do-i-modify-the-session-in-the-django-test-framework
"""
[docs] def setUp(self):
VatSettingsFactory()
Notify.objects.create_notify("test@pkimber.net")
default_scenario_login()
# init_app_pay()
self.web = get_user_web()
self.assertTrue(
self.client.login(
username=self.web.username, password=TEST_PASSWORD
)
)
# create a payment
stock = ProductType.objects.create_product_type("stock", "Stock")
stationery = ProductCategory.objects.create_product_category(
"stationery", "Stationery", stock
)
pencil = Product.objects.create_product(
"pencil", "Pencil", "", Decimal("1.32"), stationery
)
self.sales_ledger = SalesLedgerFactory(
product=pencil, quantity=Decimal("2")
)
# self.checkout = sales_ledger.create_checkout(token='123')
# self.checkout.save()
# self.checkout.url = reverse('pay.list')
# self.checkout.url_failure = reverse('pay.list')
# self.checkout.save()
def _set_session_payment_pk(self, pk):
session = self.client.session
session[CONTENT_OBJECT_PK] = pk
session.save()
# def test_pay_later(self):
# self._set_session_payment_pk(self.checkout.pk)
# response = self.client.post(
# reverse('example.pay.later', kwargs=dict(pk=self.checkout.pk))
# )
# self.assertEqual(response.status_code, 302)
# self.assertIn('/pay/', response.url)
[docs] def test_project_home(self):
response = self.client.get(reverse("project.home"))
self.assertEqual(response.status_code, 200)
[docs] def test_stripe(self):
CheckoutSettingsFactory()
self._set_session_payment_pk(self.sales_ledger.pk)
response = self.client.get(
reverse(
"example.sales.ledger.checkout",
kwargs=dict(pk=self.sales_ledger.pk),
)
)
self.assertEqual(response.status_code, 200)