use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.
the class CineastsRelationshipEntityTest method shouldSaveMultipleRatingsFromDifferentUsersForSameMovie.
@Test
public void shouldSaveMultipleRatingsFromDifferentUsersForSameMovie() {
Movie movie = new Movie("Pulp Fiction", 1994);
session.save(movie);
User michal = new User();
michal.setName("Michal");
michal.setLogin("bachmania");
Rating awesome = new Rating();
awesome.setMovie(movie);
awesome.setUser(michal);
awesome.setStars(5);
michal.setRatings(Collections.singleton(awesome));
session.save(michal);
// Check that Pulp Fiction has one rating from Michal
Collection<Movie> films = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Pulp Fiction"));
assertThat(films).hasSize(1);
Movie film = films.iterator().next();
assertThat(film).isNotNull();
assertThat(film.getRatings()).hasSize(1);
assertThat(film.getRatings().iterator().next().getUser().getName()).isEqualTo("Michal");
// Add a rating from luanne for the same movie
User luanne = new User();
luanne.setName("luanne");
luanne.setLogin("luanne");
luanne.setPassword("luanne");
Rating rating = new Rating();
rating.setMovie(film);
rating.setUser(luanne);
rating.setStars(3);
luanne.setRatings(Collections.singleton(rating));
session.save(luanne);
// Verify that pulp fiction has two ratings
films = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Pulp Fiction"));
film = films.iterator().next();
// Fail, it has just one rating, luannes
assertThat(film.getRatings()).hasSize(2);
// Verify that luanne's rating is saved
User foundLuanne = session.load(User.class, "luanne");
assertThat(foundLuanne.getRatings()).hasSize(1);
// Verify that Michals rating still exists
Collection<User> users = session.loadAll(User.class, new Filter("name", ComparisonOperator.EQUALS, "Michal"));
User foundMichal = users.iterator().next();
// Fail, Michals rating is gone
assertThat(foundMichal.getRatings()).hasSize(1);
}
use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.
the class CineastsRelationshipEntityTest method shouldLoadRelationshipEntityWithSameStartEndNodeType.
// DATAGRAPH-616
@Test
public void shouldLoadRelationshipEntityWithSameStartEndNodeType() {
Actor bruce = new Actor("Bruce");
Actor jim = new Actor("Jim");
Knows knows = new Knows();
knows.setFirstActor(bruce);
knows.setSecondActor(jim);
knows.setSince(new Date());
bruce.getKnows().add(knows);
session.save(bruce);
session.clear();
Actor actor = TestUtils.firstOrNull(session.loadAll(Actor.class, new Filter("name", ComparisonOperator.EQUALS, "Bruce")));
assertThat(actor).isNotNull();
assertThat(actor.getKnows()).hasSize(1);
assertThat(actor.getKnows().iterator().next().getFirstActor().getName()).isEqualTo("Bruce");
assertThat(actor.getKnows().iterator().next().getSecondActor().getName()).isEqualTo("Jim");
}
use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.
the class CineastsRelationshipEntityTest method shouldBeAbleToModifyRating.
// DATAGRAPH-714
@Test
public void shouldBeAbleToModifyRating() {
Movie movie = new Movie("Harry Potter and the Philosophers Stone", 2003);
User vince = new User();
vince.setName("Vince");
vince.setLogin("bickerv");
Set<Rating> ratings = new HashSet<>();
Rating awesome = new Rating();
awesome.setComment("Awesome");
awesome.setMovie(movie);
awesome.setUser(vince);
awesome.setStars(5);
ratings.add(awesome);
vince.setRatings(ratings);
movie.setRatings(ratings);
session.save(movie);
Collection<Movie> movies = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Philosophers Stone"));
movie = movies.iterator().next();
assertThat(movie.getRatings()).hasSize(1);
Rating rating = movie.getRatings().iterator().next();
assertThat(rating.getUser().getName()).isEqualTo("Vince");
assertThat(rating.getStars()).isEqualTo(5);
// Modify the rating stars and save the rating directly
rating.setStars(3);
session.save(rating);
session.clear();
movies = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Philosophers Stone"));
movie = movies.iterator().next();
assertThat(movie.getRatings()).hasSize(1);
rating = movie.getRatings().iterator().next();
assertThat(rating.getUser().getName()).isEqualTo("Vince");
assertThat(rating.getStars()).isEqualTo(3);
vince = rating.getUser();
// Modify the rating stars and save the user (start node)
movie.getRatings().iterator().next().setStars(2);
session.save(vince);
session.clear();
movies = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Philosophers Stone"));
movie = movies.iterator().next();
assertThat(movie.getRatings()).hasSize(1);
rating = movie.getRatings().iterator().next();
assertThat(rating.getUser().getName()).isEqualTo("Vince");
assertThat(rating.getStars()).isEqualTo(2);
// Modify the rating stars and save the movie (end node)
movie.getRatings().iterator().next().setStars(1);
session.save(movie);
session.clear();
movies = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Philosophers Stone"));
movie = movies.iterator().next();
assertThat(movie.getRatings()).hasSize(1);
rating = movie.getRatings().iterator().next();
assertThat(rating.getUser().getName()).isEqualTo("Vince");
assertThat(rating.getStars()).isEqualTo(1);
}
use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.
the class CineastsRelationshipEntityTest method shouldBeAbleToDeleteOneRating.
// DATAGRAPH-586
@Test
public void shouldBeAbleToDeleteOneRating() {
Set<Rating> gobletRatings = new HashSet<>();
Set<Rating> phoenixRatings = new HashSet<>();
Movie goblet = new Movie("Harry Potter and the Goblet of Fire", 2006);
session.save(goblet);
Movie phoenix = new Movie("Harry Potter and the Order of the Phoenix", 2009);
session.save(phoenix);
User adam = new User();
adam.setName("Adam");
adam.setLogin("adamg");
Rating good = new Rating();
good.setUser(adam);
good.setMovie(goblet);
good.setStars(3);
gobletRatings.add(good);
goblet.setRatings(gobletRatings);
Rating okay = new Rating();
okay.setMovie(phoenix);
okay.setUser(adam);
okay.setStars(2);
phoenixRatings.add(okay);
phoenix.setRatings(phoenixRatings);
Set<Rating> adamsRatings = new HashSet<>();
adamsRatings.add(good);
adamsRatings.add(okay);
adam.setRatings(adamsRatings);
session.save(adam);
adam = session.loadAll(User.class, new Filter("name", ComparisonOperator.EQUALS, "Adam")).iterator().next();
assertThat(adam.getRatings()).hasSize(2);
// delete one rating
session.delete(okay);
Collection<Rating> ratings = session.loadAll(Rating.class);
assertThat(ratings).hasSize(1);
phoenix = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Order of the Phoenix")).iterator().next();
assertThat(phoenix.getRatings()).isNull();
goblet = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Harry Potter and the Goblet of Fire")).iterator().next();
assertThat(goblet.getRatings()).hasSize(1);
adam = session.loadAll(User.class, new Filter("name", ComparisonOperator.EQUALS, "Adam")).iterator().next();
assertThat(adam.getRatings()).hasSize(1);
}
use of org.neo4j.ogm.cypher.Filter in project neo4j-ogm by neo4j.
the class CineastsRelationshipEntityTest method shouldNotLoseRelationshipEntitiesWhenALoadedEntityIsPersisted.
@Test
public void shouldNotLoseRelationshipEntitiesWhenALoadedEntityIsPersisted() {
bootstrap("org/neo4j/ogm/cql/cineasts.cql");
Movie topGear = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Top Gear")).iterator().next();
// 2 ratings
assertThat(topGear.getRatings()).hasSize(2);
session.save(topGear);
topGear = session.loadAll(Movie.class, new Filter("title", ComparisonOperator.EQUALS, "Top Gear")).iterator().next();
// Then there was one
assertThat(topGear.getRatings()).hasSize(2);
User michal = session.loadAll(User.class, new Filter("name", ComparisonOperator.EQUALS, "Michal")).iterator().next();
// The Top Gear Rating is gone
assertThat(michal.getRatings()).hasSize(2);
}
Aggregations