diff options
| author | Laurent Smet <las@odoo.com> | 2020-07-27 08:31:58 +0000 |
|---|---|---|
| committer | Laurent Smet <las@odoo.com> | 2020-07-31 08:38:30 +0000 |
| commit | 6d1e1e09ead203aae5e12af07d01735c64c7bc46 (patch) | |
| tree | f33fe414e080ec34dc4cfcc36b8551b8dbe2afac /addons/sale_expense | |
| parent | dc1fccf6998db43ae91248d096f57bcf7c8c5bc6 (diff) | |
[IMP] sale*: Remove dependency to AccountTestCommon
l10n runbot builds are all failing when running at least one test depending of AccountTestCommon because it:
- doesn't create a sandboxed testing environnement to manage the multi-currency, multi-company, the default company's currency, the exchange rates...
- doesn't setup a testing user then all tests are done using the superuser.
- doesn't provide a fully setup chart of accounts: exchange difference journal is not set, accounts have bad types, etc...
- is run sometimes at-install.
--task: 2301180m
Diffstat (limited to 'addons/sale_expense')
| -rw-r--r-- | addons/sale_expense/tests/test_reinvoice.py | 52 | ||||
| -rw-r--r-- | addons/sale_expense/tests/test_sale_expense.py | 59 |
2 files changed, 41 insertions, 70 deletions
diff --git a/addons/sale_expense/tests/test_reinvoice.py b/addons/sale_expense/tests/test_reinvoice.py index cb66751ec72..0efe34c6dfb 100644 --- a/addons/sale_expense/tests/test_reinvoice.py +++ b/addons/sale_expense/tests/test_reinvoice.py @@ -2,34 +2,26 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo.addons.hr_expense.tests.common import TestExpenseCommon -from odoo.addons.sale.tests.test_sale_common import TestCommonSaleNoChart +from odoo.addons.sale.tests.common import TestSaleCommon from odoo.tests import tagged @tagged('-at_install', 'post_install') -class TestReInvoice(TestExpenseCommon, TestCommonSaleNoChart): +class TestReInvoice(TestExpenseCommon, TestSaleCommon): - @classmethod - def setUpClass(cls, chart_template_ref=None): - super().setUpClass(chart_template_ref=chart_template_ref) - super().setUpExpenseProducts() - - cls.price_list = cls.env['product.pricelist'].create({ - 'name': 'default_price_list_company_1', - 'sequence': 1, - 'company_id': cls.company_data['company'].id, - 'currency_id': cls.company_data['currency'].id, + def test_expenses_reinvoice(self): + (self.company_data['product_order_sales_price'] + self.company_data['product_delivery_sales_price']).write({ + 'can_be_expensed': True, }) - def test_expenses_reinvoice(self): # create SO line and confirm SO (with only one line) sale_order = self.env['sale.order'].with_context(mail_notrack=True, mail_create_nolog=True).create({ 'partner_id': self.partner_a.id, 'partner_invoice_id': self.partner_a.id, 'partner_shipping_id': self.partner_a.id, 'order_line': [(0, 0, { - 'name': self.product_ordered_cost.name, - 'product_id': self.product_ordered_cost.id, + 'name': self.company_data['product_order_sales_price'].name, + 'product_id': self.company_data['product_order_sales_price'].id, 'product_uom_qty': 2.0, 'price_unit': 1000.0, })], @@ -45,8 +37,8 @@ class TestReInvoice(TestExpenseCommon, TestCommonSaleNoChart): (0, 0, { 'name': 'expense_1', 'date': '2016-01-01', - 'product_id': self.product_ordered_cost.id, - 'unit_amount': self.product_ordered_cost.list_price, + 'product_id': self.company_data['product_order_sales_price'].id, + 'unit_amount': self.company_data['product_order_sales_price'].list_price, 'analytic_account_id': self.analytic_account_1.id, 'employee_id': self.expense_employee.id, 'sale_order_id': sale_order.id, @@ -54,8 +46,8 @@ class TestReInvoice(TestExpenseCommon, TestCommonSaleNoChart): (0, 0, { 'name': 'expense_2', 'date': '2016-01-01', - 'product_id': self.product_deliver_cost.id, - 'unit_amount': self.product_deliver_cost.list_price, + 'product_id': self.company_data['product_delivery_sales_price'].id, + 'unit_amount': self.company_data['product_delivery_sales_price'].list_price, 'analytic_account_id': self.analytic_account_1.id, 'employee_id': self.expense_employee.id, 'sale_order_id': sale_order.id, @@ -63,8 +55,8 @@ class TestReInvoice(TestExpenseCommon, TestCommonSaleNoChart): (0, 0, { 'name': 'expense_3', 'date': '2016-01-01', - 'product_id': self.product_order_sales_price.id, - 'unit_amount': self.product_order_sales_price.list_price, + 'product_id': self.company_data['product_order_sales_price'].id, + 'unit_amount': self.company_data['product_order_sales_price'].list_price, 'analytic_account_id': self.analytic_account_1.id, 'employee_id': self.expense_employee.id, 'sale_order_id': sale_order.id, @@ -72,8 +64,8 @@ class TestReInvoice(TestExpenseCommon, TestCommonSaleNoChart): (0, 0, { 'name': 'expense_4', 'date': '2016-01-01', - 'product_id': self.product_deliver_sales_price.id, - 'unit_amount': self.product_deliver_sales_price.list_price, + 'product_id': self.company_data['product_delivery_sales_price'].id, + 'unit_amount': self.company_data['product_delivery_sales_price'].list_price, 'analytic_account_id': self.analytic_account_1.id, 'employee_id': self.expense_employee.id, 'sale_order_id': sale_order.id, @@ -81,8 +73,8 @@ class TestReInvoice(TestExpenseCommon, TestCommonSaleNoChart): (0, 0, { 'name': 'expense_5', 'date': '2016-01-01', - 'product_id': self.product_no_expense.id, - 'unit_amount': self.product_no_expense.list_price, + 'product_id': self.company_data['product_delivery_sales_price'].id, + 'unit_amount': self.company_data['product_delivery_sales_price'].list_price, 'analytic_account_id': self.analytic_account_1.id, 'employee_id': self.expense_employee.id, 'sale_order_id': sale_order.id, @@ -107,12 +99,7 @@ class TestReInvoice(TestExpenseCommon, TestCommonSaleNoChart): 'is_expense': True, }, { - 'qty_delivered': 1.0, - 'product_uom_qty': 0.0, - 'is_expense': True, - }, - { - 'qty_delivered': 1.0, + 'qty_delivered': 3.0, 'product_uom_qty': 0.0, 'is_expense': True, }, @@ -123,11 +110,8 @@ class TestReInvoice(TestExpenseCommon, TestCommonSaleNoChart): }, ]) - # 'qty_delivered_method' is not checked on the first line because it could be multiple things depending if - # 'sale_stock' is installed or not. self.assertRecordValues(sale_order.order_line[1:], [ {'qty_delivered_method': 'analytic'}, {'qty_delivered_method': 'analytic'}, {'qty_delivered_method': 'analytic'}, - {'qty_delivered_method': 'analytic'}, ]) diff --git a/addons/sale_expense/tests/test_sale_expense.py b/addons/sale_expense/tests/test_sale_expense.py index 445fd0bdbce..47a17cf6225 100644 --- a/addons/sale_expense/tests/test_sale_expense.py +++ b/addons/sale_expense/tests/test_sale_expense.py @@ -1,30 +1,29 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo.addons.sale.tests.test_sale_common import TestSaleCommon +from odoo.addons.hr_expense.tests.common import TestExpenseCommon +from odoo.addons.sale.tests.common import TestSaleCommon from odoo.tests import tagged @tagged('post_install', '-at_install') -class TestSaleExpense(TestSaleCommon): +class TestSaleExpense(TestExpenseCommon, TestSaleCommon): + def test_sale_expense(self): """ Test the behaviour of sales orders when managing expenses """ - # force the pricelist to have the same currency as the company - self.env.ref('product.list0').currency_id = self.env.ref('base.main_company').currency_id # create a so with a product invoiced on delivery - prod = self.env['product.product'].create({ - 'name': 'A product', - 'invoice_policy': 'delivery', - 'list_price': 30.75, - 'uom_id': self.env.ref('uom.product_uom_hour').id, - 'uom_po_id': self.env.ref('uom.product_uom_hour').id, - }) so = self.env['sale.order'].create({ - 'partner_id': self.partner.id, - 'partner_invoice_id': self.partner.id, - 'partner_shipping_id': self.partner.id, - 'order_line': [(0, 0, {'name': prod.name, 'product_id': prod.id, 'product_uom_qty': 2, 'product_uom': prod.uom_id.id, 'price_unit': prod.list_price})], + 'partner_id': self.partner_a.id, + 'partner_invoice_id': self.partner_a.id, + 'partner_shipping_id': self.partner_a.id, + 'order_line': [(0, 0, { + 'name': self.company_data['product_delivery_no'].name, + 'product_id': self.company_data['product_delivery_no'].id, + 'product_uom_qty': 2, + 'product_uom': self.company_data['product_delivery_no'].uom_id.id, + 'price_unit': self.company_data['product_delivery_no'].list_price, + })], 'pricelist_id': self.env.ref('product.list0').id, }) so._compute_tax_id() @@ -33,30 +32,18 @@ class TestSaleExpense(TestSaleCommon): init_price = so.amount_total # create some expense and validate it (expense at cost) - prod_exp_1 = self.env['product.product'].create({ - 'name': 'Air Ticket', - 'list_price': 700, - 'can_be_expensed': True, - 'expense_policy': 'cost', - 'type': 'service', - 'invoice_policy': 'delivery', - }) - company = self.env.ref('base.main_company') - journal = self.env['account.journal'].create({'name': 'Purchase Journal - Test', 'code': 'HRTPJ', 'type': 'purchase', 'company_id': company.id}) - employee = self.env['hr.employee'].create({'name': 'Test employee', 'user_id': self.user.id, 'address_home_id': self.user.partner_id.id}) - self.user.partner_id.property_account_payable_id = self.a_pay.id # Submit to Manager sheet = self.env['hr.expense.sheet'].create({ 'name': 'Expense for John Smith', - 'employee_id': employee.id, - 'journal_id': journal.id, + 'employee_id': self.expense_employee.id, + 'journal_id': self.company_data['default_journal_purchase'].id, }) exp = self.env['hr.expense'].create({ 'name': 'Air Travel', - 'product_id': prod_exp_1.id, + 'product_id': self.company_data['product_delivery_cost'].id, 'analytic_account_id': so.analytic_account_id.id, 'unit_amount': 621.54, - 'employee_id': employee.id, + 'employee_id': self.expense_employee.id, 'sheet_id': sheet.id, 'sale_order_id': so.id, }) @@ -65,8 +52,8 @@ class TestSaleExpense(TestSaleCommon): # Create Expense Entries sheet.action_sheet_move_create() # expense should now be in sales order - self.assertIn(prod_exp_1, so.mapped('order_line.product_id'), 'Sale Expense: expense product should be in so') - sol = so.order_line.filtered(lambda sol: sol.product_id.id == prod_exp_1.id) + self.assertIn(self.company_data['product_delivery_cost'], so.mapped('order_line.product_id'), 'Sale Expense: expense product should be in so') + sol = so.order_line.filtered(lambda sol: sol.product_id.id == self.company_data['product_delivery_cost'].id) self.assertEqual((sol.price_unit, sol.qty_delivered), (621.54, 1.0), 'Sale Expense: error when invoicing an expense at cost') self.assertEqual(so.amount_total, init_price, 'Sale Expense: price of so not updated after adding expense') @@ -85,8 +72,8 @@ class TestSaleExpense(TestSaleCommon): # Submit to Manager sheet = self.env['hr.expense.sheet'].create({ 'name': 'Expense for John Smith', - 'employee_id': employee.id, - 'journal_id': journal.id, + 'employee_id': self.expense_employee.id, + 'journal_id': self.company_data['default_journal_purchase'].id, }) exp = self.env['hr.expense'].create({ 'name': 'Car Travel', @@ -95,7 +82,7 @@ class TestSaleExpense(TestSaleCommon): 'product_uom_id': self.env.ref('uom.product_uom_km').id, 'unit_amount': 0.15, 'quantity': 100, - 'employee_id': employee.id, + 'employee_id': self.expense_employee.id, 'sheet_id': sheet.id, 'sale_order_id': so.id, }) |
