Skip to content

Commit b0fd70a

Browse files
committed
[IMP] add tests on ColumnList
Will help ensure future changes won't brake anything. Part-of: #238 Signed-off-by: Christophe Simonis (chs) <[email protected]>
1 parent 3f7f80f commit b0fd70a

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

src/base/tests/test_util.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,31 @@ def test_create_column_with_fk(self):
839839
target = util.target_of(cr, "res_partner", "_test_lang_id")
840840
self.assertEqual(target, ("res_lang", "id", "res_partner__test_lang_id_fkey"))
841841

842+
def test_ColumnList(self):
843+
cr = self.env.cr
844+
845+
s = lambda c: c.as_string(cr._cnx)
846+
847+
columns = util.ColumnList(["a", "A"], ['"a"', '"A"'])
848+
self.assertEqual(len(columns), 2)
849+
850+
columns2 = util.ColumnList.from_unquoted(cr, ["a", "A"])
851+
self.assertEqual(columns2, columns)
852+
853+
# iterating it yield quoted columns
854+
self.assertEqual(list(iter(columns)), ['"a"', '"A"'])
855+
856+
self.assertEqual(list(columns.iter_unquoted()), ["a", "A"])
857+
858+
self.assertEqual(s(columns), '"a", "A"')
859+
860+
self.assertEqual(s(columns.using(alias="t")), '"t"."a", "t"."A"')
861+
self.assertEqual(s(columns.using(leading_comma=True)), ', "a", "A"')
862+
self.assertEqual(s(columns.using(trailing_comma=True)), '"a", "A",')
863+
self.assertEqual(s(columns.using(leading_comma=True, trailing_comma=True)), ', "a", "A",')
864+
865+
self.assertIs(columns.using(), columns)
866+
842867

843868
class TestORM(UnitTestCase):
844869
def test_create_cron(self):

src/util/pg.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,6 +1005,16 @@ def __init__(self, list_=(), quoted=()):
10051005
self._trailing_comma = False
10061006
self._alias = None
10071007

1008+
def __eq__(self, other):
1009+
return (
1010+
isinstance(other, ColumnList)
1011+
and other.data == self.data
1012+
and other._unquoted_columns == self._unquoted_columns
1013+
and other._leading_comma == self._leading_comma
1014+
and other._trailing_comma == self._trailing_comma
1015+
and other._alias == self._alias
1016+
)
1017+
10081018
@classmethod
10091019
def from_unquoted(cls, cr, list_):
10101020
"""

0 commit comments

Comments
 (0)