use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.
the class LifecycleTest method shouldNotSaveObjectUpdatedByPreDeleteEventHandler.
@Test
public void shouldNotSaveObjectUpdatedByPreDeleteEventHandler() {
// not interested in the default one for this suite
session.dispose(eventListener);
session.register(uuidEventListener);
Folder f = new Folder();
Document d = new Document();
f.setName("folder");
d.setFolder(f);
f.getDocuments().add(d);
assertThat(f.getUuid()).isNull();
session.save(f);
assertThat(f.getUuid()).isNotNull();
//
assertThat(((Neo4jSession) session).context().isDirty(f)).isFalse();
session.delete(d);
assertThat(f.getName()).isEqualTo("updated by pre-delete");
assertThat(((Neo4jSession) session).context().isDirty(f)).isTrue();
session.clear();
Folder f2 = session.load(Folder.class, f.getId());
assertThat(f2.getDocuments().isEmpty()).isTrue();
assertThat(f2.getName()).isEqualTo("folder");
}
use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.
the class StaleObjectTest method init.
@Before
public void init() throws IOException {
SessionFactory sessionFactory = new SessionFactory(getDriver(), "org.neo4j.ogm.domain.filesystem");
session = sessionFactory.openSession();
session.purgeDatabase();
a = new Document();
a.setName("a");
b = new Document();
b.setName("b");
f = new Folder();
f.setName("f");
f.getDocuments().add(a);
f.getDocuments().add(b);
a.setFolder(f);
b.setFolder(f);
session.save(f);
assertThat(a.toString()).isEqualTo("Document{folder=Folder{name='f', documents=2, archived=0}, name='a'}");
assertThat(b.toString()).isEqualTo("Document{folder=Folder{name='f', documents=2, archived=0}, name='b'}");
}
use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.
the class StaleObjectTest method testSaveDegenerateDocument.
@Test
public void testSaveDegenerateDocument() {
// note that we don't clear the current folder object.
a.setFolder(null);
session.save(a);
Folder p = session.load(Folder.class, f.getId());
assertThat(p.toString()).isEqualTo("Folder{name='f', documents=1, archived=0}");
// the document object loaded into the session by virtue of reloading f is no longer b. we guarantee to fetch the latest version of all reachable objects
// and we overwrite objects in the mapping context.
// directly after a save all objects in the save tree are guaranteed to not be dirty
// directly after a load, all objects in the load tree are guaranteed to not be dirty
assertThat(p.getDocuments().iterator().next() == b).isFalse();
assertThat(a.toString()).isEqualTo("Document{folder=null, name='a'}");
assertThat(b.toString()).isEqualTo(// b is attached to f, which hasn't been saved or reloaded, so is unchanged
"Document{folder=Folder{name='f', documents=2, archived=0}, name='b'}");
assertThat(p.getDocuments().iterator().next().toString()).isEqualTo("Document{folder=Folder{name='f', documents=1, archived=0}, name='b'}");
}
use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.
the class DegenerateEntityModelTests method testSaveDegenerateFolderClone.
@Test
public void testSaveDegenerateFolderClone() {
Folder clone = new Folder();
clone.setId(f.getId());
clone.setName(f.getName());
clone.setDocuments(new HashSet<>());
session.save(clone);
session.clear();
assertThat(session.query("MATCH (f:Folder { name: 'f' } ), " + "(a:Document { name: 'a' } ), " + "(b:Document { name: 'b' } ) return f", emptyMap()).queryResults()).hasSize(1);
}
use of org.neo4j.ogm.domain.filesystem.Folder in project neo4j-ogm by neo4j.
the class DirectRelationshipsTest method shouldBeAbleToCreateDifferentRelationshipsToTheSameDocument.
@Test
public void shouldBeAbleToCreateDifferentRelationshipsToTheSameDocument() {
Folder folder = new Folder();
Document document = new Document();
document.setFolder(folder);
folder.getDocuments().add(document);
folder.getArchived().add(document);
// save folder
Compiler compiler = mapper.map(folder).getCompiler();
compiler.useStatementFactory(new RowStatementFactory());
List<Statement> statements = compiler.createNodesStatements();
List<String> createNodeStatements = cypherStatements(statements);
assertThat(createNodeStatements).hasSize(2);
assertThat(createNodeStatements.contains("UNWIND $rows as row CREATE (n:`Folder`) SET n=row.props RETURN row.nodeRef as ref, ID(n) as id, $type as type")).isTrue();
assertThat(createNodeStatements.contains("UNWIND $rows as row CREATE (n:`Document`) SET n=row.props RETURN row.nodeRef as ref, ID(n) as id, $type as type")).isTrue();
for (Statement statement : statements) {
List rows = (List) statement.getParameters().get("rows");
assertThat(rows).hasSize(1);
}
statements = compiler.createRelationshipsStatements();
List<String> createRelStatements = cypherStatements(statements);
assertThat(createRelStatements).hasSize(2);
assertThat(createRelStatements.contains("UNWIND $rows as row MATCH (startNode) WHERE ID(startNode) = row.startNodeId WITH row,startNode MATCH (endNode) WHERE ID(endNode) = row.endNodeId MERGE (startNode)-[rel:`CONTAINS`]->(endNode) RETURN row.relRef as ref, ID(rel) as id, $type as type")).isTrue();
assertThat(createRelStatements.contains("UNWIND $rows as row MATCH (startNode) WHERE ID(startNode) = row.startNodeId WITH row,startNode MATCH (endNode) WHERE ID(endNode) = row.endNodeId MERGE (startNode)-[rel:`ARCHIVED`]->(endNode) RETURN row.relRef as ref, ID(rel) as id, $type as type")).isTrue();
boolean archivedType = false;
boolean containsType = false;
for (Statement statement : statements) {
if (statement.getStatement().contains("ARCHIVED")) {
archivedType = true;
}
if (statement.getStatement().contains("CONTAINS")) {
containsType = true;
}
}
assertThat(archivedType).isTrue();
assertThat(containsType).isTrue();
// save document
compiler = mapper.map(document).getCompiler();
compiler.useStatementFactory(new RowStatementFactory());
statements = compiler.createNodesStatements();
createNodeStatements = cypherStatements(statements);
assertThat(createNodeStatements).hasSize(2);
assertThat(createNodeStatements.contains("UNWIND $rows as row CREATE (n:`Folder`) SET n=row.props RETURN row.nodeRef as ref, ID(n) as id, $type as type")).isTrue();
assertThat(createNodeStatements.contains("UNWIND $rows as row CREATE (n:`Document`) SET n=row.props RETURN row.nodeRef as ref, ID(n) as id, $type as type")).isTrue();
statements = compiler.createRelationshipsStatements();
createRelStatements = cypherStatements(statements);
assertThat(createRelStatements).hasSize(2);
assertThat(createRelStatements.contains("UNWIND $rows as row MATCH (startNode) WHERE ID(startNode) = row.startNodeId WITH row,startNode MATCH (endNode) WHERE ID(endNode) = row.endNodeId MERGE (startNode)-[rel:`CONTAINS`]->(endNode) RETURN row.relRef as ref, ID(rel) as id, $type as type")).isTrue();
assertThat(createRelStatements.contains("UNWIND $rows as row MATCH (startNode) WHERE ID(startNode) = row.startNodeId WITH row,startNode MATCH (endNode) WHERE ID(endNode) = row.endNodeId MERGE (startNode)-[rel:`ARCHIVED`]->(endNode) RETURN row.relRef as ref, ID(rel) as id, $type as type")).isTrue();
archivedType = false;
containsType = false;
for (Statement statement : statements) {
if (statement.getStatement().contains("ARCHIVED")) {
archivedType = true;
}
if (statement.getStatement().contains("CONTAINS")) {
containsType = true;
}
}
assertThat(archivedType).isTrue();
assertThat(containsType).isTrue();
}
Aggregations