49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
import typing
|
|
from collections import namedtuple
|
|
|
|
from odoo.tests import TransactionCase
|
|
|
|
from .. import generalutils
|
|
|
|
|
|
class TestGeneralUtils(TransactionCase):
|
|
def test_is_namedtuple(self):
|
|
self.assertFalse(generalutils.is_namedtuple(["a list"]))
|
|
self.assertFalse(generalutils.is_namedtuple(("a normal tuple",)))
|
|
a_namedtuple = namedtuple("a_namedtuple", ["some_string"])
|
|
self.assertTrue(generalutils.is_namedtuple(a_namedtuple("a namedtuple")))
|
|
|
|
class AnotherNamedtuple(typing.NamedTuple):
|
|
some_string: str
|
|
|
|
self.assertTrue(
|
|
generalutils.is_namedtuple(AnotherNamedtuple("a subclassed namedtuple"))
|
|
)
|
|
|
|
def test_varmap(self):
|
|
top = {
|
|
"middle": [
|
|
"a list",
|
|
"that contains",
|
|
"the outer dict",
|
|
],
|
|
}
|
|
top["middle"].append(top)
|
|
|
|
def func(_, two):
|
|
return two
|
|
|
|
# Don't care about the result, just that we don't get a recursion error
|
|
generalutils.varmap(func, top)
|
|
|
|
def test_get_environ(self):
|
|
fake_environ = {
|
|
"REMOTE_ADDR": None,
|
|
"SERVER_PORT": None,
|
|
"FORBIDDEN_VAR": None,
|
|
}
|
|
self.assertEqual(
|
|
["REMOTE_ADDR", "SERVER_PORT"],
|
|
list(key for key, _ in generalutils.get_environ(fake_environ)),
|
|
)
|