Search in sources :

Example 1 with MyNode

use of org.neo4j.ogm.domain.gh640.MyNode in project neo4j-ogm by neo4j.

the class RelationshipMappingTest method deletesOfEntitiesWithTheSameButNotEqualParentShouldWork2.

// GH-657
@Test
public void deletesOfEntitiesWithTheSameButNotEqualParentShouldWork2() {
    Session tx = sessionFactory.openSession();
    Map<String, Object> result = tx.query("CREATE (n1:MyNode {name: 'node1'})\n" + "CREATE (n2:MyNode {name: 'node2'})\n" + "CREATE (n3:MyNode {name: 'node3'})\n" + "CREATE (n1) - [:REL_TWO] -> (n2)\n" + "CREATE (n2) - [:REL_ONE] -> (n1)\n" + "RETURN id(n1) as idOfn1, id(n2) as idOfn2, id(n3) as idOfn3", Collections.emptyMap()).iterator().next();
    tx = sessionFactory.openSession();
    MyNode node1 = tx.load(MyNode.class, (Long) result.get("idOfn1"));
    MyNode node2 = tx.load(MyNode.class, (Long) result.get("idOfn2"));
    MyNode node3 = tx.load(MyNode.class, (Long) result.get("idOfn3"));
    assertThat(node1).isNotNull();
    assertThat(node2).isNotNull();
    assertThat(node3).isNotNull();
    assertThat(node1.getRefOne()).isEqualTo(node2);
    assertThat(node1.getRefTwo()).containsOnly(node2);
    assertThat(node2.getRefOne()).isNull();
    assertThat(node2.getRefTwo()).containsOnly(node1);
    tx = sessionFactory.openSession();
    MyNode changed = tx.load(MyNode.class, node2.getId()).copy();
    changed.setName("Dirty thing.");
    changed.setRefTwo(Collections.emptyList());
    tx.save(changed);
    // Again, verify in a new session.
    tx = sessionFactory.openSession();
    node2 = tx.load(MyNode.class, changed.getId());
    assertThat(node2.getRefOne()).isNull();
    assertThat(node2.getRefTwo()).isEmpty();
    Iterable<Map<String, Object>> actual = sessionFactory.openSession().query("" + " MATCH (n1:MyNode {name: 'node1'})," + "       (n2:MyNode {name: 'Dirty thing.'})," + "       (n3:MyNode {name: 'node3'})," + "       (n2) - [:REL_ONE] -> (n1) " + " RETURN n1,n2,n3,exists((n1) - [:REL_TWO] -> (n2)) as relTwo", emptyMap()).queryResults();
    assertThat(actual).hasSize(1);
    assertThat(actual.iterator().next()).containsEntry("relTwo", false);
}
Also used : MyNode(org.neo4j.ogm.domain.gh640.MyNode) Map(java.util.Map) Session(org.neo4j.ogm.session.Session) Test(org.junit.Test)

Example 2 with MyNode

use of org.neo4j.ogm.domain.gh640.MyNode in project neo4j-ogm by neo4j.

the class RelationshipMappingTest method deletesOfEntitiesWithTheSameButNotEqualParentShouldWork3.

// GH-657
@Test
public void deletesOfEntitiesWithTheSameButNotEqualParentShouldWork3() {
    Session tx = sessionFactory.openSession();
    Map<String, Object> result = tx.query("CREATE (n1:MyNode {name: 'node1'})\n" + "CREATE (n2:MyNode {name: 'node2'})\n" + "CREATE (n3:MyNode {name: 'node3'})\n" + "CREATE (n2) - [:REL_ONE] -> (n1)\n" + "RETURN id(n1) as idOfn1, id(n2) as idOfn2, id(n3) as idOfn3", Collections.emptyMap()).iterator().next();
    tx = sessionFactory.openSession();
    MyNode node1 = tx.load(MyNode.class, (Long) result.get("idOfn1"));
    MyNode node2 = tx.load(MyNode.class, (Long) result.get("idOfn2"));
    MyNode node3 = tx.load(MyNode.class, (Long) result.get("idOfn3"));
    assertThat(node1).isNotNull();
    assertThat(node2).isNotNull();
    assertThat(node3).isNotNull();
    assertThat(node1.getRefOne()).isEqualTo(node2);
    assertThat(node1.getRefTwo()).isEmpty();
    assertThat(node2.getRefTwo()).isEmpty();
    tx = sessionFactory.openSession();
    MyNode changed = tx.load(MyNode.class, node1.getId()).copy();
    changed.setName("Dirty thing.");
    changed.setRefTwo(Collections.singletonList(node2));
    tx.save(changed);
    // Again, verify in a new session.
    tx = sessionFactory.openSession();
    node1 = tx.load(MyNode.class, changed.getId());
    node2 = tx.load(MyNode.class, node2.getId());
    assertThat(node1.getRefOne()).isEqualTo(node2);
    assertThat(node1.getRefTwo()).containsOnly(node2);
    assertThat(node2.getRefTwo()).containsOnly(node1);
    Iterable<Map<String, Object>> actual = sessionFactory.openSession().query("" + " MATCH (n1:MyNode {name: 'Dirty thing.'})," + "       (n2:MyNode {name: 'node2'})," + "       (n3:MyNode {name: 'node3'})," + "       (n2) - [:REL_ONE] -> (n1) " + " RETURN n1,n2,n3,exists((n1) - [:REL_TWO] - (n2)) as relTwo", emptyMap()).queryResults();
    assertThat(actual).hasSize(1);
    assertThat(actual.iterator().next()).containsEntry("relTwo", true);
}
Also used : MyNode(org.neo4j.ogm.domain.gh640.MyNode) Map(java.util.Map) Session(org.neo4j.ogm.session.Session) Test(org.junit.Test)

Example 3 with MyNode

use of org.neo4j.ogm.domain.gh640.MyNode in project neo4j-ogm by neo4j.

the class RelationshipMappingTest method deletesOfEntitiesWithTheSameButNotEqualParentShouldWork.

// GH-657
@Test
public void deletesOfEntitiesWithTheSameButNotEqualParentShouldWork() {
    Session tx = sessionFactory.openSession();
    Map<String, Object> result = tx.query("CREATE (n1:MyNode {name: 'node1'})\n" + "CREATE (n2:MyNode {name: 'node2'})\n" + "CREATE (n3:MyNode {name: 'node3'})\n" + "CREATE (n1) - [:REL_TWO] -> (n2)\n" + "CREATE (n2) - [:REL_ONE] -> (n1)\n" + "RETURN id(n1) as idOfn1, id(n2) as idOfn2, id(n3) as idOfn3", Collections.emptyMap()).iterator().next();
    tx = sessionFactory.openSession();
    MyNode node1 = tx.load(MyNode.class, (Long) result.get("idOfn1"));
    MyNode node2 = tx.load(MyNode.class, (Long) result.get("idOfn2"));
    MyNode node3 = tx.load(MyNode.class, (Long) result.get("idOfn3"));
    assertThat(node1).isNotNull();
    assertThat(node2).isNotNull();
    assertThat(node3).isNotNull();
    assertThat(node1.getRefOne()).isEqualTo(node2);
    assertThat(node1.getRefTwo()).containsOnly(node2);
    assertThat(node2.getRefTwo()).containsOnly(node1);
    tx = sessionFactory.openSession();
    MyNode changed = tx.load(MyNode.class, node1.getId()).copy();
    changed.setName("Dirty thing.");
    changed.setRefTwo(Collections.emptyList());
    tx.save(changed);
    // Again, verify in a new session.
    tx = sessionFactory.openSession();
    node1 = tx.load(MyNode.class, changed.getId());
    assertThat(node1.getRefOne()).isEqualTo(node2);
    assertThat(node1.getRefTwo()).isEmpty();
    Iterable<Map<String, Object>> actual = sessionFactory.openSession().query("" + " MATCH (n1:MyNode {name: 'Dirty thing.'})," + "       (n2:MyNode {name: 'node2'})," + "       (n3:MyNode {name: 'node3'})," + "       (n2) - [:REL_ONE] -> (n1) " + " RETURN n1,n2,n3,exists((n1) - [:REL_TWO] -> (n2)) as relTwo", emptyMap()).queryResults();
    assertThat(actual).hasSize(1);
    assertThat(actual.iterator().next()).containsEntry("relTwo", false);
}
Also used : MyNode(org.neo4j.ogm.domain.gh640.MyNode) Map(java.util.Map) Session(org.neo4j.ogm.session.Session) Test(org.junit.Test)

Example 4 with MyNode

use of org.neo4j.ogm.domain.gh640.MyNode in project neo4j-ogm by neo4j.

the class SingleUseEntityMapperTest method shouldMapAggregatedMapProperties.

// GH-873
@Test
public void shouldMapAggregatedMapProperties() {
    SingleUseEntityMapper entityMapper = new SingleUseEntityMapper(sessionFactory.metaData(), new ReflectionEntityInstantiator(sessionFactory.metaData()));
    Iterable<Map<String, Object>> results = sessionFactory.openSession().query("MATCH (t:MyNode) RETURN t.id AS id, t.type AS type, {b1: 'w1', b2: 'w2'} AS attributes LIMIT 1", EMPTY_MAP).queryResults();
    assertThat(results).hasSize(1);
    MyNode thingResult = entityMapper.map(MyNode.class, results.iterator().next());
    assertThat(thingResult.getId()).isEqualTo("the-id");
    assertThat(thingResult.getType()).isEqualTo("the-type");
    assertThat(thingResult.getAttributes()).containsEntry("b1", "w1");
    assertThat(thingResult.getAttributes()).containsEntry("b2", "w2");
}
Also used : HashMap(java.util.HashMap) Map(java.util.Map) MyNode(org.neo4j.ogm.domain.gh873.MyNode) ReflectionEntityInstantiator(org.neo4j.ogm.metadata.reflect.ReflectionEntityInstantiator) Test(org.junit.Test)

Example 5 with MyNode

use of org.neo4j.ogm.domain.gh640.MyNode in project neo4j-ogm by neo4j.

the class SingleUseEntityMapperTest method oneTimeSetUp.

@BeforeClass
public static void oneTimeSetUp() {
    sessionFactory = new SessionFactory(getDriver(), "org.neo4j.ogm.domain.gh551", "org.neo4j.ogm.domain.gh391", "org.neo4j.ogm.domain.gh750", "org.neo4j.ogm.domain.gh777", "org.neo4j.ogm.domain.cineasts.minimum", "org.neo4j.ogm.domain.gh813", "org.neo4j.ogm.domain.gh873");
    // Prepare test data
    Session session = sessionFactory.openSession();
    session.query("MATCH (n) DETACH DELETE n", EMPTY_MAP);
    session.query("unwind range(1,10) as x with x create (n:ThingEntity {name: 'Thing ' + x}) return n", EMPTY_MAP);
    Actor actor = new Actor("A1");
    Movie movie = new Movie("M1");
    Role role = new Role("R1", actor, movie);
    session.save(role);
    movie = new Movie("M2");
    role = new Role("R2", actor, movie);
    session.save(role);
    session.save(new UserInfo("Foo", "Bar", "i@do.com"));
    MyNode myNode = new MyNode();
    myNode.setId("the-id");
    myNode.setType("the-type");
    myNode.getAttributes().put("a1", "v1");
    myNode.getAttributes().put("a2", "v2");
    session.save(myNode);
}
Also used : SessionFactory(org.neo4j.ogm.session.SessionFactory) Role(org.neo4j.ogm.domain.cineasts.minimum.Role) Movie(org.neo4j.ogm.domain.cineasts.minimum.Movie) Actor(org.neo4j.ogm.domain.cineasts.minimum.Actor) UserInfo(org.neo4j.ogm.domain.gh777.UserInfo) MyNode(org.neo4j.ogm.domain.gh873.MyNode) Session(org.neo4j.ogm.session.Session) BeforeClass(org.junit.BeforeClass)

Aggregations

Test (org.junit.Test)6 Map (java.util.Map)5 Session (org.neo4j.ogm.session.Session)5 MyNode (org.neo4j.ogm.domain.gh640.MyNode)4 MyNode (org.neo4j.ogm.domain.gh873.MyNode)3 HashMap (java.util.HashMap)2 ReflectionEntityInstantiator (org.neo4j.ogm.metadata.reflect.ReflectionEntityInstantiator)2 BeforeClass (org.junit.BeforeClass)1 Actor (org.neo4j.ogm.domain.cineasts.minimum.Actor)1 Movie (org.neo4j.ogm.domain.cineasts.minimum.Movie)1 Role (org.neo4j.ogm.domain.cineasts.minimum.Role)1 UserInfo (org.neo4j.ogm.domain.gh777.UserInfo)1 SessionFactory (org.neo4j.ogm.session.SessionFactory)1