Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions infrahub_sdk/node/node.py
Original file line number Diff line number Diff line change
Expand Up @@ -506,9 +506,12 @@
rel_data = data.get(rel_schema.name, None) if isinstance(data, dict) else None

if rel_schema.cardinality == "one":
self._relationship_cardinality_one_data[rel_schema.name] = RelatedNode(
name=rel_schema.name, branch=self._branch, client=self._client, schema=rel_schema, data=rel_data
)
if isinstance(rel_data, RelatedNode):
self._relationship_cardinality_one_data[rel_schema.name] = rel_data

Check warning on line 510 in infrahub_sdk/node/node.py

View check run for this annotation

Codecov / codecov/patch

infrahub_sdk/node/node.py#L510

Added line #L510 was not covered by tests
else:
self._relationship_cardinality_one_data[rel_schema.name] = RelatedNode(
name=rel_schema.name, branch=self._branch, client=self._client, schema=rel_schema, data=rel_data
)
else:
self._relationship_cardinality_many_data[rel_schema.name] = RelationshipManager(
name=rel_schema.name,
Expand Down Expand Up @@ -1079,10 +1082,12 @@
rel_data = data.get(rel_schema.name, None) if isinstance(data, dict) else None

if rel_schema.cardinality == "one":
self._relationship_cardinality_one_data[rel_schema.name] = RelatedNodeSync(
name=rel_schema.name, branch=self._branch, client=self._client, schema=rel_schema, data=rel_data
)

if isinstance(rel_data, RelatedNodeSync):
self._relationship_cardinality_one_data[rel_schema.name] = rel_data

Check warning on line 1086 in infrahub_sdk/node/node.py

View check run for this annotation

Codecov / codecov/patch

infrahub_sdk/node/node.py#L1086

Added line #L1086 was not covered by tests
else:
self._relationship_cardinality_one_data[rel_schema.name] = RelatedNodeSync(
name=rel_schema.name, branch=self._branch, client=self._client, schema=rel_schema, data=rel_data
)
else:
self._relationship_cardinality_many_data[rel_schema.name] = RelationshipManagerSync(
name=rel_schema.name,
Expand Down
21 changes: 21 additions & 0 deletions tests/integration/test_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,27 @@ async def test_node_create_with_relationships(
assert node_after.name.value == node.name.value
assert node_after.manufacturer.peer.id == manufacturer_mercedes.id

async def test_node_create_with_relationships_using_related_node(
self,
default_branch: str,
client: InfrahubClient,
initial_schema: None,
manufacturer_mercedes,
car_golf,
person_joe,
):
related_node = car_golf.owner
node = await client.create(
kind=TESTING_CAR, name="Tiguan", color="Black", manufacturer=manufacturer_mercedes.id, owner=related_node
)
await node.save()
assert node.id is not None

node_after = await client.get(kind=TESTING_CAR, id=node.id, prefetch_relationships=True)
assert node_after.name.value == node.name.value
assert node_after.manufacturer.peer.id == manufacturer_mercedes.id
assert node_after.owner.peer.id == person_joe.id

async def test_node_update_with_original_data(
self,
default_branch: str,
Expand Down
Loading