package com.github.signed.sandboxes.spring.data.customers; import com.github.signed.sandboxes.spring.data.CustomerRepository; import com.github.signed.sandboxes.spring.data.H2Configuration; import com.github.signed.sandboxes.spring.data.HibernateConfiguration; import org.hamcrest.Matchers; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.context.TestContext; import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AbstractTestExecutionListener; import javax.sql.DataSource; import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; import static org.springframework.test.context.TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS; @RunWith(SpringJUnit4ClassRunner.class) @TestExecutionListeners(listeners = {RepositoryTest.SchemaInitializer.class}, mergeMode = MERGE_WITH_DEFAULTS) @SpringApplicationConfiguration(classes = {H2Configuration.class, HibernateConfiguration.class}) public class RepositoryTest { public static class SchemaInitializer extends AbstractTestExecutionListener { @Override public void beforeTestClass(TestContext testContext) throws Exception { DataSource dataSource = testContext.getApplicationContext().getBean(DataSource.class); JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); jdbcTemplate.update("CREATE TABLE Customer(\n" + " `id` bigint(20) NOT NULL AUTO_INCREMENT,\n" + " `firstName` varchar(32),\n" + " `lastName` varchar(32),\n" + " PRIMARY KEY (`id`)\n" + ") "); } } @Autowired private CustomerRepository repository; @Test public void saveAndRead() throws Exception { Customer john = new Customer("John", "Doe"); Customer save = repository.save(john); assertThat(save.id, Matchers.notNullValue()); List<Customer> doe = repository.findByLastName("Doe"); assertThat(doe.get(0).firstName, is("John")); } }