Skip to content

Commit 4fb83e5

Browse files
[MIG] pydantic v2: use res.currency.rate to test the date serialization
date field on res.partner has been removed in v18
1 parent f8e55cb commit 4fb83e5

1 file changed

Lines changed: 17 additions & 13 deletions

File tree

pydantic/tests/test_pydantic_generic_odoo_getter.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ class OdooBaseModel(PydanticOrmBaseModel):
1414

1515
class PartnerModel(OdooBaseModel):
1616
name: str
17-
date: datetime.date | None = None
1817

1918

2019
class UserFlatModel(OdooBaseModel):
@@ -38,6 +37,11 @@ class UserDetailsModel(UserModel):
3837
write_date: datetime.datetime
3938

4039

40+
class CurrencyRateModel(OdooBaseModel):
41+
name: datetime.date | None = None
42+
rate: float
43+
44+
4145
class CommonPydanticCase(TransactionCase):
4246
@classmethod
4347
def setUpClass(cls):
@@ -46,28 +50,29 @@ def setUpClass(cls):
4650
cls.user_demo.action_id = False
4751
cls.user_demo.signature = False
4852
cls.user_demo.share = False
53+
cls.currency_eur = cls.env.ref("base.USD")
54+
cls.currency_rate = cls.env.ref("base.rateUSD")
4955

5056

5157
class TestGenericOdooGetterPydanticV2Case(CommonPydanticCase):
5258
def test_user_model_serialization(self):
53-
self.user_demo.partner_id.date = None
59+
self.currency_rate.name = None # name is a date field
5460
self.assertEqual(
55-
UserModel.model_validate(self.user_demo, from_attributes=True).model_dump(),
61+
CurrencyRateModel.model_validate(
62+
self.currency_rate, from_attributes=True
63+
).model_dump(),
5664
{
57-
"id": self.user_demo.id,
58-
"partner": {
59-
"id": self.user_demo.partner_id.id,
60-
"name": self.user_demo.partner_id.name,
61-
"date": None,
62-
},
65+
"id": self.currency_rate.id,
66+
"name": None,
67+
"rate": self.currency_rate.rate,
6368
},
6469
)
6570

6671
def test_user_model_serialization_date(self):
67-
self.user_demo.partner_id.date = fields.Date.today()
72+
self.currency_rate.name = fields.Date.today() # name is a date field
6873
self.assertEqual(
69-
UserModel.model_validate(self.user_demo).partner.date,
70-
self.user_demo.partner_id.date,
74+
CurrencyRateModel.model_validate(self.currency_rate).name,
75+
self.currency_rate.name,
7176
)
7277

7378
def test_user_model_details_serialization_datetime(self):
@@ -91,7 +96,6 @@ def test_user_details_model_serialization(self):
9196
"partner": {
9297
"id": self.user_demo.partner_id.id,
9398
"name": self.user_demo.partner_id.name,
94-
"date": None,
9599
},
96100
"groups": [
97101
{

0 commit comments

Comments
 (0)