80 lines
3.4 KiB
Python
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")
|