Skip to content

Commit bcd9afd

Browse files
authored
Merge pull request #38 from divad1196/fix_empty_value
Added tests and handling for empty Date/Datetime fields
2 parents 5c0f97c + 13a97a6 commit bcd9afd

11 files changed

+61
-7
lines changed

.pre-commit-config.yaml

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ repos:
2222

2323
- repo: https://github.com/astral-sh/ruff-pre-commit
2424
# Ruff version.
25-
rev: v0.1.5
25+
rev: v0.5.0
2626
hooks:
2727
# Run the linter.
2828
- id: ruff
@@ -47,4 +47,3 @@ repos:
4747
# hooks:
4848
# - id: poetry-export
4949
# args: ["--no-cache", "-f", "requirements.txt", "-o", "requirements.txt"]
50-
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-

odoo_graphql/graphql_resolver.py

+4
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,8 @@ def _get_type_serializer_date(field, variables=None):
422422
fmt = data.get("format")
423423

424424
def func(value):
425+
if value is False:
426+
return False
425427
if fmt:
426428
return value.strftime(fmt)
427429
return value.toordinal()
@@ -438,6 +440,8 @@ def _get_type_serializer_datetime(field, variables=None):
438440
fmt = data.get("format")
439441

440442
def func(value):
443+
if value is False:
444+
return False
441445
if tz:
442446
value = value.replace(tzinfo=pytz.utc).astimezone(tz)
443447
if fmt:

odoo_graphql_test/__init__.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11

2-
from . import controllers
2+
from . import models
3+
from . import controllers

odoo_graphql_test/models/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import graphql_dummy_test_model
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import json
2+
import logging
3+
4+
from odoo import models, fields, tools
5+
6+
7+
_logger = logging.getLogger(__name__)
8+
9+
10+
class GraphQLDummyDefaultTestModel(models.Model):
11+
_name = "graphql.dummy.default.test.model"
12+
13+
date = fields.Date()
14+
datetime = fields.Datetime()

odoo_graphql_test/tests/__init__.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@
33
# from . import filtered_relationship
44
# from . import archived_relationship
55

6-
from . import test_queries
6+
from . import test_queries
7+
from . import test_fields
8+
from . import test_filtered_relationship
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
query GetDummy {
2+
GraphqlDummyDefaultTestModel {
3+
id
4+
date
5+
datetime
6+
}
7+
}
+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Part of Odoo. See LICENSE file for full copyright and licensing details.
2+
3+
from odoo.osv import expression
4+
5+
from .common import TestGraphQlCommon
6+
from .utils import contains, firstMatching, get_query, open_query
7+
8+
9+
class TestField(TestGraphQlCommon):
10+
# def setUp(self):
11+
# super().setUp()
12+
13+
def test_empty_date_fields(self):
14+
with open_query("dummy.gql") as f:
15+
query = f.read()
16+
17+
dummy = self.env["graphql.dummy.default.test.model"].create({})
18+
res = self.env["graphql.handler"].handle_query(query)
19+
print(res)

odoo_graphql_test/tests/filtered_relationship.py renamed to odoo_graphql_test/tests/test_filtered_relationship.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,34 @@
22

33
from .common import TestGraphQlCommon
44
from .utils import firstMatching, get_query
5+
from odoo.osv import expression
56

67

8+
# TODO: Fix this test
79
class TestFilteredRelationship(TestGraphQlCommon):
810
def test_filtered_relationship(self):
911
query = get_query("contact_filtered_tag.gql")
1012
# These are demo data
1113
partner = self.env.ref("base.res_partner_address_15") # Brandon Freeman
1214
tag = self.env.ref("base.res_partner_category_8")
15+
16+
# Add the default tag to the user
1317
partner.category_id |= tag
1418

19+
1520
res = firstMatching(
1621
self.handle_query(query, variables={"domain": []})["data"]["ResPartner"],
1722
lambda p: p["id"] == partner.id,
1823
)
1924

2025
assert res["category_id"] is not None
26+
27+
2128
res = firstMatching(
22-
self.handle_query(query, variables={"domain": [("1", "=", "0")]})["data"][
29+
self.handle_query(query, variables={"domain": [expression.FALSE_LEAF]})["data"][
2330
"ResPartner"
2431
],
2532
lambda p: p["id"] == partner.id,
2633
)
27-
assert res["category_id"] is None
34+
assert isinstance(res["category_id"], list)
35+
assert not len(res["category_id"])

0 commit comments

Comments
 (0)