Fix #216 Repository vs DAO

This commit is contained in:
hoswey
2015-11-27 11:22:33 +08:00
parent 092d48d150
commit 9d4fff6029
12 changed files with 343 additions and 72 deletions
@@ -1,19 +0,0 @@
package com.iluwatar.repository;
import org.junit.Test;
import com.iluwatar.repository.App;
/**
*
* Application test
*
*/
public class AppTest {
@Test
public void test() {
String[] args = {};
App.main(args);
}
}
@@ -0,0 +1,109 @@
package com.iluwatar.repository;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.List;
import javax.annotation.Resource;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.google.common.collect.Lists;
/**
* Test case to test the functions of {@link PersonRepository}, beside the CRUD functions, the query
* by {@link org.springframework.data.jpa.domain.Specification} are also test.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class RepositoryTest {
@Resource
private PersonRepository repository;
Person peter = new Person("Peter", "Sagan", 17);
Person nasta = new Person("Nasta", "Kuzminova", 25);
Person john = new Person("John", "lawrence", 35);
Person terry = new Person("Terry", "Law", 36);
List<Person> persons = Arrays.asList(peter, nasta, john, terry);
/**
* Prepare data for test
*/
@Before
public void setup() {
repository.save(persons);
}
@Test
public void testFindAll() {
List<Person> actuals = Lists.newArrayList(repository.findAll());
assertTrue(actuals.containsAll(persons) && persons.containsAll(actuals));
}
@Test
public void testSave() {
Person terry = repository.findByName("Terry");
terry.setSurname("Lee");
terry.setAge(47);
repository.save(terry);
terry = repository.findByName("Terry");
assertEquals(terry.getSurname(), "Lee");
assertEquals(47, terry.getAge());
}
@Test
public void testDelete() {
Person terry = repository.findByName("Terry");
repository.delete(terry);
assertEquals(3, repository.count());
assertNull(repository.findByName("Terry"));
}
@Test
public void testCount() {
assertEquals(4, repository.count());
}
@Test
public void testFindAllByAgeBetweenSpec() {
List<Person> persons = repository.findAll(new PersonSpecifications.AgeBetweenSpec(20, 40));
assertEquals(3, persons.size());
assertTrue(persons.stream().allMatch((item) -> {
return item.getAge() > 20 && item.getAge() < 40;
}));
}
@Test
public void testFindOneByNameEqualSpec() {
Person actual = repository.findOne(new PersonSpecifications.NameEqualSpec("Terry"));
assertEquals(terry, actual);
}
@After
public void cleanup() {
repository.deleteAll();
}
}