Skip to content

Commit 2f3b86f

Browse files
committed
Fix to_graphql method
1 parent ab563ac commit 2f3b86f

File tree

2 files changed

+39
-40
lines changed

2 files changed

+39
-40
lines changed

backend/infrahub/core/timestamp.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
from infrahub_sdk.timestamp import Timestamp as BaseTimestamp
66

77
if TYPE_CHECKING:
8-
from whenever import ZonedDateTime
8+
from datetime import datetime
99

1010

1111
class Timestamp(BaseTimestamp):
12-
async def to_graphql(self, *args: Any, **kwargs: Any) -> ZonedDateTime: # noqa: ARG002
13-
return self.obj
12+
async def to_graphql(self, *args: Any, **kwargs: Any) -> datetime: # noqa: ARG002
13+
return self.to_datetime()
1414

1515
def get_query_filter_path(self, rel_name: str = "r") -> tuple[str, dict]:
1616
"""

backend/tests/unit/graphql/diff/test_diff_tree_query.py

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from unittest.mock import AsyncMock
22

33
import pytest
4-
from whenever import Instant
54

65
from infrahub.core.branch import Branch
76
from infrahub.core.diff.coordinator import DiffCoordinator
@@ -217,8 +216,8 @@ async def test_diff_tree_no_changes(
217216
enriched_diff_metadata = await diff_coordinator.update_branch_diff(
218217
base_branch=default_branch, diff_branch=diff_branch
219218
)
220-
from_time = Instant.parse_common_iso(diff_branch.branched_from)
221-
to_time = Instant.parse_common_iso(enriched_diff_metadata.to_time.to_string())
219+
from_time = Timestamp(diff_branch.branched_from)
220+
to_time = enriched_diff_metadata.to_time
222221

223222
params = await prepare_graphql_params(
224223
db=db, include_mutation=False, include_subscription=False, branch=default_branch
@@ -235,8 +234,8 @@ async def test_diff_tree_no_changes(
235234
assert result.data["DiffTree"] == {
236235
"base_branch": default_branch.name,
237236
"diff_branch": diff_branch.name,
238-
"from_time": from_time.isoformat(),
239-
"to_time": to_time.isoformat(),
237+
"from_time": from_time.to_datetime().isoformat(),
238+
"to_time": to_time.to_datetime().isoformat(),
240239
"num_added": 0,
241240
"num_removed": 0,
242241
"num_updated": 0,
@@ -294,10 +293,10 @@ async def test_diff_tree_one_attr_change(
294293
main_crit.color.value = "#fedcba"
295294
branch_crit = await NodeManager.get_one(db=db, id=criticality_low.id, branch=diff_branch)
296295
branch_crit.color.value = "#abcdef"
297-
before_change_datetime = Instant.now()
296+
before_change_datetime = Timestamp()
298297
await main_crit.save(db=db)
299298
await branch_crit.save(db=db)
300-
after_change_datetime = Instant.now()
299+
after_change_datetime = Timestamp()
301300

302301
enriched_diff_metadata = await diff_coordinator.update_branch_diff(
303302
base_branch=default_branch, diff_branch=diff_branch
@@ -329,29 +328,29 @@ async def test_diff_tree_one_attr_change(
329328
root_value=None,
330329
variable_values={"branch": diff_branch.name},
331330
)
332-
from_time = Instant.parse_common_iso(diff_branch.branched_from)
333-
to_time = Instant.parse_common_iso(enriched_diff_metadata.to_time.to_string())
331+
from_time = Timestamp(diff_branch.branched_from)
332+
to_time = enriched_diff_metadata.to_time
334333

335334
assert result.errors is None
336335

337336
assert result.data["DiffTree"]
338337
assert result.data["DiffTree"]["nodes"]
339338
node_diff = result.data["DiffTree"]["nodes"][0]
340339
node_changed_at = node_diff["last_changed_at"]
341-
assert Instant.parse_common_iso(node_changed_at) < before_change_datetime
340+
assert Timestamp(node_changed_at) < before_change_datetime
342341
assert node_diff["attributes"]
343342
attribute_diff = node_diff["attributes"][0]
344343
attribute_changed_at = attribute_diff["last_changed_at"]
345-
assert Instant.parse_common_iso(attribute_changed_at) < before_change_datetime
344+
assert Timestamp(attribute_changed_at) < before_change_datetime
346345
assert attribute_diff["properties"]
347346
property_diff = attribute_diff["properties"][0]
348347
property_changed_at = property_diff["last_changed_at"]
349-
assert before_change_datetime < Instant.parse_common_iso(property_changed_at) < after_change_datetime
348+
assert before_change_datetime < Timestamp(property_changed_at) < after_change_datetime
350349
assert result.data["DiffTree"] == {
351350
"base_branch": "main",
352351
"diff_branch": diff_branch.name,
353-
"from_time": from_time.isoformat(),
354-
"to_time": to_time.isoformat(),
352+
"from_time": from_time.to_datetime().isoformat(),
353+
"to_time": to_time.to_datetime().isoformat(),
355354
"num_added": 0,
356355
"num_removed": 0,
357356
"num_updated": 1,
@@ -426,9 +425,9 @@ async def test_diff_tree_one_relationship_change(
426425
):
427426
branch_car = await NodeManager.get_one(db=db, id=car_accord_main.id, branch=diff_branch)
428427
await branch_car.owner.update(db=db, data=[person_jane_main])
429-
before_change_datetime = Instant.now()
428+
before_change_datetime = Timestamp()
430429
await branch_car.save(db=db)
431-
after_change_datetime = Instant.now()
430+
after_change_datetime = Timestamp()
432431
accord_label = await branch_car.render_display_label(db=db)
433432
john_label = await person_john_main.render_display_label(db=db)
434433
jane_label = await person_jane_main.render_display_label(db=db)
@@ -446,8 +445,8 @@ async def test_diff_tree_one_relationship_change(
446445
root_value=None,
447446
variable_values={"branch": diff_branch.name},
448447
)
449-
from_time = Instant.parse_common_iso(diff_branch.branched_from)
450-
to_time = Instant.parse_common_iso(enriched_diff_metadata.to_time.to_string())
448+
from_time = Timestamp(diff_branch.branched_from)
449+
to_time = enriched_diff_metadata.to_time
451450

452451
assert result.errors is None
453452

@@ -457,8 +456,8 @@ async def test_diff_tree_one_relationship_change(
457456
assert diff_tree_response == {
458457
"base_branch": "main",
459458
"diff_branch": diff_branch.name,
460-
"from_time": from_time.format_common_iso(),
461-
"to_time": to_time.format_common_iso(),
459+
"from_time": from_time.to_datetime().isoformat(),
460+
"to_time": to_time.to_datetime().isoformat(),
462461
"num_added": 0,
463462
"num_removed": 0,
464463
"num_updated": 3,
@@ -473,7 +472,7 @@ async def test_diff_tree_one_relationship_change(
473472
car_response = node_response_by_id[car_accord_main.id]
474473
car_relationship_response = car_response.pop("relationships")
475474
car_changed_at = car_response["last_changed_at"]
476-
assert Instant.parse_common_iso(car_changed_at) < before_change_datetime
475+
assert Timestamp(car_changed_at) < before_change_datetime
477476
assert car_response == {
478477
"uuid": car_accord_main.id,
479478
"kind": car_accord_main.get_kind(),
@@ -492,7 +491,7 @@ async def test_diff_tree_one_relationship_change(
492491
assert set(car_relationships_by_name.keys()) == {"owner"}
493492
owner_rel = car_relationships_by_name["owner"]
494493
owner_changed_at = owner_rel["last_changed_at"]
495-
assert before_change_datetime < Instant.parse_common_iso(owner_changed_at) < after_change_datetime
494+
assert before_change_datetime < Timestamp(owner_changed_at) < after_change_datetime
496495
owner_elements = owner_rel.pop("elements")
497496
assert owner_rel == {
498497
"name": "owner",
@@ -504,7 +503,7 @@ async def test_diff_tree_one_relationship_change(
504503
assert len(owner_elements) == 1
505504
owner_element = owner_elements[0]
506505
owner_element_changed_at = owner_element["last_changed_at"]
507-
assert before_change_datetime < Instant.parse_common_iso(owner_element_changed_at) < after_change_datetime
506+
assert before_change_datetime < Timestamp(owner_element_changed_at) < after_change_datetime
508507
owner_properties = owner_element.pop("properties")
509508
assert owner_element == {
510509
"status": UPDATED_ACTION,
@@ -517,7 +516,7 @@ async def test_diff_tree_one_relationship_change(
517516
assert set(owner_properties_by_type.keys()) == {IS_RELATED_TYPE, IS_PROTECTED_TYPE, IS_VISIBLE_TYPE}
518517
owner_prop = owner_properties_by_type[IS_RELATED_TYPE]
519518
owner_prop_changed_at = owner_prop["last_changed_at"]
520-
assert before_change_datetime < Instant.parse_common_iso(owner_prop_changed_at) < after_change_datetime
519+
assert before_change_datetime < Timestamp(owner_prop_changed_at) < after_change_datetime
521520
assert owner_prop == {
522521
"property_type": IS_RELATED_TYPE,
523522
"last_changed_at": owner_prop_changed_at,
@@ -530,7 +529,7 @@ async def test_diff_tree_one_relationship_change(
530529
}
531530
owner_prop = owner_properties_by_type[IS_RELATED_TYPE]
532531
owner_prop_changed_at = owner_prop["last_changed_at"]
533-
assert before_change_datetime < Instant.parse_common_iso(owner_prop_changed_at) < after_change_datetime
532+
assert before_change_datetime < Timestamp(owner_prop_changed_at) < after_change_datetime
534533
assert owner_prop == {
535534
"property_type": IS_RELATED_TYPE,
536535
"last_changed_at": owner_prop_changed_at,
@@ -545,7 +544,7 @@ async def test_diff_tree_one_relationship_change(
545544
john_response = node_response_by_id[person_john_main.id]
546545
john_relationship_response = john_response.pop("relationships")
547546
john_changed_at = john_response["last_changed_at"]
548-
assert Instant.parse_common_iso(john_changed_at) < before_change_datetime
547+
assert Timestamp(john_changed_at) < before_change_datetime
549548
assert john_response == {
550549
"uuid": person_john_main.id,
551550
"kind": person_john_main.get_kind(),
@@ -564,7 +563,7 @@ async def test_diff_tree_one_relationship_change(
564563
assert set(john_relationships_by_name.keys()) == {"cars"}
565564
cars_rel = john_relationships_by_name["cars"]
566565
cars_changed_at = cars_rel["last_changed_at"]
567-
assert before_change_datetime < Instant.parse_common_iso(cars_changed_at) < after_change_datetime
566+
assert before_change_datetime < Timestamp(cars_changed_at) < after_change_datetime
568567
cars_elements = cars_rel.pop("elements")
569568
assert cars_rel == {
570569
"name": "cars",
@@ -576,7 +575,7 @@ async def test_diff_tree_one_relationship_change(
576575
assert len(cars_elements) == 1
577576
cars_element = cars_elements[0]
578577
cars_element_changed_at = cars_element["last_changed_at"]
579-
assert before_change_datetime < Instant.parse_common_iso(cars_element_changed_at) < after_change_datetime
578+
assert before_change_datetime < Timestamp(cars_element_changed_at) < after_change_datetime
580579
cars_properties = cars_element.pop("properties")
581580
assert cars_element == {
582581
"status": REMOVED_ACTION,
@@ -594,7 +593,7 @@ async def test_diff_tree_one_relationship_change(
594593
]:
595594
cars_prop = cars_properties_by_type[property_type]
596595
cars_prop_changed_at = cars_prop["last_changed_at"]
597-
assert before_change_datetime < Instant.parse_common_iso(cars_prop_changed_at) < after_change_datetime
596+
assert before_change_datetime < Timestamp(cars_prop_changed_at) < after_change_datetime
598597
assert cars_prop == {
599598
"property_type": property_type,
600599
"last_changed_at": cars_prop_changed_at,
@@ -609,7 +608,7 @@ async def test_diff_tree_one_relationship_change(
609608
jane_response = node_response_by_id[person_jane_main.id]
610609
jane_relationship_response = jane_response.pop("relationships")
611610
jane_changed_at = jane_response["last_changed_at"]
612-
assert Instant.parse_common_iso(jane_changed_at) < before_change_datetime
611+
assert Timestamp(jane_changed_at) < before_change_datetime
613612
assert jane_response == {
614613
"uuid": person_jane_main.id,
615614
"kind": person_jane_main.get_kind(),
@@ -628,7 +627,7 @@ async def test_diff_tree_one_relationship_change(
628627
assert set(jane_relationships_by_name.keys()) == {"cars"}
629628
cars_rel = jane_relationships_by_name["cars"]
630629
cars_changed_at = cars_rel["last_changed_at"]
631-
assert before_change_datetime < Instant.parse_common_iso(cars_changed_at) < after_change_datetime
630+
assert before_change_datetime < Timestamp(cars_changed_at) < after_change_datetime
632631
cars_elements = cars_rel.pop("elements")
633632
assert cars_rel == {
634633
"name": "cars",
@@ -640,7 +639,7 @@ async def test_diff_tree_one_relationship_change(
640639
assert len(cars_elements) == 1
641640
cars_element = cars_elements[0]
642641
cars_element_changed_at = cars_element["last_changed_at"]
643-
assert before_change_datetime < Instant.parse_common_iso(cars_element_changed_at) < after_change_datetime
642+
assert before_change_datetime < Timestamp(cars_element_changed_at) < after_change_datetime
644643
cars_properties = cars_element.pop("properties")
645644
assert cars_element == {
646645
"status": ADDED_ACTION,
@@ -658,7 +657,7 @@ async def test_diff_tree_one_relationship_change(
658657
]:
659658
cars_prop = cars_properties_by_type[property_type]
660659
cars_prop_changed_at = cars_prop["last_changed_at"]
661-
assert before_change_datetime < Instant.parse_common_iso(cars_prop_changed_at) < after_change_datetime
660+
assert before_change_datetime < Timestamp(cars_prop_changed_at) < after_change_datetime
662661
assert cars_prop == {
663662
"property_type": property_type,
664663
"last_changed_at": cars_prop_changed_at,
@@ -745,8 +744,8 @@ async def test_diff_tree_summary_no_changes(
745744
enriched_diff_metadata = await diff_coordinator.update_branch_diff(
746745
base_branch=default_branch, diff_branch=diff_branch
747746
)
748-
from_time = Instant.parse_common_iso(diff_branch.branched_from)
749-
to_time = Instant.parse_common_iso(enriched_diff_metadata.to_time.to_string())
747+
from_time = Timestamp(diff_branch.branched_from)
748+
to_time = enriched_diff_metadata.to_time
750749

751750
params = await prepare_graphql_params(
752751
db=db, include_mutation=False, include_subscription=False, branch=default_branch
@@ -763,8 +762,8 @@ async def test_diff_tree_summary_no_changes(
763762
assert result.data["DiffTreeSummary"] == {
764763
"base_branch": default_branch.name,
765764
"diff_branch": diff_branch.name,
766-
"from_time": from_time.isoformat(),
767-
"to_time": to_time.isoformat(),
765+
"from_time": from_time.to_datetime().isoformat(),
766+
"to_time": to_time.to_datetime().isoformat(),
768767
"num_added": 0,
769768
"num_removed": 0,
770769
"num_updated": 0,

0 commit comments

Comments
 (0)