package org.springframework.data.mongodb.examples.music; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import java.util.List; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; /** * Test case to show the usage of {@link AlbumRepository} and thus the Mongo * repository support in general. * * @author Oliver Gierke */ @ContextConfiguration public class AlbumRepositoryIntegrationTest extends AbstractIntegrationTest { @Autowired AlbumRepository repository; @Before public void purgeRepository() { repository.deleteAll(); super.setUp(); } @Test public void createAlbum() throws Exception { repository.save(albums); assertSingleGruxAlbum(repository.findOne(bigWhiskey.getId())); } @Test public void findsAlbumByConcreteTrackName() throws Exception { repository.save(albums); assertSingleGruxAlbum(repository.findByTracksName("Grux")); List<Album> albums = repository.findByTracksName("Foo"); assertThat(albums.isEmpty(), is(true)); } @Test public void findsAllAlbumsByTrackNameLike() throws Exception { repository.save(albums); assertBothAlbums(repository.findByTracksNameLike("*it*")); } @Test public void findsAlbumsByTrackRating() throws Exception { bigWhiskey.getTracks().get(4).setRating(Stars.FOUR); repository.save(albums); assertSingleGruxAlbum(repository .findByTracksRatingGreaterThan(Stars.THREE)); List<Album> albums = repository.findByTracksRatingGreaterThan(Stars.FOUR); assertThat(albums.isEmpty(), is(true)); } private void assertSingleGruxAlbum(List<Album> albums) { assertThat(albums, is(notNullValue())); assertThat(albums.size(), is(1)); assertThat(albums.get(0), is(notNullValue(Album.class))); assertSingleGruxAlbum(albums.get(0)); } }