79 lines
2.9 KiB
Python
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")
|