Use all available predefined variables (#157)
This commit is contained in:
parent
e8a1d15a55
commit
a3ecc52429
@ -89,13 +89,14 @@ std::vector<std::pair<Identifier, TriggerIdentifierTag>> GetPredefinedIdentifier
|
||||
return TagsToIdentifiers(
|
||||
IdentifierTag::CREATED_VERTICES, IdentifierTag::CREATED_EDGES, IdentifierTag::CREATED_OBJECTS,
|
||||
IdentifierTag::DELETED_VERTICES, IdentifierTag::DELETED_EDGES, IdentifierTag::DELETED_OBJECTS,
|
||||
IdentifierTag::SET_VERTEX_PROPERTIES, IdentifierTag::SET_EDGE_PROPERTIES,
|
||||
IdentifierTag::REMOVED_VERTEX_PROPERTIES, IdentifierTag::REMOVED_EDGE_PROPERTIES,
|
||||
IdentifierTag::SET_VERTEX_PROPERTIES, IdentifierTag::REMOVED_VERTEX_PROPERTIES,
|
||||
IdentifierTag::SET_VERTEX_LABELS, IdentifierTag::REMOVED_VERTEX_LABELS, IdentifierTag::UPDATED_VERTICES,
|
||||
IdentifierTag::UPDATED_EDGES, IdentifierTag::UPDATED_OBJECTS);
|
||||
IdentifierTag::SET_EDGE_PROPERTIES, IdentifierTag::REMOVED_EDGE_PROPERTIES, IdentifierTag::UPDATED_EDGES,
|
||||
IdentifierTag::UPDATED_OBJECTS);
|
||||
|
||||
case EventType::CREATE:
|
||||
return TagsToIdentifiers(IdentifierTag::CREATED_OBJECTS);
|
||||
return TagsToIdentifiers(IdentifierTag::CREATED_VERTICES, IdentifierTag::CREATED_EDGES,
|
||||
IdentifierTag::CREATED_OBJECTS);
|
||||
|
||||
case EventType::VERTEX_CREATE:
|
||||
return TagsToIdentifiers(IdentifierTag::CREATED_VERTICES);
|
||||
@ -104,7 +105,8 @@ std::vector<std::pair<Identifier, TriggerIdentifierTag>> GetPredefinedIdentifier
|
||||
return TagsToIdentifiers(IdentifierTag::CREATED_EDGES);
|
||||
|
||||
case EventType::DELETE:
|
||||
return TagsToIdentifiers(IdentifierTag::DELETED_OBJECTS);
|
||||
return TagsToIdentifiers(IdentifierTag::DELETED_VERTICES, IdentifierTag::DELETED_EDGES,
|
||||
IdentifierTag::DELETED_OBJECTS);
|
||||
|
||||
case EventType::VERTEX_DELETE:
|
||||
return TagsToIdentifiers(IdentifierTag::DELETED_VERTICES);
|
||||
@ -113,7 +115,11 @@ std::vector<std::pair<Identifier, TriggerIdentifierTag>> GetPredefinedIdentifier
|
||||
return TagsToIdentifiers(IdentifierTag::DELETED_EDGES);
|
||||
|
||||
case EventType::UPDATE:
|
||||
return TagsToIdentifiers(IdentifierTag::UPDATED_OBJECTS);
|
||||
return TagsToIdentifiers(IdentifierTag::SET_VERTEX_PROPERTIES, IdentifierTag::REMOVED_VERTEX_PROPERTIES,
|
||||
IdentifierTag::SET_VERTEX_LABELS, IdentifierTag::REMOVED_VERTEX_LABELS,
|
||||
IdentifierTag::UPDATED_VERTICES, IdentifierTag::SET_EDGE_PROPERTIES,
|
||||
IdentifierTag::REMOVED_EDGE_PROPERTIES, IdentifierTag::UPDATED_EDGES,
|
||||
IdentifierTag::UPDATED_OBJECTS);
|
||||
|
||||
case EventType::VERTEX_UPDATE:
|
||||
return TagsToIdentifiers(IdentifierTag::SET_VERTEX_PROPERTIES, IdentifierTag::REMOVED_VERTEX_PROPERTIES,
|
||||
|
@ -988,19 +988,95 @@ TEST_F(TriggerStoreTest, AnyTriggerAllKeywords) {
|
||||
query::TriggerStore store{testing_directory, &ast_cache, &*dba, &antlr_lock};
|
||||
|
||||
using namespace std::literals;
|
||||
const std::array keywords = {
|
||||
"createdVertices"sv, "createdEdges"sv, "createdObjects"sv,
|
||||
"deletedVertices"sv, "deletedEdges"sv, "deletedObjects"sv,
|
||||
"setVertexProperties"sv, "setEdgeProperties"sv, "removedVertexProperties"sv,
|
||||
"removedEdgeProperties"sv, "setVertexLabels"sv, "removedVertexLabels"sv,
|
||||
"updatedVertices"sv, "updatedEdges"sv, "updatedObjects"sv,
|
||||
|
||||
const auto created_vertices = "createdVertices"sv;
|
||||
const auto created_edges = "createdEdges"sv;
|
||||
const auto created_objects = "createdObjects"sv;
|
||||
const auto deleted_vertices = "deletedVertices"sv;
|
||||
const auto deleted_edges = "deletedEdges"sv;
|
||||
const auto deleted_objects = "deletedObjects"sv;
|
||||
const auto set_vertex_properties = "setVertexProperties"sv;
|
||||
const auto set_edge_properties = "setEdgeProperties"sv;
|
||||
const auto removed_vertex_properties = "removedVertexProperties"sv;
|
||||
const auto removed_edge_properties = "removedEdgeProperties"sv;
|
||||
const auto set_vertex_labels = "setVertexLabels"sv;
|
||||
const auto removed_vertex_labels = "removedVertexLabels"sv;
|
||||
const auto updated_vertices = "updatedVertices"sv;
|
||||
const auto updated_edges = "updatedEdges"sv;
|
||||
const auto updates_objects = "updatedObjects"sv;
|
||||
|
||||
std::array event_types_to_test = {
|
||||
std::make_pair(query::TriggerEventType::CREATE, std::vector{created_vertices, created_edges, created_objects}),
|
||||
std::make_pair(query::TriggerEventType::VERTEX_CREATE, std::vector{created_vertices}),
|
||||
std::make_pair(query::TriggerEventType::EDGE_CREATE, std::vector{created_edges}),
|
||||
std::make_pair(query::TriggerEventType::UPDATE,
|
||||
std::vector{
|
||||
set_vertex_properties,
|
||||
set_edge_properties,
|
||||
removed_vertex_properties,
|
||||
removed_edge_properties,
|
||||
set_vertex_labels,
|
||||
removed_vertex_labels,
|
||||
updated_vertices,
|
||||
updated_edges,
|
||||
updates_objects,
|
||||
}),
|
||||
std::make_pair(query::TriggerEventType::VERTEX_UPDATE,
|
||||
std::vector{
|
||||
set_vertex_properties,
|
||||
removed_vertex_properties,
|
||||
set_vertex_labels,
|
||||
removed_vertex_labels,
|
||||
updated_vertices,
|
||||
}),
|
||||
std::make_pair(query::TriggerEventType::EDGE_UPDATE,
|
||||
std::vector{
|
||||
set_edge_properties,
|
||||
removed_edge_properties,
|
||||
updated_edges,
|
||||
}),
|
||||
std::make_pair(query::TriggerEventType::DELETE,
|
||||
std::vector{
|
||||
deleted_vertices,
|
||||
deleted_edges,
|
||||
deleted_objects,
|
||||
}),
|
||||
std::make_pair(query::TriggerEventType::VERTEX_DELETE,
|
||||
std::vector{
|
||||
deleted_vertices,
|
||||
}),
|
||||
std::make_pair(query::TriggerEventType::EDGE_DELETE,
|
||||
std::vector{
|
||||
deleted_edges,
|
||||
}),
|
||||
std::make_pair(query::TriggerEventType::ANY,
|
||||
std::vector{
|
||||
created_vertices,
|
||||
created_edges,
|
||||
created_objects,
|
||||
deleted_vertices,
|
||||
deleted_edges,
|
||||
deleted_objects,
|
||||
set_vertex_properties,
|
||||
set_edge_properties,
|
||||
removed_vertex_properties,
|
||||
removed_edge_properties,
|
||||
set_vertex_labels,
|
||||
removed_vertex_labels,
|
||||
updated_vertices,
|
||||
updated_edges,
|
||||
updates_objects,
|
||||
}),
|
||||
};
|
||||
|
||||
const auto trigger_name = "trigger"s;
|
||||
|
||||
for (const auto keyword : keywords) {
|
||||
ASSERT_NO_THROW(store.AddTrigger(trigger_name, fmt::format("RETURN {}", keyword), {}, query::TriggerEventType::ANY,
|
||||
query::TriggerPhase::BEFORE_COMMIT, &ast_cache, &*dba, &antlr_lock));
|
||||
store.DropTrigger(trigger_name);
|
||||
for (const auto &[event_type, keywords] : event_types_to_test) {
|
||||
SCOPED_TRACE(query::TriggerEventTypeToString(event_type));
|
||||
for (const auto keyword : keywords) {
|
||||
SCOPED_TRACE(keyword);
|
||||
EXPECT_NO_THROW(store.AddTrigger(trigger_name, fmt::format("RETURN {}", keyword), {}, event_type,
|
||||
query::TriggerPhase::BEFORE_COMMIT, &ast_cache, &*dba, &antlr_lock));
|
||||
store.DropTrigger(trigger_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user