39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
from odoo.tests import common
|
|
|
|
from ..models.tools import CHARS, generate_random_id
|
|
|
|
|
|
class TestTools(common.TransactionCase):
|
|
"""Test class for tools module."""
|
|
|
|
def test_generate_random_id(self):
|
|
"""Test random id generation"""
|
|
# Test single section
|
|
result = generate_random_id()
|
|
self.assertEqual(len(result), 4) # Default length is 4
|
|
self.assertTrue(all(c in CHARS for c in result)) # All chars from CHARS
|
|
|
|
# Test multiple sections
|
|
result = generate_random_id(sections=2)
|
|
sections = result.split("-")
|
|
self.assertEqual(len(sections), 2)
|
|
self.assertTrue(all(len(s) == 4 for s in sections))
|
|
self.assertTrue(all(c in CHARS for s in sections for c in s))
|
|
|
|
# Test custom population
|
|
result = generate_random_id(population=6)
|
|
self.assertEqual(len(result), 6)
|
|
|
|
# Test custom separator
|
|
result = generate_random_id(sections=2, separator="_")
|
|
self.assertIn("_", result)
|
|
self.assertEqual(len(result.split("_")), 2)
|
|
|
|
# Test invalid inputs
|
|
self.assertIsNone(generate_random_id(sections=0))
|
|
self.assertIsNone(generate_random_id(population=-1))
|
|
|
|
# Test empty separator
|
|
result = generate_random_id(sections=3, separator="")
|
|
self.assertEqual(len(result), 12) # 3 sections of 4 chars with no separator
|