Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
5
base_sequence_option/tests/__init__.py
Executable file
5
base_sequence_option/tests/__init__.py
Executable file
@@ -0,0 +1,5 @@
|
||||
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th)
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
|
||||
|
||||
from . import common
|
||||
from . import test_ir_sequence_option
|
||||
33
base_sequence_option/tests/base_sequence_tester.py
Executable file
33
base_sequence_option/tests/base_sequence_tester.py
Executable file
@@ -0,0 +1,33 @@
|
||||
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th)
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class BaseSequenceTester(models.Model):
|
||||
_name = "base.sequence.tester"
|
||||
_description = "Base Sequence Tester"
|
||||
|
||||
name = fields.Char(default="/")
|
||||
test_type = fields.Selection(selection=[("a", "A"), ("b", "B")])
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
for vals in vals_list:
|
||||
seq = self.env["ir.sequence.option.line"].get_sequence(self.new(vals))
|
||||
if (
|
||||
seq
|
||||
): # use sequence from sequence.option, instead of base.sequence.tester
|
||||
self = self.with_context(sequence_option_id=seq.id)
|
||||
new_seq = self.env["ir.sequence"].next_by_code("base.sequence.tester")
|
||||
vals["name"] = new_seq
|
||||
return super().create(vals_list)
|
||||
|
||||
|
||||
class IrSequenceOption(models.Model):
|
||||
_inherit = "ir.sequence.option"
|
||||
|
||||
model = fields.Selection(
|
||||
selection_add=[("base.sequence.tester", "base.sequence.tester")],
|
||||
ondelete={"base.sequence.tester": "cascade"},
|
||||
)
|
||||
93
base_sequence_option/tests/common.py
Executable file
93
base_sequence_option/tests/common.py
Executable file
@@ -0,0 +1,93 @@
|
||||
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th)
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
|
||||
|
||||
from odoo_test_helper import FakeModelLoader
|
||||
|
||||
from odoo.tests import common
|
||||
|
||||
|
||||
class CommonBaseSequenceOption(common.TransactionCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
|
||||
cls.loader = FakeModelLoader(cls.env, cls.__module__)
|
||||
cls.loader.backup_registry()
|
||||
from .base_sequence_tester import BaseSequenceTester, IrSequenceOption
|
||||
|
||||
cls.loader.update_registry((BaseSequenceTester, IrSequenceOption))
|
||||
|
||||
cls.test_model = cls.env[BaseSequenceTester._name]
|
||||
|
||||
cls.tester_model = cls.env["ir.model"].search(
|
||||
[("model", "=", "base.sequence.tester")]
|
||||
)
|
||||
|
||||
# Access record:
|
||||
cls.env["ir.model.access"].create(
|
||||
{
|
||||
"name": "access.tester",
|
||||
"model_id": cls.tester_model.id,
|
||||
"perm_read": 1,
|
||||
"perm_write": 1,
|
||||
"perm_create": 1,
|
||||
"perm_unlink": 1,
|
||||
}
|
||||
)
|
||||
|
||||
# Create sequence for type A and type B
|
||||
cls.ir_sequence_obj = cls.env["ir.sequence"]
|
||||
cls.ir_sequence_obj.create(
|
||||
{
|
||||
"name": "Default Sequence",
|
||||
"code": "base.sequence.tester",
|
||||
"padding": 5,
|
||||
"prefix": "DEF/",
|
||||
}
|
||||
)
|
||||
seq_a = cls.ir_sequence_obj.create(
|
||||
{
|
||||
"name": "Type A",
|
||||
"padding": 5,
|
||||
"prefix": "TYPE-A/",
|
||||
}
|
||||
)
|
||||
seq_b = cls.ir_sequence_obj.create(
|
||||
{
|
||||
"name": "Type B",
|
||||
"padding": 5,
|
||||
"prefix": "TYPE-B/",
|
||||
}
|
||||
)
|
||||
|
||||
# Create sequence options for model base.sequence.tester:
|
||||
cls.base_sequence_obj = cls.env["ir.sequence.option"]
|
||||
cls.base_seq = cls.base_sequence_obj.create(
|
||||
{
|
||||
"name": "Test Model",
|
||||
"model": "base.sequence.tester",
|
||||
"use_sequence_option": True,
|
||||
}
|
||||
)
|
||||
cls.sequence_obj = cls.env["ir.sequence.option.line"]
|
||||
cls.sequence_obj.create(
|
||||
{
|
||||
"base_id": cls.base_seq.id,
|
||||
"name": "Option 1",
|
||||
"filter_domain": [("test_type", "=", "a")],
|
||||
"sequence_id": seq_a.id,
|
||||
}
|
||||
)
|
||||
cls.sequence_obj.create(
|
||||
{
|
||||
"base_id": cls.base_seq.id,
|
||||
"name": "Option 1",
|
||||
"filter_domain": [("test_type", "=", "b")],
|
||||
"sequence_id": seq_b.id,
|
||||
}
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
cls.loader.restore_registry()
|
||||
return super().tearDownClass()
|
||||
30
base_sequence_option/tests/test_ir_sequence_option.py
Executable file
30
base_sequence_option/tests/test_ir_sequence_option.py
Executable file
@@ -0,0 +1,30 @@
|
||||
# Copyright 2021 Ecosoft Co., Ltd. (http://ecosoft.co.th)
|
||||
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
|
||||
|
||||
from odoo.tests.common import tagged
|
||||
|
||||
from .common import CommonBaseSequenceOption
|
||||
|
||||
|
||||
@tagged("post_install", "-at_install")
|
||||
class TestBaseSequenceTester(CommonBaseSequenceOption):
|
||||
def test_sequence_options(self):
|
||||
"""
|
||||
Test 3 cases,
|
||||
1. Default
|
||||
2. Sequence Type A
|
||||
3. Sequence Type B
|
||||
"""
|
||||
# 1. Default
|
||||
rec = self.test_model.create({})
|
||||
self.assertIn("DEF/", rec.name)
|
||||
# 2. Type A
|
||||
rec = self.test_model.create({"test_type": "a"})
|
||||
self.assertIn("TYPE-A/", rec.name)
|
||||
# 3. Type B
|
||||
rec = self.test_model.create({"test_type": "b"})
|
||||
self.assertIn("TYPE-B/", rec.name)
|
||||
# Not useing the sequence
|
||||
self.base_seq.use_sequence_option = False
|
||||
rec = self.test_model.create({"test_type": "b"})
|
||||
self.assertIn("DEF/", rec.name)
|
||||
Reference in New Issue
Block a user