Annotation Config was added. Now AppConfig contains a Main Method (same logic in App.java) to execute

This commit is contained in:
neonds
2015-11-27 21:23:55 -06:00
parent 9d4fff6029
commit 9a85dfe9df
3 changed files with 295 additions and 0 deletions
@@ -0,0 +1,110 @@
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 org.springframework.test.context.support.AnnotationConfigContextLoader;
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(classes = { AppConfig.class}, loader = AnnotationConfigContextLoader.class)
public class AnnotationBasedRepositoryTest {
@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();
}
}
@@ -0,0 +1,54 @@
package com.iluwatar.repository;
import static org.junit.Assert.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
import org.springframework.transaction.annotation.Transactional;
/**
* This case is Just for test the Annotation Based configuration
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { AppConfig.class}, loader = AnnotationConfigContextLoader.class)
public class AppConfigTest {
@Autowired
DataSource dataSource;
/**
* Test for bean instance
*/
@Test
public void testDataSource() {
assertNotNull(dataSource);
}
/**
* Test for correct query execution
* @throws SQLException
*/
@Test
@Transactional
public void testQuery() throws SQLException{
ResultSet resultSet = dataSource.getConnection().createStatement().executeQuery("SELECT 1");
String result = null;
String expected = "1";
while (resultSet.next()) {
result = resultSet.getString(1);
}
assertTrue(result.equals(expected));
}
}