package com.tddinaction.data.spring.jdbc; import static org.easymock.EasyMock.aryEq; import static org.easymock.EasyMock.eq; import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.isA; import static org.easymock.classextension.EasyMock.createMock; import static org.easymock.classextension.EasyMock.replay; import static org.easymock.classextension.EasyMock.verify; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.springframework.jdbc.core.JdbcTemplate; import com.tddinaction.data.person.Person; public class JdbcTemplatePersonDaoTest { @Test public void testFindByLastname() throws Exception { final String lastName = "Smith"; final List<Person> smiths = createListOfPeopleWithLastname(lastName); JdbcTemplate template = createMock(JdbcTemplate.class); template.query( eq("SELECT * FROM employee WHERE last_name = ?"), aryEq(new Object[] { lastName }), isA(PersonRowMapper.class)); expectLastCall().andReturn(smiths); replay(template); JdbcTemplatePersonDao dao = new JdbcTemplatePersonDao(); dao.setJdbcTemplate(template); assertEquals(smiths, dao.findByLastname(lastName)); verify(template); } private List<Person> createListOfPeopleWithLastname( String lastName) { List<Person> expectedList = new ArrayList<Person>(); expectedList.add(new Person("Alice", lastName)); expectedList.add(new Person("Billy", lastName)); expectedList.add(new Person("Clark", lastName)); return expectedList; } @Test public void testFindAll() throws Exception { List<Person> expected = createListOfPeopleWithLastname("Smith"); JdbcTemplate template = createMock(JdbcTemplate.class); template.query(eq("SELECT * FROM employee"), aryEq(new Object[0]), isA(PersonRowMapper.class)); expectLastCall().andReturn(expected); replay(template); JdbcTemplatePersonDao dao = new JdbcTemplatePersonDao(); dao.setJdbcTemplate(template); assertEquals(expected, dao.findAll()); verify(template); } }