Files
enterprise-addons/pos_platform_order_grabfood/tests/test_menu.py
T

79 lines
2.9 KiB
Python

from odoo.fields import Command
from odoo.addons.point_of_sale.tests.common import CommonPosTest, archive_products
class TestGrabFoodMenu(CommonPosTest):
@classmethod
def setUpClass(cls):
super().setUpClass()
archive_products(cls.env)
cls.company_idr = cls.env['res.company'].create({
'name': 'Company IDR',
'currency_id': cls.env.ref('base.IDR').id,
})
cls.env.user.company_id = cls.company_idr
cls.provider = cls.env['platform.order.provider'].search([
('code', '=', 'grabfood'),
('company_id', '=', cls.company_idr.id)], limit=1)
cls.provider._setup_payment_method(cls.provider)
cls.provider._setup_pricelist(cls.provider)
cls.provider.write({
'state': 'test',
'grabfood_client_id': 'test_client_id',
'grabfood_client_secret': 'test_client_secret',
})
cls.product_1 = cls.env['product.template'].create({
'name': 'Product 1',
'available_in_pos': True,
'taxes_id': [(5, 0, 0)],
'type': 'consu',
'list_price': 100.0,
})
cls.product_2 = cls.env['product.template'].create({
'name': 'Product 2',
'available_in_pos': True,
'taxes_id': [(5, 0, 0)],
'type': 'consu',
'list_price': 200.0,
})
cls.grabfood_config = cls.env['pos.config'].create({
'name': 'GrabFood',
'company_id': cls.company_idr.id,
})
cls.grabfood_store = cls.env['platform.order.entity'].create({
'name': 'GrabFood Store',
'provider_id': cls.provider.id,
'config_id': cls.grabfood_config.id,
'external_id': 'store_001',
})
def test_grabfood_menu_integration(self):
pos_category_1 = self.env["pos.category"].create({"name": "Category 1"})
pos_category_2 = self.env["pos.category"].create({"name": "Category 2"})
self.grabfood_store.available_categ_ids = [Command.set([pos_category_1.id])]
self.product_1.pos_categ_ids = [Command.set([pos_category_1.id, pos_category_2.id])]
self.product_2.pos_categ_ids = [Command.set([pos_category_2.id])]
menu = self.grabfood_store._prepare_grabfood_menu_data()
self.assertEqual(menu.get('currency', {}).get('code'), "IDR")
selling_times = menu.get('sellingTimes', [])
self.assertEqual(len(selling_times), 1)
self.assertEqual(len(selling_times[0].get('serviceHours', [])), 7)
categories = menu.get('categories', [])
self.assertEqual(len(categories), 1, "Should contain exactly 1 category")
first_category_items = categories[0].get('items', [])
self.assertEqual(len(first_category_items), 1, "Should contain exactly 1 product")
self.assertEqual(first_category_items[0]['name'], "Product 1")