package com.easyooo.framework.cache;
import static org.hamcrest.Matchers.hasProperty;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertThat;
import java.util.Date;
import java.util.List;
import java.util.Random;
import org.junit.After;
import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import com.easyooo.framework.demo.domain.TUser;
import com.easyooo.framework.demo.mapper.TUserDetailMapper;
import com.easyooo.framework.demo.mapper.TUserMapper;
import com.easyooo.framework.support.mybatis.Pagination;
/**
* cache & mapper 集成测试
*
* @author Killer
*/
@RunWith(SpringJUnit4ClassRunner.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@ContextConfiguration(locations = { "classpath:applicationContext.xml" })
public class CacheMapperTest{
@Autowired
private TUserMapper tUserMapper;
@Autowired
private ApplicationContext app;
@Autowired
private TUserDetailMapper tUserDetailMapper;
private static Long userId;
@Before
public void setUp(){
userId = Math.round(new Random().nextDouble() * 1000);
TUser user = new TUser(userId);
user.setUserName("killer");
user.setStatus("NO");
tUserMapper.insert(user);
}
@After
public void destory(){
TUser user = new TUser(userId);
tUserMapper.deleteByPrimaryKey(user);
}
@Test
public void __0_select_ByKey(){
TUser cond = new TUser(userId);
TUser user = tUserMapper.selectByPrimaryKey(cond);
System.out.println("结果:" + user);
assertThat(user, hasProperty("status", is("NO")));
assertThat(user, hasProperty("userName", is("killer")));
}
@Test
@Ignore
@Transactional
public void __1_select_ByUserName(){
TUser cond = new TUser();
cond.setUserName("killer");
List<TUser> user = tUserMapper.selectByUserName(cond);
assertThat(user, hasSize(1));
assertThat(user.get(0), hasProperty("status", is("NO")));
}
@Test
@Ignore
public void __2_selectByStatus(){
TUser cond = new TUser();
cond.setStatus("NO");
List<TUser> user = tUserMapper.selectByStatus(cond);
assertThat(user, hasSize(1));
assertThat(user.get(0), hasProperty("userName", is("killer")));
}
@Test
@Ignore
public void __3_updateByPrimaryKey(){
TUser cond = new TUser();
cond.setUserId(userId);
cond.setUserName("dlj");
cond.setStatus(null);
// 这里会输出一个错误异常,因为是全量修改但没有设置分组信息
// 这在某些场景下也是可行的。
// 只是一个错误输出,不影响后续执行
// Unable to generate group cache key
int rows = tUserMapper.updateByPrimaryKey(cond);
assertThat(rows, is(1));
TUser cond1 = new TUser();
cond1.setUserId(userId);
cond1.setStatus("NO");
List<TUser> user1 = tUserMapper.selectByStatus(cond1);
assertThat(user1, hasSize(0));
TUser cond2 = new TUser();
cond2.setUserId(userId);
cond2.setUserName("dlj");
List<TUser> user2 = tUserMapper.selectByUserName(cond2);
assertThat(user2, hasSize(1));
}
@Test
@Ignore
public void __4_updateByPrimaryKeySelective(){
TUser cond = new TUser();
cond.setUserId(userId);
cond.setStatus("YES");
int rows = tUserMapper.updateByPrimaryKeySelective(cond);
assertThat(rows, is(1));
TUser cond1 = new TUser();
cond1.setUserId(userId);
cond1.setStatus("NO");
List<TUser> user1 = tUserMapper.selectByStatus(cond1);
assertThat(user1, hasSize(0));
TUser cond2 = new TUser();
cond2.setUserId(userId);
cond2.setUserName("killer");
List<TUser> user2 = tUserMapper.selectByUserName(cond2);
assertThat(user2, hasSize(1));
}
@Test
@Ignore
public void __5_updateDate(){
TUser cond = new TUser();
cond.setUserId(userId);
cond.setCreateDate1(new Date());
cond.setCreateDate2(new Date());
cond.setCreateDate3(new Date());
int rows = tUserMapper.updateByPrimaryKeySelective(cond);
assertThat(rows, is(1));
TUser user = tUserMapper.selectByPrimaryKey(cond);
assertThat(user, notNullValue());
}
@Test
@Ignore
public void __10_testSelectAllWithPage(){
Pagination p = new Pagination(null, 0, 2);
List<TUser> users = tUserMapper.selectAllWithPage(p);
users = tUserMapper.selectAllWithPage(p);
assertThat(users, hasSize(2));
}
}