fix: customize "view order item" page w/ panels
more to come soon..
This commit is contained in:
parent
13d576295e
commit
c79b0262f3
9 changed files with 403 additions and 32 deletions
40
tests/test_orders.py
Normal file
40
tests/test_orders.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
# -*- coding: utf-8; -*-
|
||||
|
||||
from wuttjamaican.testing import DataTestCase
|
||||
|
||||
from sideshow import orders as mod
|
||||
|
||||
|
||||
class TestOrderHandler(DataTestCase):
|
||||
|
||||
def make_config(self, **kwargs):
|
||||
config = super().make_config(**kwargs)
|
||||
config.setdefault('wutta.enum_spec', 'sideshow.enum')
|
||||
return config
|
||||
|
||||
def make_handler(self):
|
||||
return mod.OrderHandler(self.config)
|
||||
|
||||
def test_get_order_qty_uom_text(self):
|
||||
enum = self.app.enum
|
||||
handler = self.make_handler()
|
||||
|
||||
# typical, plain text
|
||||
text = handler.get_order_qty_uom_text(2, enum.ORDER_UOM_CASE, case_size=12)
|
||||
self.assertEqual(text, "2 Cases (x 12 = 24 Units)")
|
||||
|
||||
# typical w/ html
|
||||
text = handler.get_order_qty_uom_text(2, enum.ORDER_UOM_CASE, case_size=12, html=True)
|
||||
self.assertEqual(text, "2 Cases (× 12 = 24 Units)")
|
||||
|
||||
# unknown case size
|
||||
text = handler.get_order_qty_uom_text(2, enum.ORDER_UOM_CASE)
|
||||
self.assertEqual(text, "2 Cases (x ?? = ?? Units)")
|
||||
text = handler.get_order_qty_uom_text(2, enum.ORDER_UOM_CASE, html=True)
|
||||
self.assertEqual(text, "2 Cases (× ?? = ?? Units)")
|
||||
|
||||
# units only
|
||||
text = handler.get_order_qty_uom_text(2, enum.ORDER_UOM_UNIT)
|
||||
self.assertEqual(text, "2 Units")
|
||||
text = handler.get_order_qty_uom_text(2, enum.ORDER_UOM_UNIT, html=True)
|
||||
self.assertEqual(text, "2 Units")
|
|
@ -11,6 +11,7 @@ from pyramid.response import Response
|
|||
from wuttaweb.forms.schema import WuttaMoney
|
||||
|
||||
from sideshow.batch.neworder import NewOrderBatchHandler
|
||||
from sideshow.orders import OrderHandler
|
||||
from sideshow.testing import WebTestCase
|
||||
from sideshow.web.views import orders as mod
|
||||
from sideshow.web.forms.schema import OrderRef, PendingProductRef
|
||||
|
@ -30,6 +31,13 @@ class TestOrderView(WebTestCase):
|
|||
def make_handler(self):
|
||||
return NewOrderBatchHandler(self.config)
|
||||
|
||||
def test_order_handler(self):
|
||||
view = self.make_view()
|
||||
handler = view.order_handler
|
||||
self.assertIsInstance(handler, OrderHandler)
|
||||
handler2 = view.get_order_handler()
|
||||
self.assertIs(handler2, handler)
|
||||
|
||||
def test_configure_grid(self):
|
||||
model = self.app.model
|
||||
view = self.make_view()
|
||||
|
@ -1249,6 +1257,13 @@ class TestOrderItemView(WebTestCase):
|
|||
def make_view(self):
|
||||
return mod.OrderItemView(self.request)
|
||||
|
||||
def test_order_handler(self):
|
||||
view = self.make_view()
|
||||
handler = view.order_handler
|
||||
self.assertIsInstance(handler, OrderHandler)
|
||||
handler2 = view.get_order_handler()
|
||||
self.assertIs(handler2, handler)
|
||||
|
||||
def test_get_query(self):
|
||||
view = self.make_view()
|
||||
query = view.get_query(session=self.session)
|
||||
|
@ -1314,6 +1329,24 @@ class TestOrderItemView(WebTestCase):
|
|||
self.assertIsInstance(schema['order'].typ, OrderRef)
|
||||
self.assertNotIn('pending_product', form)
|
||||
|
||||
def test_get_template_context(self):
|
||||
model = self.app.model
|
||||
enum = self.app.enum
|
||||
view = self.make_view()
|
||||
|
||||
order = model.Order()
|
||||
item = model.OrderItem(order_qty=2, order_uom=enum.ORDER_UOM_CASE, case_size=8)
|
||||
order.items.append(item)
|
||||
|
||||
with patch.object(view, 'viewing', new=True):
|
||||
context = view.get_template_context({'instance': item})
|
||||
self.assertIn('item', context)
|
||||
self.assertIs(context['item'], item)
|
||||
self.assertIn('order', context)
|
||||
self.assertIs(context['order'], order)
|
||||
self.assertIn('order_qty_uom_text', context)
|
||||
self.assertEqual(context['order_qty_uom_text'], "2 Cases (× 8 = 16 Units)")
|
||||
|
||||
def test_get_xref_buttons(self):
|
||||
self.pyramid_config.add_route('orders.view', '/orders/{uuid}')
|
||||
model = self.app.model
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue