[TEST] base_partition: add coverage

pull/2615/head
nans 2020-10-11 21:17:43 +02:00 committed by hda
parent 0b0103f382
commit aaec909b62
2 changed files with 23 additions and 2 deletions

View File

@ -5,7 +5,7 @@
{ {
"name": "Base Partition", "name": "Base Partition",
"summary": "Base module that provide the partition method on all models", "summary": "Base module that provide the partition method on all models",
"version": "12.0.0.0.0", "version": "12.0.1.0.0",
"category": "Uncategorized", "category": "Uncategorized",
"website": "https://github.com/OCA/server-tools", "website": "https://github.com/OCA/server-tools",
"author": "Acsone, Odoo Community Association (OCA)", "author": "Acsone, Odoo Community Association (OCA)",

View File

@ -3,7 +3,9 @@
import functools import functools
import math import math
from datetime import datetime
from odoo import fields
from odoo.exceptions import UserError from odoo.exceptions import UserError
from odoo.tests.common import TransactionCase from odoo.tests.common import TransactionCase
@ -88,6 +90,11 @@ class TestPartition(TransactionCase):
records = functools.reduce(sum, partition.values()) records = functools.reduce(sum, partition.values())
self.assertEqual(self.xyz, records) # we get the same recordset self.assertEqual(self.xyz, records) # we get the same recordset
def test_partition_lambda(self):
"""Test an arbitrary predicate."""
partition = (self.c1 | self.c2).partition(lambda c: "2" in c.name)
self.assertEqual(set(partition.keys()), {True, False})
def test_batch(self): def test_batch(self):
"""The sum of all batches should be the original recordset; """The sum of all batches should be the original recordset;
an empty recordset should return no batch; an empty recordset should return no batch;
@ -127,7 +134,7 @@ class TestPartition(TransactionCase):
self.assertEqual(list(record_data.keys()), field_list) self.assertEqual(list(record_data.keys()), field_list)
def test_filtered_domain(self): def test_filtered_domain(self):
"""Initially yo satisfy the coverage tools, this test actually documents """Initially to satisfy the coverage tools, this test actually documents
a number of pitfalls of filtered_domain and the differences with a search. a number of pitfalls of filtered_domain and the differences with a search.
Commented examples would cause warnings, and even though these are edge-cases Commented examples would cause warnings, and even though these are edge-cases
these behaviours should be known. these behaviours should be known.
@ -182,3 +189,17 @@ class TestPartition(TransactionCase):
# eq_domain = [(field, "=", r[field].ids)] # eq_domain = [(field, "=", r[field].ids)]
# self.assertEqual(self.xyz.search(eq_domain), self.xyz) # self.assertEqual(self.xyz.search(eq_domain), self.xyz)
# self.assertEqual(self.xyz.filtered_domain(eq_domain), empty_recordset) # self.assertEqual(self.xyz.filtered_domain(eq_domain), empty_recordset)
# coverage
records.filtered_domain(["!", (1, "=", 1)])
for operator in ["<", ">", "<=", ">="]:
date_now_str = fields.Datetime.to_string(datetime.now())
records.filtered_domain([("create_date", operator, date_now_str)])
for operator in ["!=", "like", "not like", "=?", "ilike", "=like", "not ilike"]:
records.filtered_domain([("name", operator, "c")])
records.filtered_domain(
["&", ("parent_id.id", "in", [self.parent1.id]), (1, "=", 1)]
)
records.filtered_domain(["|", ("parent_id", "child_of", [42]), (0, "=", 1)])
with self.assertRaises(ValueError):
records.filtered_domain([("name", "===", "test")])