Files
spring-soap/persistence-modules/spring-boot-persistence/src/test/java/com/baeldung/persistencecontext/PersistenceContextIntegrationTest.java
devender.kumar b36a4cc38e Fix typo
2019-10-30 22:37:56 +01:00

78 lines
4.0 KiB
Java

package com.baeldung.persistencecontext;
import org.hamcrest.core.Is;
import org.hamcrest.core.IsNull;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.web.server.LocalServerPort;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.web.client.HttpServerErrorException;
import org.springframework.web.client.RestTemplate;
import com.baeldung.persistencecontext.PersistenceContextDemoApplication;
import com.baeldung.persistencecontext.entity.User;
import static org.junit.Assert.assertThat;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = PersistenceContextDemoApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class PersistenceContextIntegrationTest {
@LocalServerPort
private int port;
private RestTemplate restTemplate;
@Before
public void setUp() {
restTemplate = new RestTemplate();
}
@Test
public void testThatWhenUserSavedWithTransctionPersistenceContextThenUserShouldGetSavedInDB() {
User user = new User(121L, "Devender", "admin");
restTemplate.postForEntity(buildRequestUrl("v1/user/"), user, User.class);
User userFromTransctionPersistenceContext = restTemplate.getForObject(buildRequestUrl("v1/user/121"), User.class);
User userFromExtendedPersistenceContext = restTemplate.getForObject(buildRequestUrl("v2/user/121"), User.class);
assertThat(userFromTransctionPersistenceContext, Is.is(IsNull.notNullValue()));
assertThat(userFromExtendedPersistenceContext, Is.is(IsNull.notNullValue()));
}
@Test(expected = HttpServerErrorException.class)
public void testThatWhenUserSaveWithOutTransactionInPersistanceContextTypeTransactionThenShouldFailOnPersist() {
User user = new User(122L, "Devender", "admin");
restTemplate.postForEntity(buildRequestUrl("v4/user/"), user, User.class);
}
@Test
public void testThatWhenUserSavedWithExtendedPersistenceContextWithoutTransactionThenUserShouldGetBeCached() {
User user = new User(123L, "Devender", "admin");
restTemplate.postForEntity(buildRequestUrl("v2/user/"), user, User.class);
User userFromExtendedPersistenceContext = restTemplate.getForObject(buildRequestUrl("v2/user/123"), User.class);
User userFromTransctionPersistenceContext = restTemplate.getForObject(buildRequestUrl("v1/user/123"), User.class);
assertThat(userFromExtendedPersistenceContext, Is.is(IsNull.notNullValue()));
assertThat(userFromTransctionPersistenceContext, Is.is(IsNull.nullValue()));
}
@Test
public void testThatWhenUserSavedWithExtendedPersistenceContextWithTransactionThenUserShouldFlushCachedEntityIntoDB() {
User user = new User(124L, "Devender", "admin");
restTemplate.postForEntity(buildRequestUrl("v2/user/"), user, User.class);
user = new User(125L, "Devender", "admin");
restTemplate.postForEntity(buildRequestUrl("v3/user/"), user, User.class);
User userFromExtendedPersistenceContextuser1 = restTemplate.getForObject(buildRequestUrl("v2/user/124"), User.class);
User userFromExtendedPersistenceContextuser2 = restTemplate.getForObject(buildRequestUrl("v2/user/125"), User.class);
User userFromTransctionPersistenceContextuser1 = restTemplate.getForObject(buildRequestUrl("v1/user/124"), User.class);
User userFromTransctionPersistenceContextuser2 = restTemplate.getForObject(buildRequestUrl("v1/user/125"), User.class);
assertThat(userFromExtendedPersistenceContextuser1, Is.is(IsNull.notNullValue()));
assertThat(userFromExtendedPersistenceContextuser2, Is.is(IsNull.notNullValue()));
assertThat(userFromTransctionPersistenceContextuser1, Is.is(IsNull.notNullValue()));
assertThat(userFromTransctionPersistenceContextuser2, Is.is(IsNull.notNullValue()));
}
private String buildRequestUrl(String path) {
return "http://localhost:" + port + path;
}
}