package org.springframework.data.simpledb.repository.query; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.simpledb.domain.SimpleDbUser; import org.springframework.data.simpledb.repository.query.NamedQueryRepository; import org.springframework.data.simpledb.repository.util.SimpleDbUserBuilder; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import java.util.List; import static org.junit.Assert.*; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:simpledb-consistent-repository-context.xml") public class NamedQueryRepositoryTest { @Autowired private NamedQueryRepository repository; private static List<SimpleDbUser> simpleDbUsers; //Used for performance reasons to delete after class all simpleDbUsers created static NamedQueryRepository staticRepository; @Before public void setUp() { //for performance reasons create 3 entities once and use them to test all queries if(simpleDbUsers == null){ simpleDbUsers = SimpleDbUserBuilder.createUsersWithPrimitiveFields(new float[]{0f, 1.0f, 2.0f, 3.0f, 4.0f, 5f}); repository.save(simpleDbUsers); } } @After public void setUpStaticRepository(){ staticRepository = repository; } @AfterClass public static void tearDown() { staticRepository.deleteAll(); } @Test public void should_get_user_by_itemName() { final SimpleDbUser user = repository.findByItemName("Item_1"); assertNotNull(user); assertEquals(simpleDbUsers.get(1), user); } @Test public void should_get_users_by_primitiveField() { // created users with primitive fields 0f, 1.0f, 2.0f, 3.0f, 4.0f, 5f final List<SimpleDbUser> users = repository.findByPrimitiveFieldGreaterThan(3.0f); assertNotNull(users); assertEquals(2, users.size()); assertEquals(simpleDbUsers.get(4), users.get(0)); assertEquals(simpleDbUsers.get(5), users.get(1)); } @Test public void should_get_users_by_primitiveField_or_itemName() { // created users with primitive fields 0f, 1.0f, 2.0f, 3.0f, 4.0f, 5f final List<SimpleDbUser> users = repository.getByPrimitiveFieldOrItemNameLike(3.0f, "%Item_2%"); assertNotNull(users); assertEquals(2, users.size()); assertTrue(users.contains(simpleDbUsers.get(2))); // matched by LIKE "%Item_2%" assertTrue(users.contains(simpleDbUsers.get(3))); } @Test public void should_get_users_by_complex_query() { // created users with primitive fields 0f, 1.0f, 2.0f, 3.0f, 4.0f, 5f final List<SimpleDbUser> users = repository.findByItemNameLikeOrPrimitiveFieldGreaterThanAndPrimitiveFieldLessThan("%Item_2%", 2.0f, 4.0f); assertNotNull(users); assertEquals(2, users.size()); assertTrue(users.contains(simpleDbUsers.get(2))); // matched by LIKE "%Item_2%" assertTrue(users.contains(simpleDbUsers.get(3))); // the only one between 2 and 4 } @Test public void should_get_users_by_primitiveField_greaterThan_Paged() { final int pageNumber = 1; final int pageSize = 1; // created users with primitive fields 0f, 1.0f, 2.0f, 3.0f, 4.0f, 5f final Page<SimpleDbUser> page = repository.readByPrimitiveFieldGreaterThan(1.0f, new PageRequest( pageNumber, pageSize)); assertNotNull(page); List<SimpleDbUser> content = page.getContent(); assertEquals(1, content.size()); assertEquals(4, page.getTotalElements()); } }