Search in sources :

Example 26 with Studio

use of org.neo4j.ogm.domain.music.Studio in project neo4j-ogm by neo4j.

the class LoadCapabilityTest method shouldNotBeDirtyOnLoadRelationshipEntityThenSaveThenReload.

// GH-177
@Test
public void shouldNotBeDirtyOnLoadRelationshipEntityThenSaveThenReload() {
    MappingContext context = ((Neo4jSession) session).context();
    Artist pinkFloyd = new Artist("Pink Floyd");
    Album divisionBell = new Album("The Division Bell");
    divisionBell.setArtist(pinkFloyd);
    Studio studio = new Studio("Britannia Row Studios");
    Recording recording = new Recording(divisionBell, studio, 1994);
    divisionBell.setRecording(recording);
    pinkFloyd.addAlbum(divisionBell);
    // new object not saved is always dirty
    assertThat(context.isDirty(recording)).isTrue();
    session.save(recording);
    // object hash updated by save.
    assertThat(context.isDirty(recording)).isFalse();
    // forget everything we've done
    session.clear();
    recording = session.load(Recording.class, recording.getId(), 2);
    // a freshly loaded object is never dirty
    assertThat(context.isDirty(recording)).isFalse();
    recording.setYear(1995);
    // we changed the year so it is now dirty
    assertThat(context.isDirty(recording)).isTrue();
    session.save(recording);
    // object saved, no longer dirty
    assertThat(context.isDirty(recording)).isFalse();
    Recording recording1995 = session.load(Recording.class, recording.getId(), // load the same identity, but to a copy ref
    2);
    // nothing has changed, so it should not be dirty
    assertThat(context.isDirty(recording1995)).isFalse();
    // two refs pointing to the same object
    assertThat(recording == recording1995).isTrue();
}
Also used : MappingContext(org.neo4j.ogm.context.MappingContext) Artist(org.neo4j.ogm.domain.music.Artist) Neo4jSession(org.neo4j.ogm.session.Neo4jSession) Album(org.neo4j.ogm.domain.music.Album) Recording(org.neo4j.ogm.domain.music.Recording) Studio(org.neo4j.ogm.domain.music.Studio) Test(org.junit.Test)

Example 27 with Studio

use of org.neo4j.ogm.domain.music.Studio in project neo4j-ogm by neo4j.

the class LoadCapabilityTest method shouldBeAbleToLoadEntityToDifferentDepthsInDifferentSessions.

// DATAGRAPH-642, GH-174
@Test
public void shouldBeAbleToLoadEntityToDifferentDepthsInDifferentSessions() {
    Artist led = new Artist("Led Zeppelin");
    Album album = new Album("Led Zeppelin IV");
    Studio studio = new Studio("Island Studios");
    Recording recording = new Recording(album, studio, 1970);
    led.addAlbum(album);
    album.setArtist(led);
    album.setRecording(recording);
    session.save(led);
    session.clear();
    // In the first session, load the artist to depth 2
    Artist ledZeppelin = session.load(Artist.class, led.getId(), 2);
    assertThat(ledZeppelin).isNotNull();
    assertThat(ledZeppelin.getName()).isEqualTo(led.getName());
    assertThat(ledZeppelin.getAlbums()).hasSize(1);
    Album ledZeppelinIV = ledZeppelin.getAlbums().iterator().next();
    assertThat(ledZeppelinIV.getName()).isEqualTo(album.getName());
    assertThat(ledZeppelinIV.getArtist()).isEqualTo(ledZeppelin);
    assertThat(ledZeppelinIV.getRecording()).isNotNull();
    assertThat(ledZeppelinIV.getRecording().getStudio().getName()).isEqualTo(studio.getName());
    // In the second session, load the artist to depth 0
    Session session2 = sessionFactory.openSession();
    Artist ledZeppelin0 = session2.load(Artist.class, led.getId(), 0);
    assertThat(ledZeppelin0).isNotNull();
    assertThat(ledZeppelin0.getName()).isEqualTo(led.getName());
    assertThat(ledZeppelin0.getAlbums()).isEmpty();
}
Also used : Artist(org.neo4j.ogm.domain.music.Artist) Album(org.neo4j.ogm.domain.music.Album) Recording(org.neo4j.ogm.domain.music.Recording) Studio(org.neo4j.ogm.domain.music.Studio) Neo4jSession(org.neo4j.ogm.session.Neo4jSession) Session(org.neo4j.ogm.session.Session) Test(org.junit.Test)

Example 28 with Studio

use of org.neo4j.ogm.domain.music.Studio in project neo4j-ogm by neo4j.

the class FilterIntegrationTest method ignoreCaseShouldBeApplicableToStartingWith.

@Test
public void ignoreCaseShouldBeApplicableToStartingWith() {
    final String emi = "EMI Studios, London";
    session.save(new Studio(emi));
    final Filter nameFilter = new Filter("name", ComparisonOperator.STARTING_WITH, "em").ignoreCase();
    assertThat(session.loadAll(Studio.class, nameFilter, 0)).hasSize(1).extracting(Studio::getName).containsExactly(emi);
}
Also used : Studio(org.neo4j.ogm.domain.music.Studio) Test(org.junit.Test)

Example 29 with Studio

use of org.neo4j.ogm.domain.music.Studio in project neo4j-ogm by neo4j.

the class FilterIntegrationTest method ignoreCaseShouldBeApplicableToContaining.

@Test
public void ignoreCaseShouldBeApplicableToContaining() {
    final String emi = "EMI Studios, London";
    session.save(new Studio(emi));
    final Filter nameFilter = new Filter("name", ComparisonOperator.CONTAINING, "STUDIO").ignoreCase();
    assertThat(session.loadAll(Studio.class, nameFilter, 0)).hasSize(1).extracting(Studio::getName).containsExactly(emi);
}
Also used : Studio(org.neo4j.ogm.domain.music.Studio) Test(org.junit.Test)

Aggregations

Studio (org.neo4j.ogm.domain.music.Studio)29 Test (org.junit.Test)27 Album (org.neo4j.ogm.domain.music.Album)21 Recording (org.neo4j.ogm.domain.music.Recording)21 Artist (org.neo4j.ogm.domain.music.Artist)19 Neo4jSession (org.neo4j.ogm.session.Neo4jSession)8 Session (org.neo4j.ogm.session.Session)7 Filter (org.neo4j.ogm.cypher.Filter)4 Transaction (org.neo4j.ogm.transaction.Transaction)3 List (java.util.List)2 Map (java.util.Map)2 Before (org.junit.Before)2 MappingContext (org.neo4j.ogm.context.MappingContext)1 Filters (org.neo4j.ogm.cypher.Filters)1 SortOrder (org.neo4j.ogm.cypher.query.SortOrder)1 Actor (org.neo4j.ogm.domain.cineasts.annotated.Actor)1 Knows (org.neo4j.ogm.domain.cineasts.annotated.Knows)1 SessionFactory (org.neo4j.ogm.session.SessionFactory)1