package com.github.dactiv.orm.test.jpa;
import java.util.List;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
import com.github.dactiv.common.unit.Fixtures;
import com.github.dactiv.orm.core.PropertyFilters;
import com.github.dactiv.orm.core.spring.data.jpa.specification.Specifications;
import com.github.dactiv.orm.test.entity.User;
import com.github.dactiv.orm.test.simple.jpa.UserRepository;
import org.junit.Assert;
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.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.google.common.collect.Lists;
@ActiveProfiles("spring-data-jpa")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext-test.xml")
public class TestJpaSupportRepository {
@Autowired
private UserRepository userRepository;
@Autowired
private DataSource dataSource;
@Autowired
private EntityManagerFactory entityManagerFactory;
@Before
public void install() throws Exception {
Fixtures.reloadData(dataSource, "/sample-data.xml");
}
@Test
@SuppressWarnings("unchecked")
public void testAllRestriction() {
List<User> userList = Lists.newArrayList();
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("EQD_createTime", "2012-08-12")));
Assert.assertEquals(userList.size(), 8);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("EQS_wubiCode", null)));
Assert.assertEquals(userList.size(), 1);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("EQS_wubiCode", "")));
Assert.assertEquals(userList.size(),6);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("EQS_wubiCode", "123")));
Assert.assertEquals(userList.size(), 1);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("NES_wubiCode", null)));
Assert.assertEquals(userList.size(), 7);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("NES_wubiCode", "")));
Assert.assertEquals(userList.size(), 1);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("NES_wubiCode", "123")));
Assert.assertEquals(userList.size(), 6);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("LIKES_loginName", "m")));
Assert.assertEquals(userList.size(), 5);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("RLIKES_loginName", "m")));
Assert.assertEquals(userList.size(), 4);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("LLIKES_loginName", "n")));
Assert.assertEquals(userList.size(), 1);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("LEI_state", "1")));
Assert.assertEquals(userList.size(), 8);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("LTI_state", "2")));
Assert.assertEquals(userList.size(), 8);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("GEI_state", "1")));
Assert.assertEquals(userList.size(), 8);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("GTI_state", "0")));
Assert.assertEquals(userList.size(), 8);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("INS_loginName", "admin,maurice")),new Sort(Direction.DESC, "loginName","realName"));
Assert.assertEquals(userList.size(), 2);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("NINS_loginName", "admin,maurice")));
Assert.assertEquals(userList.size(), 6);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("EQS_loginName","admin|maurice")));
Assert.assertEquals(userList.size(), 2);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("EQS_loginName","admin,maurice")));
Assert.assertEquals(userList.size(),0);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("EQS_loginName","admin,null")));
Assert.assertEquals(userList.size(),0);
userList = userRepository.findAll(Specifications.get(PropertyFilters.get("EQS_loginName_OR_realName","null|admin")));
Assert.assertEquals(userList.size(), 1);
}
@Test
@SuppressWarnings("unchecked")
public void testFindAll() {
List<User> userList = Lists.newArrayList();
//---------------------------------------------Expressions test--------------------------------------------------//
userList = userRepository.findAll(Specifications.get(Lists.newArrayList(
PropertyFilters.get("EQS_loginName", "admin"),
PropertyFilters.get("EQS_realName", "admin")
)));
Assert.assertEquals(userList.size(), 1);
userList = userRepository.findAll(Specifications.get(Lists.newArrayList(
PropertyFilters.get("LIKES_loginName", "m"),
PropertyFilters.get("EQI_state", "1")
)));
Assert.assertEquals(userList.size(), 5);
userList = userRepository.findAll(Specifications.get(Lists.newArrayList(
PropertyFilters.get("LIKES_loginName", "m"),
PropertyFilters.get("EQI_state", "1")
)),new Sort(Direction.DESC, "loginName","realName"));
Assert.assertEquals(userList.size(), 5);
Pageable pageable = new PageRequest(1, 2);
Page<User> page = userRepository.findAll(Specifications.get(Lists.newArrayList(PropertyFilters.get("EQI_state", "1"))),pageable);
Assert.assertEquals(page.getContent().size(), 2);
Assert.assertEquals(page.getTotalPages(), 4);
Assert.assertEquals(page.getTotalElements(), 8);
}
@Test
@SuppressWarnings("unchecked")
public void testFindOne() {
User user = new User();
user = userRepository.findOne(Specifications.get(Lists.newArrayList(PropertyFilters.get("EQS_loginName", "admin"))));
Assert.assertEquals(user.getId(), "SJDK3849CKMS3849DJCK2039ZMSK0002");
}
}