PAN-7 Wrote CRUD integration test
This commit is contained in:
+35
-7
@@ -5,39 +5,67 @@ import edu.msudenver.tsp.persistence.dto.DefinitionDto;
|
|||||||
import edu.msudenver.tsp.persistence.dto.Notation;
|
import edu.msudenver.tsp.persistence.dto.Notation;
|
||||||
import edu.msudenver.tsp.persistence.repository.DefinitionRepository;
|
import edu.msudenver.tsp.persistence.repository.DefinitionRepository;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@ContextConfiguration(classes = PersistenceTestConfig.class)
|
||||||
public class DefinitionsIntegrationTest {
|
public class DefinitionsIntegrationTest {
|
||||||
private final DefinitionRepository definitionRepository;
|
@Autowired private DefinitionRepository definitionRepository;
|
||||||
|
|
||||||
@Autowired DefinitionsIntegrationTest(final DefinitionRepository definitionRepository) {
|
|
||||||
this.definitionRepository = definitionRepository;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCRUDFunctionality() {
|
public void testCRUDFunctionality() {
|
||||||
// Create a new definition
|
// Create a new definition
|
||||||
final DefinitionDto definitionDto = createDefinition();
|
final DefinitionDto definitionDto = createDefinition();
|
||||||
final DefinitionDto savedDefinition = definitionRepository.save(definitionDto);
|
final DefinitionDto savedDefinition = definitionRepository.save(definitionDto);
|
||||||
|
|
||||||
|
assertNotNull(savedDefinition);
|
||||||
|
assertEquals(Integer.valueOf(0), savedDefinition.getVersion());
|
||||||
|
|
||||||
|
final int id = savedDefinition.getId();
|
||||||
|
|
||||||
|
assertEquals("Test Name", savedDefinition.getName());
|
||||||
|
assertNotNull(savedDefinition.getDefinition());
|
||||||
|
assertNotNull(savedDefinition.getNotation());
|
||||||
|
|
||||||
|
final List<String> definitionsList = savedDefinition.getDefinition().getDefinitions();
|
||||||
|
final List<String> notationList = savedDefinition.getNotation().getNotations();
|
||||||
|
|
||||||
|
assertEquals(2, definitionsList.size());
|
||||||
|
assertEquals(1, notationList.size());
|
||||||
|
assertEquals("Test definition 1", definitionsList.get(0));
|
||||||
|
assertEquals("Test definition 2", definitionsList.get(1));
|
||||||
|
assertEquals("\\testLaTeX", notationList.get(0));
|
||||||
|
|
||||||
|
definitionRepository.delete(savedDefinition);
|
||||||
|
final Optional<DefinitionDto> deletedDefinition = definitionRepository.findById(id);
|
||||||
|
assertFalse(deletedDefinition.isPresent());
|
||||||
}
|
}
|
||||||
|
|
||||||
private DefinitionDto createDefinition() {
|
private DefinitionDto createDefinition() {
|
||||||
final List<String> definitionList = new ArrayList<>();
|
final List<String> definitionList = new ArrayList<>();
|
||||||
definitionList.add("testDefinition1");
|
definitionList.add("Test definition 1");
|
||||||
|
definitionList.add("Test definition 2");
|
||||||
|
|
||||||
final Definition definition = new Definition();
|
final Definition definition = new Definition();
|
||||||
definition.setDefinitions(definitionList);
|
definition.setDefinitions(definitionList);
|
||||||
|
|
||||||
final List<String> notationList = new ArrayList<>();
|
final List<String> notationList = new ArrayList<>();
|
||||||
notationList.add("\\textLaTeX");
|
notationList.add("\\testLaTeX");
|
||||||
|
|
||||||
final Notation notation = new Notation();
|
final Notation notation = new Notation();
|
||||||
notation.setNotations(notationList);
|
notation.setNotations(notationList);
|
||||||
|
|
||||||
final DefinitionDto definitionDto = new DefinitionDto();
|
final DefinitionDto definitionDto = new DefinitionDto();
|
||||||
|
definitionDto.setName("Test Name");
|
||||||
definitionDto.setDefinition(definition);
|
definitionDto.setDefinition(definition);
|
||||||
definitionDto.setNotation(notation);
|
definitionDto.setNotation(notation);
|
||||||
|
|
||||||
|
|||||||
+93
@@ -0,0 +1,93 @@
|
|||||||
|
package edu.msudenver.tsp.persistence;
|
||||||
|
|
||||||
|
import org.hibernate.SessionFactory;
|
||||||
|
import org.hibernate.jpa.HibernatePersistenceProvider;
|
||||||
|
import org.springframework.boot.autoconfigure.domain.EntityScan;
|
||||||
|
import org.springframework.boot.jdbc.DataSourceBuilder;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
|
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
|
||||||
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||||
|
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
|
||||||
|
import org.springframework.orm.hibernate5.HibernateTransactionManager;
|
||||||
|
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder;
|
||||||
|
import org.springframework.orm.jpa.JpaTransactionManager;
|
||||||
|
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
||||||
|
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
||||||
|
|
||||||
|
import javax.sql.DataSource;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableJpaRepositories
|
||||||
|
@EnableJpaAuditing
|
||||||
|
@EntityScan(basePackages = "edu.msudenver.tsp.persistence")
|
||||||
|
public class PersistenceTestConfig {
|
||||||
|
@Bean
|
||||||
|
@Primary
|
||||||
|
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
|
||||||
|
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
|
||||||
|
em.setJpaVendorAdapter(vendorAdapter());
|
||||||
|
em.setDataSource(getDataSource());
|
||||||
|
em.setPersistenceProviderClass(HibernatePersistenceProvider.class);
|
||||||
|
em.setPackagesToScan("edu.msudenver.tsp.persistence");
|
||||||
|
em.setJpaProperties(additionalProperties());
|
||||||
|
|
||||||
|
return em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public JpaTransactionManager jpaTransactionManager() {
|
||||||
|
final JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
|
||||||
|
jpaTransactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
|
||||||
|
return jpaTransactionManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
private HibernateJpaVendorAdapter vendorAdapter() {
|
||||||
|
final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
|
||||||
|
vendorAdapter.setShowSql(true);
|
||||||
|
return vendorAdapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "dataSource")
|
||||||
|
public DataSource getDataSource(){
|
||||||
|
return DataSourceBuilder
|
||||||
|
.create()
|
||||||
|
.username("panda")
|
||||||
|
.password("secret")
|
||||||
|
.url("jdbc:mysql://127.0.0.1:3306/pandamonium?autoReconnect=true&useSSL=false")
|
||||||
|
.driverClassName("com.mysql.cj.jdbc.Driver")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "sessionFactory")
|
||||||
|
public SessionFactory getSessionFactory(final DataSource dataSource) {
|
||||||
|
final LocalSessionFactoryBuilder sessionFactoryBuilder = new LocalSessionFactoryBuilder(dataSource);
|
||||||
|
sessionFactoryBuilder.scanPackages("edu.msudenver.tsp.persistence.dto");
|
||||||
|
return sessionFactoryBuilder.buildSessionFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "transactionManager")
|
||||||
|
public HibernateTransactionManager getTransactionManager(final SessionFactory sessionFactory) {
|
||||||
|
return new HibernateTransactionManager(sessionFactory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
|
||||||
|
final DataSourceInitializer initializer = new DataSourceInitializer();
|
||||||
|
initializer.setDataSource(dataSource);
|
||||||
|
return initializer;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Properties additionalProperties() {
|
||||||
|
final Properties properties = new Properties();
|
||||||
|
properties.setProperty("hibernate.hbm2ddl.auto", "update");
|
||||||
|
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
|
||||||
|
properties.setProperty("spring.jpa.show-sql", "true");
|
||||||
|
properties.setProperty("spring.datasource.tomcat.max-active", "1");
|
||||||
|
properties.setProperty("hibernate.id.new_generator_mappings","false");
|
||||||
|
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user