69 lines
2.6 KiB
Python
Executable File
69 lines
2.6 KiB
Python
Executable File
# Copyright 2019 Akretion Mourad EL HADJ MIMOUNE
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
|
|
|
from odoo.exceptions import ValidationError
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class TestBaseSubstate(TransactionCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.substate_test_sale = self.env["sale.order"]
|
|
self.substate_test_sale_line = self.env["sale.order.line"]
|
|
|
|
self.substate_under_nego = self.env.ref(
|
|
"sale_substate.base_substate_under_nego"
|
|
)
|
|
self.substate_won = self.env.ref("sale_substate.base_substate_won")
|
|
self.substate_wait_docs = self.env.ref("sale_substate.base_substate_wait_docs")
|
|
self.substate_valid_docs = self.env.ref(
|
|
"sale_substate.base_substate_valid_docs"
|
|
)
|
|
self.substate_in_delivery = self.env.ref(
|
|
"sale_substate.base_substate_in_delivery"
|
|
)
|
|
self.product_1 = self.env["product.product"].create(
|
|
{
|
|
"name": "Test Product 1",
|
|
"type": "service",
|
|
}
|
|
)
|
|
|
|
def test_sale_order_substate(self):
|
|
partner = self.env.ref("base.res_partner_1")
|
|
so_test1 = self.substate_test_sale.create(
|
|
{
|
|
"name": "Test base substate to basic sale",
|
|
"partner_id": partner.id,
|
|
"order_line": [
|
|
(
|
|
0,
|
|
0,
|
|
{
|
|
"product_id": self.product_1.id,
|
|
"product_uom_qty": 2,
|
|
"product_uom": self.product_1.uom_id.id,
|
|
"name": "line test",
|
|
"price_unit": 120.0,
|
|
},
|
|
)
|
|
],
|
|
}
|
|
)
|
|
self.assertTrue(so_test1.state == "draft")
|
|
self.assertTrue(so_test1.substate_id == self.substate_under_nego)
|
|
|
|
# Block substate not corresponding to draft state
|
|
with self.assertRaises(ValidationError):
|
|
so_test1.substate_id = self.substate_valid_docs
|
|
# Test that validation of sale order change substate_id
|
|
so_test1.action_confirm()
|
|
self.assertTrue(so_test1.state == "sale")
|
|
self.assertTrue(so_test1.substate_id == self.substate_valid_docs)
|
|
|
|
# Test that substate_id is set to false if
|
|
# there is not substate corresponding to state
|
|
so_test1._action_cancel()
|
|
self.assertTrue(so_test1.state == "cancel")
|
|
self.assertTrue(not so_test1.substate_id)
|