From de4fc8bb2f6eb813e468355cd4a62b34486a2d25 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Tue, 5 Dec 2023 14:19:22 +0100 Subject: [PATCH] [FIX] point_of_sale: Make tests demo data independent Part-of: odoo/odoo#146649 --- addons/point_of_sale/models/pos_session.py | 1 + .../point_of_sale/tests/test_anglo_saxon.py | 98 ++++++++++--------- addons/point_of_sale/tests/test_frontend.py | 17 +++- addons/point_of_sale/tests/test_js.py | 10 +- .../tests/test_res_config_settings.py | 9 ++ addons/pos_hr/tests/test_frontend.py | 6 +- addons/pos_restaurant/tests/test_frontend.py | 91 ++++++++++------- addons/pos_sale/tests/test_pos_sale_flow.py | 21 ++-- .../tests/test_self_order_combo.py | 2 +- .../tests/test_self_order_mobile.py | 18 ++++ 10 files changed, 174 insertions(+), 99 deletions(-) diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py index 0290cd48e4e..1f35766eb85 100644 --- a/addons/point_of_sale/models/pos_session.py +++ b/addons/point_of_sale/models/pos_session.py @@ -1606,6 +1606,7 @@ class PosSession(models.Model): 'pos.order': self.env['pos.order'].search([('session_id', '=', self.id), ('state', '=', 'draft')]).export_for_ui() } + def _load_model(self, model): model_name = model.replace('.', '_') loader = getattr(self, '_get_pos_ui_%s' % model_name, None) diff --git a/addons/point_of_sale/tests/test_anglo_saxon.py b/addons/point_of_sale/tests/test_anglo_saxon.py index f7ca0e877ea..e100f7acdd6 100644 --- a/addons/point_of_sale/tests/test_anglo_saxon.py +++ b/addons/point_of_sale/tests/test_anglo_saxon.py @@ -1,68 +1,70 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -import odoo import time -from odoo import fields -from odoo.tests import common +from odoo.tests import tagged +from odoo.addons.account.tests.common import AccountTestInvoicingCommon -class TestAngloSaxonCommon(common.TransactionCase): - def setUp(self): - super(TestAngloSaxonCommon, self).setUp() - self.PosMakePayment = self.env['pos.make.payment'] - self.PosOrder = self.env['pos.order'] - self.Statement = self.env['account.bank.statement'] - self.company = self.env.ref('base.main_company') - self.warehouse = self.env['stock.warehouse'].search([('company_id', '=', self.env.company.id)], limit=1) - self.partner = self.env['res.partner'].create({'name': 'Partner 1'}) - self.category = self.env.ref('product.product_category_all') - self.category = self.category.copy({'name': 'New category','property_valuation': 'real_time'}) - self.account = self.env['account.account'].create({'name': 'Receivable', 'code': 'RCV00', 'account_type': 'asset_receivable', 'reconcile': True}) - account_expense = self.env['account.account'].create({'name': 'Expense', 'code': 'EXP00', 'account_type': 'expense', 'reconcile': True}) - account_income = self.env['account.account'].create({'name': 'Income', 'code': 'INC00', 'account_type': 'income', 'reconcile': True}) - account_output = self.env['account.account'].create({'name': 'Output', 'code': 'OUT00', 'account_type': 'expense', 'reconcile': True}) - account_valuation = self.env['account.account'].create({'name': 'Valuation', 'code': 'STV00', 'account_type': 'expense', 'reconcile': True}) - self.partner.property_account_receivable_id = self.account - self.category.property_account_income_categ_id = account_income - self.category.property_account_expense_categ_id = account_expense - self.category.property_stock_account_input_categ_id = self.account - self.category.property_stock_account_output_categ_id = account_output - self.category.property_stock_valuation_account_id = account_valuation - self.category.property_stock_journal = self.env['account.journal'].create({'name': 'Stock journal', 'type': 'sale', 'code': 'STK00'}) - self.pos_config = self.env.ref('point_of_sale.pos_config_main') - self.cash_journal = self.env['account.journal'].create( +class TestAngloSaxonCommon(AccountTestInvoicingCommon): + + @classmethod + def setUpClass(cls, chart_template_ref=None): + super().setUpClass(chart_template_ref=chart_template_ref) + cls.PosMakePayment = cls.env['pos.make.payment'] + cls.PosOrder = cls.env['pos.order'] + cls.Statement = cls.env['account.bank.statement'] + cls.company = cls.env.company + cls.warehouse = cls.env['stock.warehouse'].search([('company_id', '=', cls.env.company.id)], limit=1) + cls.partner = cls.env['res.partner'].create({'name': 'Partner 1'}) + cls.category = cls.env.ref('product.product_category_all') + cls.category = cls.category.copy({'name': 'New category','property_valuation': 'real_time'}) + cls.account = cls.env['account.account'].create({'name': 'Receivable', 'code': 'RCV00', 'account_type': 'asset_receivable', 'reconcile': True}) + account_expense = cls.env['account.account'].create({'name': 'Expense', 'code': 'EXP00', 'account_type': 'expense', 'reconcile': True}) + account_income = cls.env['account.account'].create({'name': 'Income', 'code': 'INC00', 'account_type': 'income', 'reconcile': True}) + account_output = cls.env['account.account'].create({'name': 'Output', 'code': 'OUT00', 'account_type': 'expense', 'reconcile': True}) + account_valuation = cls.env['account.account'].create({'name': 'Valuation', 'code': 'STV00', 'account_type': 'expense', 'reconcile': True}) + cls.partner.property_account_receivable_id = cls.account + cls.category.property_account_income_categ_id = account_income + cls.category.property_account_expense_categ_id = account_expense + cls.category.property_stock_account_input_categ_id = cls.account + cls.category.property_stock_account_output_categ_id = account_output + cls.category.property_stock_valuation_account_id = account_valuation + cls.category.property_stock_journal = cls.env['account.journal'].create({'name': 'Stock journal', 'type': 'sale', 'code': 'STK00'}) + cls.cash_journal = cls.env['account.journal'].create( {'name': 'CASH journal', 'type': 'cash', 'code': 'CSH02'}) - self.cash_payment_method = self.env['pos.payment.method'].create({ + cls.cash_payment_method = cls.env['pos.payment.method'].create({ 'name': 'Cash Test', - 'journal_id': self.cash_journal.id, + 'journal_id': cls.cash_journal.id, }) - self.pos_config = self.pos_config.copy({'name': 'New POS config', 'payment_method_ids': self.cash_payment_method}) - self.product = self.env['product.product'].create({ + cls.pos_config = cls.env['pos.config'].create({ + 'name': 'New POS config', + 'payment_method_ids': cls.cash_payment_method, + }) + cls.product = cls.env['product.product'].create({ 'name': 'New product', 'standard_price': 100, 'available_in_pos': True, 'type': 'product', }) - self.company.anglo_saxon_accounting = True - self.company.point_of_sale_update_stock_quantities = 'real' - self.product.categ_id = self.category - self.product.property_account_expense_id = account_expense - self.product.property_account_income_id = account_income - sale_journal = self.env['account.journal'].create({'name': 'POS journal', 'type': 'sale', 'code': 'POS00'}) - self.pos_config.journal_id = sale_journal - self.cash_journal = self.env['account.journal'].create({'name': 'CASH journal', 'type': 'cash', 'code': 'CSH00'}) - self.sale_journal = self.env['account.journal'].create({'name': 'SALE journal', 'type': 'sale', 'code': 'INV00'}) - self.pos_config.invoice_journal_id = self.sale_journal - self.cash_payment_method = self.env['pos.payment.method'].create({ + cls.company.anglo_saxon_accounting = True + cls.company.point_of_sale_update_stock_quantities = 'real' + cls.product.categ_id = cls.category + cls.product.property_account_expense_id = account_expense + cls.product.property_account_income_id = account_income + sale_journal = cls.env['account.journal'].create({'name': 'POS journal', 'type': 'sale', 'code': 'POS00'}) + cls.pos_config.journal_id = sale_journal + cls.cash_journal = cls.env['account.journal'].create({'name': 'CASH journal', 'type': 'cash', 'code': 'CSH00'}) + cls.sale_journal = cls.env['account.journal'].create({'name': 'SALE journal', 'type': 'sale', 'code': 'INV00'}) + cls.pos_config.invoice_journal_id = cls.sale_journal + cls.cash_payment_method = cls.env['pos.payment.method'].create({ 'name': 'Cash Test', - 'journal_id': self.cash_journal.id, - 'receivable_account_id': self.account.id, + 'journal_id': cls.cash_journal.id, + 'receivable_account_id': cls.account.id, }) - self.pos_config.write({'payment_method_ids': [(6, 0, self.cash_payment_method.ids)]}) + cls.pos_config.write({'payment_method_ids': [(6, 0, cls.cash_payment_method.ids)]}) - -@odoo.tests.tagged('post_install', '-at_install') +@tagged('post_install', '-at_install') class TestAngloSaxonFlow(TestAngloSaxonCommon): def test_create_account_move_line(self): diff --git a/addons/point_of_sale/tests/test_frontend.py b/addons/point_of_sale/tests/test_frontend.py index 0a249d271a6..c54ee11ce05 100644 --- a/addons/point_of_sale/tests/test_frontend.py +++ b/addons/point_of_sale/tests/test_frontend.py @@ -1,15 +1,18 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +import logging from odoo import Command + from odoo.api import Environment from odoo.tools import DEFAULT_SERVER_DATE_FORMAT +from odoo.tests import loaded_demo_data, tagged from odoo.addons.account.tests.common import AccountTestInvoicingHttpCommon from odoo.addons.point_of_sale.tests.common_setup_methods import setup_pos_combo_items from datetime import date, timedelta from odoo.addons.point_of_sale.tests.common import archive_products -import odoo.tests +_logger = logging.getLogger(__name__) class TestPointOfSaleHttpCommon(AccountTestInvoicingHttpCommon): @@ -515,9 +518,12 @@ class TestPointOfSaleHttpCommon(AccountTestInvoicingHttpCommon): env['ir.property']._set_default("property_product_pricelist", "res.partner", public_pricelist, main_company) -@odoo.tests.tagged('post_install', '-at_install') +@tagged('post_install', '-at_install') class TestUi(TestPointOfSaleHttpCommon): def test_01_pos_basic_order(self): + if not loaded_demo_data(self.env): + _logger.warning("This test relies on demo data. To be rewritten independently of demo data for accurate and reliable results.") + return self.main_pos_config.write({ 'iface_tipproduct': True, @@ -547,6 +553,9 @@ class TestUi(TestPointOfSaleHttpCommon): self.assertEqual(email_count, 1) def test_02_pos_with_invoiced(self): + if not loaded_demo_data(self.env): + _logger.warning("This test relies on demo data. To be rewritten independently of demo data for accurate and reliable results.") + return self.pos_user.write({ 'groups_id': [ (4, self.env.ref('account.group_account_invoice').id), @@ -566,6 +575,9 @@ class TestUi(TestPointOfSaleHttpCommon): self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config, 'ProductConfiguratorTour', login="pos_user") def test_05_ticket_screen(self): + if not loaded_demo_data(self.env): + _logger.warning("This test relies on demo data. To be rewritten independently of demo data for accurate and reliable results.") + return self.pos_user.write({ 'groups_id': [ (4, self.env.ref('account.group_account_invoice').id), @@ -722,6 +734,7 @@ class TestUi(TestPointOfSaleHttpCommon): self.start_tour("/pos/ui?config_id=%d" % self.main_pos_config.id, 'PaymentScreenRoundingHalfUp', login="pos_user") def test_rounding_half_up_cash_and_bank(self): + self.env['res.partner'].create({'name': 'Nicole Ford'}) company = self.main_pos_config.company_id rouding_method = self.env['account.cash.rounding'].create({ 'name': 'Rounding HALF-UP', diff --git a/addons/point_of_sale/tests/test_js.py b/addons/point_of_sale/tests/test_js.py index 010f72db0c4..b268abfe406 100644 --- a/addons/point_of_sale/tests/test_js.py +++ b/addons/point_of_sale/tests/test_js.py @@ -1,7 +1,11 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo.tests import tagged, HttpCase +import logging + +from odoo.tests import tagged, HttpCase, loaded_demo_data + +_logger = logging.getLogger(__name__) @tagged("post_install", "-at_install") @@ -15,6 +19,10 @@ class WebSuite(HttpCase): def test_pos_js(self): # open a session, the /pos/ui controller will redirect to it + # TODO: Adapt to work without demo data + if not loaded_demo_data(self.env): + _logger.warning("This test relies on demo data. To be rewritten independently of demo data for accurate and reliable results.") + return self.main_pos_config.open_ui() self.main_pos_config.current_session_id.set_cashbox_pos(0, None) diff --git a/addons/point_of_sale/tests/test_res_config_settings.py b/addons/point_of_sale/tests/test_res_config_settings.py index cbe0d790407..9a793215707 100644 --- a/addons/point_of_sale/tests/test_res_config_settings.py +++ b/addons/point_of_sale/tests/test_res_config_settings.py @@ -16,6 +16,15 @@ class TestConfigureShops(TestPoSCommon): pos_config_id field. """ + @classmethod + def setUpClass(cls): + super().setUpClass() + # If not enabled (like in demo data), landing on res.config will try + # to disable module_sale_quotation_builder and raise an issue + group_order_template = cls.env.ref('sale_management.group_sale_order_template', raise_if_not_found=False) + if group_order_template: + cls.env.ref('base.group_user').write({"implied_ids": [(4, group_order_template.id)]}) + def _remove_on_payment_taxes(self): """ Call this when testing the res.config.settings with Form. The `on_payment` taxes need to be removed, otherwise, a warning will show in the log. diff --git a/addons/pos_hr/tests/test_frontend.py b/addons/pos_hr/tests/test_frontend.py index f3bc4ab468f..3949700098a 100644 --- a/addons/pos_hr/tests/test_frontend.py +++ b/addons/pos_hr/tests/test_frontend.py @@ -24,7 +24,8 @@ class TestPosHrHttpCommon(TestPointOfSaleHttpCommon): }) # User employee - emp1 = cls.env.ref("hr.employee_han").sudo().copy({ + emp1 = cls.env['hr.employee'].create({ + 'name': 'Test Employee 1', "company_id": cls.env.company.id, }) emp1_user = new_test_user( @@ -37,7 +38,8 @@ class TestPosHrHttpCommon(TestPointOfSaleHttpCommon): emp1.write({"name": "Pos Employee1", "pin": "2580", "user_id": emp1_user.id}) # Non-user employee - emp2 = cls.env.ref("hr.employee_jve").sudo().copy({ + emp2 = cls.env['hr.employee'].create({ + 'name': 'Test Employee 2', "company_id": cls.env.company.id, }) emp2.write({"name": "Pos Employee2", "pin": "1234"}) diff --git a/addons/pos_restaurant/tests/test_frontend.py b/addons/pos_restaurant/tests/test_frontend.py index cfafdd7e260..b00918a0066 100644 --- a/addons/pos_restaurant/tests/test_frontend.py +++ b/addons/pos_restaurant/tests/test_frontend.py @@ -4,46 +4,64 @@ import odoo.tests from odoo.addons.point_of_sale.tests.common_setup_methods import setup_pos_combo_items from odoo.addons.point_of_sale.tests.common import archive_products +from odoo.addons.account.tests.common import AccountTestInvoicingCommon +from odoo.addons.base.tests.common import HttpCaseWithUserDemo + @odoo.tests.tagged('post_install', '-at_install') -class TestFrontend(odoo.tests.HttpCase): - def setUp(self): - super().setUp() - self.env = self.env(user=self.env.ref('base.user_admin')) - archive_products(self.env) - account_obj = self.env['account.account'] +class TestFrontend(AccountTestInvoicingCommon, HttpCaseWithUserDemo): + + @classmethod + def setUpClass(cls, chart_template_ref=None): + super().setUpClass(chart_template_ref=chart_template_ref) + cls.user_demo.groups_id += cls.env.ref('point_of_sale.group_pos_manager') + cls.env.ref('account.group_account_invoice') + + user_admin = cls.env.ref('base.user_admin') + (cls.user_demo + user_admin).write({ + 'company_id': cls.env.company.id, + 'company_ids': [(4, cls.env.company.id)], + }) + cls.env = cls.env(user=user_admin) + archive_products(cls.env) + account_obj = cls.env['account.account'] account_receivable = account_obj.create({'code': 'X1012', 'name': 'Account Receivable - Test', 'account_type': 'asset_receivable', 'reconcile': True}) - drinks_category = self.env['pos.category'].create({'name': 'Drinks'}) + drinks_category = cls.env['pos.category'].create({'name': 'Drinks'}) - printer = self.env['pos.printer'].create({ + printer = cls.env['pos.printer'].create({ 'name': 'Preparation Printer', 'epson_printer_ip': '127.0.0.1', 'printer_type': 'epson_epos', 'product_categories_ids': [drinks_category.id] }) - main_company = self.env.ref('base.main_company') + main_company = cls.env.company - second_cash_journal = self.env['account.journal'].create({ + cls.env['pos.payment.method'].create({ + 'name': 'Bank', + 'journal_id': cls.company_data['default_journal_bank'].id, + 'receivable_account_id': cls.company_data['default_account_receivable'].id, + 'company_id': cls.env.company.id, + }) + second_cash_journal = cls.env['account.journal'].create({ 'name': 'Cash 2', 'type': 'cash', 'company_id': main_company.id - }) + }) - self.env['pos.payment.method'].create({ + cls.env['pos.payment.method'].create({ 'name': 'Cash 2', 'split_transactions': False, 'receivable_account_id': account_receivable.id, 'journal_id': second_cash_journal.id, }) - pos_config = self.env['pos.config'].create({ - 'name': 'Bar', + pos_config = cls.env['pos.config'].create({ + 'name': 'Bar Prout', 'module_pos_restaurant': True, 'iface_splitbill': True, 'iface_printbill': True, @@ -53,22 +71,23 @@ class TestFrontend(odoo.tests.HttpCase): 'is_order_printer': True, 'printer_ids': [(4, printer.id)], 'iface_tipproduct': False, + 'company_id': cls.env.company.id, }) pos_config.floor_ids.unlink() - main_floor = self.env['restaurant.floor'].create({ + main_floor = cls.env['restaurant.floor'].create({ 'name': 'Main Floor', 'pos_config_ids': [(4, pos_config.id)], }) - table_05 = self.env['restaurant.table'].create({ + cls.env['restaurant.table'].create({ 'name': '5', 'floor_id': main_floor.id, 'seats': 4, 'position_h': 100, 'position_v': 100, }) - table_04 = self.env['restaurant.table'].create({ + cls.env['restaurant.table'].create({ 'name': '4', 'floor_id': main_floor.id, 'seats': 4, @@ -76,7 +95,7 @@ class TestFrontend(odoo.tests.HttpCase): 'position_h': 150, 'position_v': 100, }) - table_02 = self.env['restaurant.table'].create({ + cls.env['restaurant.table'].create({ 'name': '2', 'floor_id': main_floor.id, 'seats': 4, @@ -84,12 +103,12 @@ class TestFrontend(odoo.tests.HttpCase): 'position_v': 100, }) - second_floor = self.env['restaurant.floor'].create({ + second_floor = cls.env['restaurant.floor'].create({ 'name': 'Second Floor', 'pos_config_ids': [(4, pos_config.id)], }) - table_01 = self.env['restaurant.table'].create({ + cls.env['restaurant.table'].create({ 'name': '1', 'floor_id': second_floor.id, 'seats': 4, @@ -97,7 +116,7 @@ class TestFrontend(odoo.tests.HttpCase): 'position_h': 100, 'position_v': 150, }) - table_03 = self.env['restaurant.table'].create({ + cls.env['restaurant.table'].create({ 'name': '3', 'floor_id': second_floor.id, 'seats': 4, @@ -105,21 +124,21 @@ class TestFrontend(odoo.tests.HttpCase): 'position_v': 250, }) - self.env['ir.property']._set_default( + cls.env['ir.property']._set_default( 'property_account_receivable_id', 'res.partner', account_receivable, main_company, ) - test_sale_journal = self.env['account.journal'].create({ + test_sale_journal = cls.env['account.journal'].create({ 'name': 'Sales Journal - Test', 'code': 'TSJ', 'type': 'sale', 'company_id': main_company.id }) - cash_journal = self.env['account.journal'].create({ + cash_journal = cls.env['account.journal'].create({ 'name': 'Cash Test', 'code': 'TCJ', 'type': 'cash', @@ -137,51 +156,51 @@ class TestFrontend(odoo.tests.HttpCase): })], }) - coke = self.env['product.product'].create({ + cls.env['product.product'].create({ 'available_in_pos': True, 'list_price': 2.20, 'name': 'Coca-Cola', 'weight': 0.01, 'pos_categ_ids': [(4, drinks_category.id)], - 'categ_id': self.env.ref('point_of_sale.product_category_pos').id, + 'categ_id': cls.env.ref('point_of_sale.product_category_pos').id, 'taxes_id': [(6, 0, [])], }) - water = self.env['product.product'].create({ + cls.env['product.product'].create({ 'available_in_pos': True, 'list_price': 2.20, 'name': 'Water', 'weight': 0.01, 'pos_categ_ids': [(4, drinks_category.id)], - 'categ_id': self.env.ref('point_of_sale.product_category_pos').id, + 'categ_id': cls.env.ref('point_of_sale.product_category_pos').id, 'taxes_id': [(6, 0, [])], }) - minute_maid = self.env['product.product'].create({ + cls.env['product.product'].create({ 'available_in_pos': True, 'list_price': 2.20, 'name': 'Minute Maid', 'weight': 0.01, 'pos_categ_ids': [(4, drinks_category.id)], - 'categ_id': self.env.ref('point_of_sale.product_category_pos').id, + 'categ_id': cls.env.ref('point_of_sale.product_category_pos').id, 'taxes_id': [(6, 0, [])], }) - pricelist = self.env['product.pricelist'].create({'name': 'Restaurant Pricelist'}) + pricelist = cls.env['product.pricelist'].create({'name': 'Restaurant Pricelist'}) pos_config.write({'pricelist_id': pricelist.id}) - self.pos_config = pos_config + cls.pos_config = pos_config - self.pos_admin = self.env['res.users'].create({ + cls.pos_admin = cls.env['res.users'].create({ 'name': 'A powerfull PoS man!', 'login': 'pos_admin', 'password': 'pos_admin', 'groups_id': [ - (4, self.env.ref('base.group_user').id), - (4, self.env.ref('point_of_sale.group_pos_manager').id), + (4, cls.env.ref('base.group_user').id), + (4, cls.env.ref('point_of_sale.group_pos_manager').id), ], }) - self.pos_admin.partner_id.email = 'pos_admin@test.com' + cls.pos_admin.partner_id.email = 'pos_admin@test.com' def test_01_pos_restaurant(self): diff --git a/addons/pos_sale/tests/test_pos_sale_flow.py b/addons/pos_sale/tests/test_pos_sale_flow.py index 0ccd991eee9..23e1bb57c7b 100644 --- a/addons/pos_sale/tests/test_pos_sale_flow.py +++ b/addons/pos_sale/tests/test_pos_sale_flow.py @@ -45,7 +45,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon): self.bom_a = bom_product_form.save() sale_order = self.env['sale.order'].create({ - 'partner_id': self.env.ref('base.res_partner_2').id, + 'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id, 'order_line': [(0, 0, { 'product_id': self.kit.id, 'name': self.kit.name, @@ -99,14 +99,16 @@ class TestPoSSale(TestPointOfSaleHttpCommon): 'lst_price': 11, 'taxes_id': [odoo.Command.clear()], }) + partner_1 = self.env['res.partner'].create({'name': 'Test Partner 1'}) + partner_2 = self.env['res.partner'].create({'name': 'Test Partner 2'}) self.env['sale.order'].create({ - 'partner_id': self.env.ref('base.res_partner_1').id, - 'partner_shipping_id': self.env.ref('base.res_partner_2').id, + 'partner_id': partner_1.id, + 'partner_shipping_id': partner_2.id, 'order_line': [(0, 0, {'product_id': product1.id})], }) self.env['sale.order'].create({ - 'partner_id': self.env.ref('base.res_partner_1').id, - 'partner_shipping_id': self.env.ref('base.res_partner_1').id, + 'partner_id': partner_1.id, + 'partner_shipping_id': partner_1.id, 'order_line': [(0, 0, {'product_id': product2.id})], }) self.main_pos_config.open_ui() @@ -131,7 +133,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon): }) #create a sale order with 2 lines sale_order = self.env['sale.order'].create({ - 'partner_id': self.env.ref('base.res_partner_2').id, + 'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id, 'order_line': [(0, 0, { 'product_id': product_a.id, 'name': product_a.name, @@ -166,7 +168,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon): def test_downpayment_refund(self): #create a sale order sale_order = self.env['sale.order'].create({ - 'partner_id': self.env.ref('base.res_partner_2').id, + 'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id, 'order_line': [(0, 0, { 'product_id': self.product_a.id, 'name': self.product_a.name, @@ -190,6 +192,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon): self.assertEqual(len(sale_order.order_line), 3) self.assertEqual(sale_order.order_line[1].qty_invoiced, 1) self.assertEqual(sale_order.order_line[2].qty_invoiced, -1) + def test_settle_order_unreserve_order_lines(self): #create a product category that use the closest location for the removal strategy self.removal_strategy = self.env['product.removal'].search([('method', '=', 'closest')], limit=1) @@ -233,7 +236,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon): quants.action_apply_inventory() sale_order = self.env['sale.order'].create({ - 'partner_id': self.env.ref('base.res_partner_2').id, + 'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id, 'order_line': [(0, 0, { 'product_id': self.product.id, 'name': self.product.name, @@ -276,7 +279,7 @@ class TestPoSSale(TestPointOfSaleHttpCommon): }) #create a sale order with 2 lines sale_order = self.env['sale.order'].create({ - 'partner_id': self.env.ref('base.res_partner_2').id, + 'partner_id': self.env['res.partner'].create({'name': 'Test Partner'}).id, 'order_line': [(0, 0, { 'product_id': product_a.id, 'name': product_a.name, diff --git a/addons/pos_self_order/tests/test_self_order_combo.py b/addons/pos_self_order/tests/test_self_order_combo.py index 5acae8009e9..6b6d905bbd5 100644 --- a/addons/pos_self_order/tests/test_self_order_combo.py +++ b/addons/pos_self_order/tests/test_self_order_combo.py @@ -24,7 +24,7 @@ class TestSelfOrderCombo(SelfOrderCommonTest): 'self_ordering_pay_after': 'each', 'self_ordering_service_mode': 'counter', }) - + self.pos_user.groups_id += self.env.ref('account.group_account_invoice') self.pos_config.with_user(self.pos_user).open_ui() self_route = self.pos_config._get_self_order_route() diff --git a/addons/pos_self_order/tests/test_self_order_mobile.py b/addons/pos_self_order/tests/test_self_order_mobile.py index a6c15ca6849..42de4260bf5 100644 --- a/addons/pos_self_order/tests/test_self_order_mobile.py +++ b/addons/pos_self_order/tests/test_self_order_mobile.py @@ -15,6 +15,24 @@ class TestSelfOrderMobile(SelfOrderCommonTest): 'self_ordering_service_mode': 'table', }) + floor_main = self.env["restaurant.floor"].create({ + "name": 'Main Floor', + "background_color": 'rgb(249,250,251)', + "pos_config_ids": [(6, 0, self.pos_config.ids)], + }) + + self.env["restaurant.table"].create({ + "name": '3', + "floor_id": floor_main.id, + "seats": 2, + "color": 'rgb(53,211,116)', + "shape": 'square', + "width": '100', + "height": '100', + "position_h": '374', + "position_v": '50', + }) + self.pos_config.with_user(self.pos_user).open_ui() self_route = self.pos_config._get_self_order_route()