From 032890d8e4e3820a98fc725732b654bcdfd731d3 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Tue, 22 Aug 2017 11:54:13 +0200 Subject: [PATCH] [FIX] contract: fix views assignment + improvement on tests + copyright in headers **Be totally deterministic about which views to use** Having a primary view that is not explicitly declared to be uses and w/o priority makes Odoo to choose between one of them randomly (well, not exactly, but kind of), so we put here which views to use. I have also put tree view as primary and put a large priority for not being selected on other actions that don't have this explicit views. A friendly name in views is also assigned. **Improvements in tests** * Use SavepointCase for making the setup only once for all tests * Make them inheritable, creating a base class with only the setup, so that it can be inherited without the need of executing all tests contained here each time you inherit it, and adding other class in the same module that inherits from the base class that actually performs the tests. * Removed duplicated test method --- contract/__manifest__.py | 10 ++- contract/tests/test_contract.py | 70 +++++++------------ .../views/account_analytic_account_view.xml | 23 +++++- 3 files changed, 52 insertions(+), 51 deletions(-) diff --git a/contract/__manifest__.py b/contract/__manifest__.py index 7bddc43d..9c1aafed 100644 --- a/contract/__manifest__.py +++ b/contract/__manifest__.py @@ -1,11 +1,15 @@ # -*- coding: utf-8 -*- -# © 2004-2010 OpenERP SA -# © 2016 Carlos Dauden +# Copyright 2004-2010 OpenERP SA +# Copyright 2014-2017 Tecnativa - Pedro M. Baeza +# Copyright 2015 Domatix +# Copyright 2016 Tecnativa - Carlos Dauden +# Copyright 2017 Tecnativa - Vicent Cubells +# Copyright 2016-2017 LasLabs Inc. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Contracts Management - Recurring', - 'version': '10.0.2.0.0', + 'version': '10.0.2.1.0', 'category': 'Contract Management', 'license': 'AGPL-3', 'author': "OpenERP SA, " diff --git a/contract/tests/test_contract.py b/contract/tests/test_contract.py index 44fff4e9..90eaf964 100644 --- a/contract/tests/test_contract.py +++ b/contract/tests/test_contract.py @@ -1,49 +1,52 @@ # -*- coding: utf-8 -*- -# © 2016 Carlos Dauden +# Copyright 2016 Tecnativa - Carlos Dauden +# Copyright 2017 Tecnativa - Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo.exceptions import ValidationError -from odoo.tests.common import TransactionCase +from odoo.tests import common -class TestContract(TransactionCase): - # Use case : Prepare some data for current test case - def setUp(self): - super(TestContract, self).setUp() - self.partner = self.env.ref('base.res_partner_2') - self.product = self.env.ref('product.product_product_2') - self.product.taxes_id += self.env['account.tax'].search( +class TestContractBase(common.SavepointCase): + @classmethod + def setUpClass(cls): + super(TestContractBase, cls).setUpClass() + cls.partner = cls.env.ref('base.res_partner_2') + cls.product = cls.env.ref('product.product_product_2') + cls.product.taxes_id += cls.env['account.tax'].search( [('type_tax_use', '=', 'sale')], limit=1) - self.product.description_sale = 'Test description sale' - self.template_vals = { + cls.product.description_sale = 'Test description sale' + cls.template_vals = { 'recurring_rule_type': 'yearly', 'recurring_interval': 12345, 'name': 'Test Contract Template', } - self.template = self.env['account.analytic.contract'].create( - self.template_vals, + cls.template = cls.env['account.analytic.contract'].create( + cls.template_vals, ) - self.contract = self.env['account.analytic.account'].create({ + cls.contract = cls.env['account.analytic.account'].create({ 'name': 'Test Contract', - 'partner_id': self.partner.id, - 'pricelist_id': self.partner.property_product_pricelist.id, + 'partner_id': cls.partner.id, + 'pricelist_id': cls.partner.property_product_pricelist.id, 'recurring_invoices': True, 'date_start': '2016-02-15', 'recurring_next_date': '2016-02-29', }) - self.line_vals = { - 'analytic_account_id': self.contract.id, - 'product_id': self.product.id, + cls.line_vals = { + 'analytic_account_id': cls.contract.id, + 'product_id': cls.product.id, 'name': 'Services from #START# to #END#', 'quantity': 1, - 'uom_id': self.product.uom_id.id, + 'uom_id': cls.product.uom_id.id, 'price_unit': 100, 'discount': 50, } - self.acct_line = self.env['account.analytic.invoice.line'].create( - self.line_vals, + cls.acct_line = cls.env['account.analytic.invoice.line'].create( + cls.line_vals, ) + +class TestContract(TestContractBase): def _add_template_line(self, overrides=None): if overrides is None: overrides = {} @@ -229,26 +232,3 @@ class TestContract(TransactionCase): '\n'.join([line.product_id.name, line.product_id.description_sale, ])) - - def test_contract(self): - self.assertAlmostEqual(self.acct_line.price_subtotal, 50.0) - res = self.acct_line._onchange_product_id() - self.assertIn('uom_id', res['domain']) - self.acct_line.price_unit = 100.0 - - self.contract.partner_id = False - with self.assertRaises(ValidationError): - self.contract.recurring_create_invoice() - self.contract.partner_id = self.partner.id - - self.contract.recurring_create_invoice() - self.invoice_monthly = self.env['account.invoice'].search( - [('contract_id', '=', self.contract.id)]) - self.assertTrue(self.invoice_monthly) - self.assertEqual(self.contract.recurring_next_date, '2016-03-29') - - self.inv_line = self.invoice_monthly.invoice_line_ids[0] - self.assertTrue(self.inv_line.invoice_line_tax_ids) - self.assertAlmostEqual(self.inv_line.price_subtotal, 50.0) - self.assertEqual(self.contract.partner_id.user_id, - self.invoice_monthly.user_id) diff --git a/contract/views/account_analytic_account_view.xml b/contract/views/account_analytic_account_view.xml index de2fbe86..d56270bc 100644 --- a/contract/views/account_analytic_account_view.xml +++ b/contract/views/account_analytic_account_view.xml @@ -2,10 +2,11 @@ - account.analytic.account.invoice.recurring.form.inherit + Contract form account.analytic.account primary +
@@ -79,9 +80,11 @@ - account.analytic.account.journal.list + Contract list account.analytic.account + primary + @@ -94,7 +97,7 @@ - account.analytic.account.contract.search + Contract search account.analytic.account @@ -130,6 +133,20 @@ + + + tree + + + + + + + form + + + +