|
30 | 30 | import apoc.path.Paths;
|
31 | 31 | import apoc.util.TestUtil;
|
32 | 32 | import apoc.util.collection.Iterables;
|
| 33 | +import java.util.HashSet; |
33 | 34 | import java.util.Iterator;
|
34 | 35 | import java.util.List;
|
35 | 36 | import java.util.Map;
|
@@ -415,6 +416,62 @@ public void testVirtualFromNodeFunction() {
|
415 | 416 | });
|
416 | 417 | }
|
417 | 418 |
|
| 419 | + @Test |
| 420 | + public void test2VirtualFromNodesHaveUniqueIDs() { |
| 421 | + testCall( |
| 422 | + db, |
| 423 | + """ |
| 424 | + CREATE (n1:Cat { name:'Maja', born: 2023 } ), (n2:Cat { name:'Pelle', born: 2023 } ) |
| 425 | + RETURN apoc.create.virtual.fromNode(n1, ['name']) AS node1, apoc.create.virtual.fromNode(n2, ['name']) AS node2 |
| 426 | + """, |
| 427 | + (row) -> { |
| 428 | + Node node1 = (Node) row.get("node1"); |
| 429 | + |
| 430 | + assertTrue(node1.hasLabel(label("Cat"))); |
| 431 | + var firstNodeID = node1.getId(); |
| 432 | + assertTrue(node1.getId() < 0); |
| 433 | + assertEquals("Maja", node1.getProperty("name")); |
| 434 | + assertNull(node1.getProperty("born")); |
| 435 | + |
| 436 | + Node node2 = (Node) row.get("node2"); |
| 437 | + |
| 438 | + assertTrue(node2.hasLabel(label("Cat"))); |
| 439 | + var secondNodeID = node2.getId(); |
| 440 | + assertTrue(node2.getId() < 0); |
| 441 | + assertEquals("Pelle", node2.getProperty("name")); |
| 442 | + assertNull(node2.getProperty("born")); |
| 443 | + |
| 444 | + assertNotEquals(firstNodeID, secondNodeID); |
| 445 | + }); |
| 446 | + } |
| 447 | + |
| 448 | + @Test |
| 449 | + public void testVirtualFromSameNodesHaveUniqueIDs() { |
| 450 | + testResult( |
| 451 | + db, |
| 452 | + """ |
| 453 | + CREATE (n1:Cat { name:'Maja', born: 2023 } ) |
| 454 | + WITH n1 |
| 455 | + UNWIND [1,2,3] AS i |
| 456 | + RETURN apoc.create.virtual.fromNode(n1, ['name']) AS node1 |
| 457 | + """, |
| 458 | + (result) -> { |
| 459 | + HashSet<Long> nodeIDs = new HashSet<>(); |
| 460 | + while (result.hasNext()) { |
| 461 | + Map<String, Object> r = result.next(); |
| 462 | + Node node1 = (Node) r.get("node1"); |
| 463 | + |
| 464 | + assertTrue(node1.hasLabel(label("Cat"))); |
| 465 | + nodeIDs.add(node1.getId()); |
| 466 | + assertTrue(node1.getId() < 0); |
| 467 | + assertEquals("Maja", node1.getProperty("name")); |
| 468 | + assertNull(node1.getProperty("born")); |
| 469 | + } |
| 470 | + |
| 471 | + assertEquals(3, nodeIDs.size()); |
| 472 | + }); |
| 473 | + } |
| 474 | + |
418 | 475 | @Test
|
419 | 476 | public void testVirtualFromNodeFunctionWithWrapping() {
|
420 | 477 | testCall(
|
|
0 commit comments