69 lines
2.9 KiB
Python
69 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
from odoo.tests import common
|
|
|
|
|
|
class TestGroupbyWeek(common.TransactionCase):
|
|
""" Test for read_group() with group by week: the first day of the week
|
|
depends on the language.
|
|
"""
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.Model = cls.env['res.partner']
|
|
cls.records = cls.Model.create([ # BE, SY, US
|
|
{'date': '2022-05-27', 'name': 'May twenty-seven'}, # W21, W21, W22
|
|
{'date': '2022-05-28', 'name': 'May twenty-eight'}, # W21, W22, W22
|
|
{'date': '2022-05-29', 'name': 'May twenty-nine'}, # W21, W22, W23
|
|
{'date': '2022-05-30', 'name': 'May thirty'}, # W22, W22, W23
|
|
{'date': '2022-06-18', 'name': 'June eighteen'}, # W24, W25, W25
|
|
{'date': '2022-06-19', 'name': 'June nineteen'}, # W24, W25, W26
|
|
{'date': '2022-06-20', 'name': 'June twenty'}, # W25, W25, W26
|
|
])
|
|
|
|
def test_belgium(self):
|
|
""" fr_BE - first day of the week = Monday """
|
|
self.env['res.lang']._activate_lang('fr_BE')
|
|
groups = self.Model.with_context(lang='fr_BE').read_group(
|
|
[('id', 'in', self.records.ids)], fields=['date', 'name'], groupby=['date:week'])
|
|
self.assertDictEqual(
|
|
{week['date:week']: week['date_count'] for week in groups if week['date:week']},
|
|
{
|
|
'W21 2022': 3,
|
|
'W22 2022': 1,
|
|
'W24 2022': 2,
|
|
'W25 2022': 1,
|
|
},
|
|
"Week groups not matching when the first day of the week is Monday"
|
|
)
|
|
|
|
def test_syria(self):
|
|
""" ar_SY - first day of the week = Saturday """
|
|
self.env['res.lang']._activate_lang('ar_SY')
|
|
groups = self.Model.with_context(lang='ar_SY').read_group(
|
|
[('id', 'in', self.records.ids)], fields=['date', 'name'], groupby=['date:week'])
|
|
self.assertDictEqual(
|
|
{week['date:week']: week['date_count'] for week in groups if week['date:week']},
|
|
{
|
|
'W21 2022': 1,
|
|
'W22 2022': 3,
|
|
'W25 2022': 3,
|
|
},
|
|
"Week groups not matching when the first day of the week is Saturday"
|
|
)
|
|
|
|
def test_united_states(self):
|
|
""" en_US - first day of the week = Sunday """
|
|
groups = self.Model.with_context(lang='en_US').read_group(
|
|
[('id', 'in', self.records.ids)], fields=['date', 'name'], groupby=['date:week'])
|
|
self.assertDictEqual(
|
|
{week['date:week']: week['date_count'] for week in groups if week['date:week']},
|
|
{
|
|
'W22 2022': 2,
|
|
'W23 2022': 2,
|
|
'W25 2022': 1,
|
|
'W26 2022': 2,
|
|
},
|
|
"Week groups not matching when the first day of the week is Sunday"
|
|
)
|