19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:30:27 +01:00
parent d1963a3c3a
commit 2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions

View file

@ -0,0 +1,102 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from dateutil.relativedelta import relativedelta
from odoo.fields import Datetime, Domain
from odoo.tests.common import TransactionCase
from odoo.addons.resource.models import utils
from odoo.tests import Form
class TestExpression(TransactionCase):
def test_filter_domain_leaf(self):
domains = [
['|', ('skills', '=', 1), ('admin', '=', True)],
['|', ('skills', '=', 1), ('admin', '=', True), '|', ('skills', '=', 2), ('admin', '=', True)],
['|', ('skills', '=', 1), ('skills', '=', 2), '|', ('skills', '=', 2), ('admin', '=', True)],
['|', '|', ('skills', '=', 1), ('skills', '=', True), '|', ('skills', '=', 2), ('admin', '=', True)],
['|', '|', ('admin', '=', 1), ('admin', '=', True), '&', ('skills', '=', 2), ('admin', '=', True)],
['|', '|', '!', ('admin', '=', 1), ('admin', '=', True), '!', '&', '!', ('skills', '=', 2), ('admin', '=', True)],
['&', '!', ('skills', '=', 2), ('admin', '=', True)],
[['start_datetime', '<=', '2022-12-17 22:59:59'], ['end_datetime', '>=', '2022-12-10 23:00:00']],
[('admin', '=', 1), ('admin', '=', 1), '|', ('admin', '=', 1), ('admin', '=', 1), ('skills', '=', 2)]
]
fields_to_remove = [['skills'], ['admin', 'skills']]
expected_results = [
[
[('admin', '=', True)],
[('admin', '=', True), ('admin', '=', True)],
[('admin', '=', True)],
[('admin', '=', True)],
['|', '|', ('admin', '=', 1), ('admin', '=', True), ('admin', '=', True)],
['|', '|', '!', ('admin', '=', 1), ('admin', '=', True), '!', ('admin', '=', True)],
[('admin', '=', True)],
[['start_datetime', '<=', '2022-12-17 22:59:59'], ['end_datetime', '>=', '2022-12-10 23:00:00']],
[('admin', '=', 1), ('admin', '=', 1), '|', ('admin', '=', 1), ('admin', '=', 1)],
],
[
[],
[],
[],
[],
[],
[],
[],
[['start_datetime', '<=', '2022-12-17 22:59:59'], ['end_datetime', '>=', '2022-12-10 23:00:00']],
[],
],
]
for idx, fields in enumerate(fields_to_remove):
results = [utils.filter_domain_leaf(dom, lambda field: field not in fields) for dom in domains]
self.assertEqual(results, [Domain(expected) for expected in expected_results[idx]])
# Testing field mapping 1
self.assertEqual(
Domain('field4', '!=', 'test'),
utils.filter_domain_leaf(
['|', ('field1', 'in', [1, 2]), '!', ('field2', '=', False), ('field3', '!=', 'test')],
lambda field: field == 'field3',
field_name_mapping={'field3': 'field4'},
)
)
def test_resource_calendar_leave_compute_date_to(self):
"""
Test date_to is computed when date_from is changed,
except when it already has a valid value.
"""
date_from = Datetime.from_string('2024-05-01 00:00:00')
date_to = Datetime.from_string('2024-05-03 23:59:59')
leave = self.env['resource.calendar.leaves'].create({
'date_from': date_from,
'date_to': date_to,
})
leave.date_from -= relativedelta(minutes=5)
self.assertEqual(leave.date_to, date_to, "date_to shouldn't get recomputed if still valid")
leave.date_from += relativedelta(years=5)
self.assertGreater(leave.date_to, date_to, "date_to should get recomputed when invalid")
def test_resource_creation_with_date_from(self):
"""
Test resource creation with a date_from.
AssertError is raised when date_from is not provided.
"""
with self.assertRaises(AssertionError):
with Form(self.env['resource.calendar.leaves']) as res:
res.date_from = False
res.date_to = Datetime.now()
with Form(self.env['resource.calendar.leaves']) as res:
date_from = Datetime.now()
date_to = Datetime.now() + relativedelta(hours=24)
res.date_from = date_from
res.date_to = date_to
self.assertFalse(res.id, 'The resource does not have an id before saving')
res.save()
self.assertTrue(res.id, 'The resource was successfully created')
self.assertEqual(res.date_from, Datetime.to_string(date_from))
self.assertEqual(res.date_to, Datetime.to_string(date_to))