use super::*;
macro_rules! rollback_shapes {
($($(#[$doc:meta])* $name:ident: $query:expr, $scope:expr;)*) => {
$(
$(#[$doc])*
mod $name {
use super::*;
/// A fresh in-memory graph: no column stores, no user indexes.
#[test]
fn plain() {
assert_rolls_back(&mut seeded(), $query, $scope);
}
#[test]
fn columnar() {
assert_rolls_back(&mut seeded_columnar(), $query, $scope);
}
#[test]
fn indexed() {
assert_rolls_back(&mut seeded_indexed(), $query, $scope);
}
#[test]
fn mapped() {
assert_rolls_back(&mut seeded_mapped(), $query, $scope);
}
}
)*
};
}
rollback_shapes! {
create_nodes:
"CREATE (:Item {id: 100}), (:Item {id: 101, bad: duration({months: 2147483648})})",
None;
create_nodes_and_edges:
"CREATE (x:Item {id: 200})-[:LINKS {weight: 1}]->(y:Item {id: 201}), \
(z:Blocked {id: 202})",
Some(&["Item"]);
create_with_secondary_labels:
"CREATE (:Tag:Hot:Fresh {id: 300}), (:Blocked {id: 301})",
Some(&["Tag"]);
set_properties:
"MATCH (n:Item) SET n.qty = n.qty + 1, n.name = 'touched', \
n.bad = duration({months: 2147483648})",
None;
set_on_second_type:
"MATCH (n:Item), (t:Tag) WHERE n.id = 1 AND t.id = 1 \
SET n.marker = 'x', t.marker = 'y'",
Some(&["Item"]);
set_label:
"MATCH (t:Tag {id: 2}) SET t:Hot, t.bad = duration({months: 2147483648})",
None;
remove_property_and_label:
"MATCH (t:Tag {id: 1}) REMOVE t.name, t:Hot \
CREATE (:Blocked {id: 400})",
Some(&["Tag"]);
detach_delete_one:
"MATCH (n:Item {id: 2}) DETACH DELETE n CREATE (:Blocked {id: 500})",
Some(&["Item"]);
detach_delete_all:
"MATCH (n) DETACH DELETE n CREATE (:Blocked {id: 501})",
Some(&["Item", "Tag"]);
delete_labelled_node:
"MATCH (t:Tag) DETACH DELETE t CREATE (:Blocked {id: 502})",
Some(&["Tag"]);
delete_edge:
"MATCH ()-[r:LINKS]->() DELETE r CREATE (:Blocked {id: 600})",
Some(&["Item"]);
merge_create_arm:
"MERGE (n:Item {id: 700}) ON CREATE SET n.name = 'new' \
CREATE (:Blocked {id: 701})",
Some(&["Item"]);
merge_match_arm:
"MERGE (n:Item {id: 1}) ON MATCH SET n.name = 'seen' \
CREATE (:Blocked {id: 702})",
Some(&["Item"]);
foreach:
"FOREACH (i IN [1, 2, 3] | CREATE (:Item {id: 800 + i})) \
CREATE (:Blocked {id: 804})",
Some(&["Item"]);
multi_clause_create_then_set_then_delete:
"MATCH (n:Item {id: 3}) SET n.qty = 999 \
CREATE (:Item {id: 900}) \
CREATE (:Blocked {id: 901})",
Some(&["Item"]);
}