Skip to content

Commit 0b35497

Browse files
committed
Add unit tests for relationship first_ingested_at
1 parent d1cb510 commit 0b35497

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

tests/unit/test_ingest_query_builder.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,21 @@ def test_node_update_with_created_timestamp_generates_exepected_queries(
357357
],
358358
)
359359

360+
361+
RELATIONSHIP_BETWEEN_TWO_NODES_EXPECTED_QUERY_WITH_MULTI_KEY_AND_TIMESTAMP = QueryBatch(
362+
"""MATCH (from_node: TestType) WHERE from_node.id = params.__from_node_id MATCH (to_node: ComplexType) WHERE to_node.id_part1 = params.__to_node_id_part1 AND to_node.id_part2 = params.__to_node_id_part2
363+
MERGE (from_node)-[rel: RELATED_TO]->(to_node) ON CREATE SET rel.first_ingested_at = params.__rel_properties['last_ingested_at'] SET rel += params.__rel_properties""",
364+
[
365+
{
366+
"__from_node_id": "foo",
367+
"__to_node_id_part1": "foo",
368+
"__to_node_id_part2": "bar",
369+
"__rel_properties": RELATIONSHIP_BETWEEN_TWO_NODES_WITH_MULTI_KEY.relationship.properties,
370+
}
371+
],
372+
)
373+
374+
360375
RELATIONSHIP_BETWEEN_TWO_NODES_WITH_MULTI_KEY_AND_CREATE = RelationshipWithNodes(
361376
from_node=SIMPLE_NODE,
362377
to_node=COMPLEX_NODE_TWO,
@@ -377,6 +392,20 @@ def test_node_update_with_created_timestamp_generates_exepected_queries(
377392
],
378393
)
379394

395+
RELATIONSHIP_BETWEEN_TWO_NODES_EXPECTED_QUERY_WITH_MULTI_KEY_AND_CREATE_AND_TIMESTAMP = QueryBatch(
396+
"""MATCH (from_node: TestType) WHERE from_node.id = params.__from_node_id MATCH (to_node: ComplexType) WHERE to_node.id_part1 = params.__to_node_id_part1 AND to_node.id_part2 = params.__to_node_id_part2
397+
CREATE (from_node)-[rel: RELATED_TO]->(to_node) ON CREATE SET rel.first_ingested_at = params.__rel_properties['last_ingested_at'] SET rel += params.__rel_properties""",
398+
[
399+
{
400+
"__from_node_id": "foo",
401+
"__to_node_id_part1": "foo",
402+
"__to_node_id_part2": "bar",
403+
"__rel_properties": RELATIONSHIP_BETWEEN_TWO_NODES_WITH_MULTI_KEY_AND_CREATE.relationship.properties,
404+
}
405+
],
406+
)
407+
408+
380409

381410
@pytest.mark.parametrize(
382411
"rel,expected_query",
@@ -415,3 +444,47 @@ def test_relationship_update_generates_expected_queries(
415444
assert_that(
416445
query.batched_parameter_sets, equal_to(expected_query.batched_parameter_sets)
417446
)
447+
448+
449+
@pytest.mark.parametrize(
450+
"rel,expected_query",
451+
[
452+
[
453+
RELATIONSHIP_BETWEEN_TWO_NODES,
454+
RELATIONSHIP_BETWEEN_TWO_NODES_EXPECTED_QUERY_WITH_CREATED_TIMESTAMP,
455+
],
456+
[
457+
RELATIONSHIP_BETWEEN_TWO_NODES_WITH_MULTI_KEY,
458+
RELATIONSHIP_BETWEEN_TWO_NODES_EXPECTED_QUERY_WITH_MULTI_KEY_AND_TIMESTAMP,
459+
]
460+
,
461+
[
462+
RELATIONSHIP_BETWEEN_TWO_NODES_WITH_MULTI_KEY_AND_CREATE,
463+
RELATIONSHIP_BETWEEN_TWO_NODES_EXPECTED_QUERY_WITH_MULTI_KEY_AND_CREATE_AND_TIMESTAMP,
464+
],
465+
],
466+
)
467+
def test_relationship_update_with_created_timestamp_generates_expected_queries(
468+
query_builder, rel, expected_query
469+
):
470+
query_builder.set_first_ingested_at = True
471+
to_op = OperationOnNodeIdentity(rel.to_node.identity_shape, NodeCreationRule.EAGER)
472+
from_op = OperationOnNodeIdentity(
473+
rel.from_node.identity_shape, NodeCreationRule.MATCH_ONLY
474+
)
475+
operation = OperationOnRelationshipIdentity(
476+
from_op,
477+
to_op,
478+
rel.relationship.identity_shape,
479+
relationship_creation_rule=rel.relationship_creation_rule,
480+
)
481+
query = query_builder.generate_batch_update_relationship_query_batch(
482+
operation, [rel]
483+
)
484+
assert_that(
485+
query.query_statement,
486+
equal_to_ignoring_whitespace(expected_query.query_statement),
487+
)
488+
assert_that(
489+
query.batched_parameter_sets, equal_to(expected_query.batched_parameter_sets)
490+
)

0 commit comments

Comments
 (0)