Files
enterprise-addons/pos_platform_order/tests/test_frontend.py
T

80 lines
3.4 KiB
Python

from unittest.mock import patch
from odoo.fields import Command
from odoo.addons.pos_restaurant.tests.test_frontend import TestFrontendCommon
class TestPoSPlatformOrderCommon(TestFrontendCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.provider_demo = cls.env['platform.order.provider'].create({
'name': 'Demo Provider',
'code': 'none',
'state': 'test',
})
cls.store_demo = cls.env['platform.order.entity'].create({
'name': 'Demo Store',
'external_id': 'store_001',
'provider_id': cls.provider_demo.id,
'config_id': cls.pos_config.id,
})
class TestFrontend(TestPoSPlatformOrderCommon):
def _create_platform_order(self, order_name):
PlatformOrderEntity = self.env.registry.models['platform.order.entity']
new_order = {
'order_name': order_name,
'floating_order_name': order_name,
'platform_order_ref': 'PO-12345678',
'platform_order_status': 'new',
'platform_order_pin': '8821',
'general_customer_note': 'No spicy, please.',
'order_type': 'delivery',
}
new_order_lines = [
{
'attribute_value_ids': [],
'customer_note': 'Extra napkins, please.',
'full_product_name': self.coca_cola_test.name,
'product_id': self.coca_cola_test.id,
'qty': 1,
'price_unit': self.coca_cola_test.lst_price,
'price_subtotal': self.pos_config.currency_id.round(self.coca_cola_test.lst_price),
'price_subtotal_incl': self.pos_config.currency_id.round(self.coca_cola_test.lst_price),
'tax_ids': [Command.set(self.coca_cola_test.taxes_id.ids)],
},
]
with patch.object(PlatformOrderEntity, '_prepare_order_values_from_data', return_value=new_order),\
patch.object(PlatformOrderEntity, '_prepare_order_lines_values_from_data', return_value=new_order_lines),\
patch.object(PlatformOrderEntity, '_find_or_create_partners_from_data', return_value=self.env['res.partner']):
return self.store_demo._create_order_from_data({})
def test_platform_order_flow(self):
self.env["pos.printer"].search([]).unlink()
self.pos_config.with_user(self.pos_user).open_ui()
PosOrder = self.env.registry.models['pos.order']
def mark_platform_prep_order_as_printed_patch(self):
try:
return super(PosOrder, self).mark_platform_prep_order_as_printed() # type: ignore[reportAttributeAccessIssue]
except ValueError:
return False
self._create_platform_order("Platform Order #001")
with patch.object(PosOrder, '_send_accept_order_request', return_value=True), \
patch.object(PosOrder, '_send_food_ready_request', return_value=True), \
patch.object(PosOrder, 'mark_platform_prep_order_as_printed', mark_platform_prep_order_as_printed_patch):
self.start_pos_tour("test_platform_order_flow")
self._create_platform_order("Platform Order #002")
with patch.object(PosOrder, '_send_reject_order_request', return_value=True), \
patch.object(PosOrder, 'mark_platform_prep_order_as_printed', mark_platform_prep_order_as_printed_patch):
self.start_pos_tour("test_platform_order_reject_flow")