Skip to content

Commit 1bea4e6

Browse files
lmignonrven
authored andcommitted
[FIX] fastapi: explicit load of demo data for tests
1 parent 38ce679 commit 1bea4e6

4 files changed

Lines changed: 22 additions & 3 deletions

File tree

fastapi/models/fastapi_endpoint.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from starlette.routing import Mount
1212

1313
from odoo import api, exceptions, fields, models, tools
14+
from odoo.tools import convert
1415

1516
from fastapi import APIRouter, Depends, FastAPI
1617

@@ -338,3 +339,19 @@ def _get_fastapi_app_middlewares(self) -> list[Middleware]:
338339
def _get_fastapi_app_dependencies(self) -> list[Depends]:
339340
"""Return the dependencies to use for the fastapi app."""
340341
return [Depends(dependencies.accept_language)]
342+
343+
# test utility
344+
@api.model
345+
def has_demo_data(self):
346+
return (
347+
self.env.ref("fastapi.fastapi_endpoint_demo", raise_if_not_found=False)
348+
is not None
349+
)
350+
351+
def _load_demo_data(self):
352+
if self.has_demo_data():
353+
return
354+
# Load demo data
355+
convert.convert_file(
356+
self.env, "fastapi", "demo/fastapi_endpoint_demo.xml", None, mode="init"
357+
)

fastapi/tests/common.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313
from odoo.api import Environment
1414
from odoo.tests import tagged
15-
from odoo.tests.common import TransactionCase
1615

1716
from odoo.addons.base.models.res_partner import ResPartner
1817
from odoo.addons.base.models.res_users import ResUsers
18+
from odoo.addons.base.tests.common import TransactionCaseWithUserDemo
1919

2020
from fastapi import APIRouter, FastAPI
2121
from fastapi.testclient import TestClient
@@ -47,7 +47,7 @@ def default_exception_handler(request: Request, exc: Exception) -> Response:
4747

4848

4949
@tagged("post_install", "-at_install")
50-
class FastAPITransactionCase(TransactionCase):
50+
class FastAPITransactionCase(TransactionCaseWithUserDemo):
5151
"""
5252
This class is a base class for FastAPI tests.
5353

fastapi/tests/test_fastapi.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class FastAPIHttpCase(HttpCase):
1919
@classmethod
2020
def setUpClass(cls):
2121
super().setUpClass()
22+
cls.env["fastapi.endpoint"]._load_demo_data()
2223
cls.fastapi_demo_app = cls.env.ref("fastapi.fastapi_endpoint_demo")
2324
cls.fastapi_multi_demo_app = cls.env.ref(
2425
"fastapi.fastapi_endpoint_multislash_demo"

fastapi/tests/test_fastapi_demo.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class FastAPIDemoCase(FastAPITransactionCase):
3232
@classmethod
3333
def setUpClass(cls) -> None:
3434
super().setUpClass()
35+
cls.env["fastapi.endpoint"]._load_demo_data()
3536
cls.default_fastapi_router = demo_router
3637
cls.default_fastapi_running_user = cls.env.ref("fastapi.my_demo_app_user")
3738
cls.default_fastapi_authenticated_partner = cls.env["res.partner"].create(
@@ -67,7 +68,7 @@ def test_who_ami_http_basic(self) -> None:
6768
) as test_client:
6869
response: Response = test_client.get("/demo/who_ami", auth=("demo", "demo"))
6970
self.assertEqual(response.status_code, status.HTTP_200_OK)
70-
partner = self.env.ref("base.partner_demo")
71+
partner = self.partner_demo
7172
self.assertDictEqual(
7273
response.json(),
7374
{

0 commit comments

Comments
 (0)