package org.resthub.jpa; import org.fest.assertions.api.Assertions; import org.resthub.jpa.model.StandaloneEntity; import org.resthub.jpa.repository.StandaloneEntityRepository; import org.resthub.test.AbstractTransactionalTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; import javax.inject.Inject; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @ActiveProfiles({"resthub-jpa", "resthub-pool-bonecp"}) @ContextConfiguration(locations = {"classpath*:resthubContext.xml", "classpath:jpa-test-context.xml"}) public class StandaloneEntityRepositoryTest extends AbstractTransactionalTest { @Inject private StandaloneEntityRepository repository; @AfterMethod public void tearDown() { for (StandaloneEntity resource : repository.findAll()) { repository.delete(resource); } } @Test public void testSave() { StandaloneEntity entity = repository.save(new StandaloneEntity()); Assertions.assertThat(repository.exists(entity.getId())).isTrue(); } @Test public void testDelete() { StandaloneEntity entity = repository.save(new StandaloneEntity()); Assertions.assertThat(repository.exists(entity.getId())).isTrue(); repository.delete(entity); Assertions.assertThat(repository.exists(entity.getId())).isFalse(); } @Test public void testDeleteById() { StandaloneEntity entity = repository.save(new StandaloneEntity()); Assertions.assertThat(repository.exists(entity.getId())).isTrue(); repository.delete(entity.getId()); Assertions.assertThat(repository.exists(entity.getId())).isFalse(); } @Test public void testFindAll() { List<StandaloneEntity> entities = new ArrayList<StandaloneEntity>(Arrays.asList(new StandaloneEntity(), new StandaloneEntity())); repository.save(entities); Assertions.assertThat(repository.count()).isEqualTo(entities.size()); List<StandaloneEntity> collectedEntities = repository.findAll(); Assertions.assertThat(collectedEntities).isNotNull().hasSize(entities.size()); } @Test public void testFindById() { StandaloneEntity entity = repository.save(new StandaloneEntity()); Assertions.assertThat(repository.exists(entity.getId())).isTrue(); StandaloneEntity collectedEntity = repository.findOne(entity.getId()); Assertions.assertThat(collectedEntity).isNotNull().isEqualTo(entity); } @Test public void testFindByIds() { StandaloneEntity entity = repository.save(new StandaloneEntity()); StandaloneEntity entity2 = repository.save(new StandaloneEntity()); List<StandaloneEntity> entities = repository.findAll(Arrays.asList(entity.getId(), entity2.getId())); Assertions.assertThat(entities).isNotNull().isNotEmpty(); Assertions.assertThat(entities.size()).isEqualTo(2); Assertions.assertThat(entities.contains(entity)); Assertions.assertThat(entities.contains(entity2)); } @Test public void testEncoding() { StandaloneEntity entity = repository.save(new StandaloneEntity("C\u2202dre")); Assertions.assertThat(repository.exists(entity.getId())).isTrue(); StandaloneEntity collectedEntity = repository.findOne(entity.getId()); Assertions.assertThat(collectedEntity).isNotNull().isEqualTo(entity); } @Test public void testFindByName() { String name = "testStandaloneEntity", name2 = "testStandaloneEntity2"; List<StandaloneEntity> entities = new ArrayList<StandaloneEntity>(Arrays.asList(new StandaloneEntity(name), new StandaloneEntity(name))); repository.save(entities); Assertions.assertThat(repository.count()).isEqualTo(entities.size()); StandaloneEntity entity = repository.save(new StandaloneEntity(name2)); Assertions.assertThat(repository.exists(entity.getId())).isTrue(); List<StandaloneEntity> collectedEntities = repository.findByName(name); Assertions.assertThat(collectedEntities).isNotNull().hasSize(entities.size()); } @Test public void testFindByNameLike() { String name = "testStandaloneEntity", name2 = "testStandaloneEntity2", expression = name + "%"; List<StandaloneEntity> entities = new ArrayList<StandaloneEntity>(Arrays.asList(new StandaloneEntity(name), new StandaloneEntity(name))); repository.save(entities); Assertions.assertThat(repository.count()).isEqualTo(entities.size()); StandaloneEntity entity = repository.save(new StandaloneEntity(name2)); Assertions.assertThat(repository.exists(entity.getId())).isTrue(); List<StandaloneEntity> collectedEntities = repository.findByNameLike(expression); Assertions.assertThat(collectedEntities).isNotNull().hasSize((int) repository.count()); } @Test public void testFindByNameWithExplicitQuery() { String name = "testStandaloneEntity", name2 = "testStandaloneEntity2"; List<StandaloneEntity> entities = new ArrayList<StandaloneEntity>(Arrays.asList(new StandaloneEntity(name), new StandaloneEntity(name))); repository.save(entities); Assertions.assertThat(repository.count()).isEqualTo(entities.size()); StandaloneEntity entity = repository.save(new StandaloneEntity(name2)); Assertions.assertThat(repository.exists(entity.getId())).isTrue(); List<StandaloneEntity> collectedEntities = repository.findByNameWithExplicitQuery(name); Assertions.assertThat(collectedEntities).isNotNull().hasSize(entities.size()); } }