BAEL-659 (#4489)
* BAEL-1412 add java 8 spring data features * BAEL-21 new HTTP API overview * BAEL-21 fix executor * BAEL-1432 add custom gradle task * BAEL-1567 add samples of cookie and session in serlvet * BAEL-1567 use stream api * BAEL-1567 fix optional * BAEL-1679 add query annotation jpa spring data * BAEL-1679 added new junits * BAEL-1679 use assertJ, use givenWhenThen naming convention * BAEL-1679 move query annotation examples to persistence modules * BAEL-1679 fix formatting * BAEL-659 add junits for repositories * BAEL-659 add one junit * BAEL-659 remove one duplicated dependency * BAEL-659 fix test class name
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
*/
|
||||
package baeldung.controller;
|
||||
|
||||
import baeldung.model.Member;
|
||||
import baeldung.service.MemberRegistration;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.enterprise.inject.Model;
|
||||
import javax.enterprise.inject.Produces;
|
||||
@@ -24,9 +27,6 @@ import javax.faces.context.FacesContext;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import baeldung.model.Member;
|
||||
import baeldung.service.MemberRegistration;
|
||||
|
||||
// The @Model stereotype is a convenience mechanism to make this a request-scoped bean that has an
|
||||
// EL name
|
||||
// Read more about the @Model stereotype in this FAQ:
|
||||
@@ -34,11 +34,9 @@ import baeldung.service.MemberRegistration;
|
||||
@Model
|
||||
public class MemberController {
|
||||
|
||||
@Inject
|
||||
private FacesContext facesContext;
|
||||
@Inject private FacesContext facesContext;
|
||||
|
||||
@Inject
|
||||
private MemberRegistration memberRegistration;
|
||||
@Inject private MemberRegistration memberRegistration;
|
||||
|
||||
@Produces
|
||||
@Named
|
||||
|
||||
@@ -1,29 +1,18 @@
|
||||
package baeldung.data;
|
||||
|
||||
import javax.enterprise.context.ApplicationScoped;
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.enterprise.inject.Default;
|
||||
import javax.enterprise.inject.Disposes;
|
||||
import javax.enterprise.inject.Produces;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
import javax.persistence.PersistenceUnit;
|
||||
import javax.persistence.PersistenceContext;
|
||||
|
||||
@ApplicationScoped
|
||||
public class EntityManagerProducer {
|
||||
@PersistenceUnit(unitName = "primary")
|
||||
private EntityManagerFactory entityManagerFactory;
|
||||
|
||||
@Produces
|
||||
@Default
|
||||
@PersistenceContext(unitName = "primary") private EntityManager entityManager;
|
||||
|
||||
@RequestScoped
|
||||
@Produces
|
||||
public EntityManager create() {
|
||||
return this.entityManagerFactory.createEntityManager();
|
||||
return entityManager;
|
||||
}
|
||||
|
||||
public void dispose(@Disposes @Default EntityManager entityManager) {
|
||||
if (entityManager.isOpen()) {
|
||||
entityManager.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,8 @@
|
||||
*/
|
||||
package baeldung.data;
|
||||
|
||||
import baeldung.model.Member;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.enterprise.event.Observes;
|
||||
@@ -25,13 +27,10 @@ import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import java.util.List;
|
||||
|
||||
import baeldung.model.Member;
|
||||
|
||||
@RequestScoped
|
||||
public class MemberListProducer {
|
||||
|
||||
@Inject
|
||||
private MemberRepository memberRepository;
|
||||
@Inject private MemberRepository memberRepository;
|
||||
|
||||
private List<Member> members;
|
||||
|
||||
|
||||
@@ -18,7 +18,10 @@ package baeldung.data;
|
||||
|
||||
import baeldung.model.Member;
|
||||
import baeldung.model.QMember;
|
||||
import org.apache.deltaspike.data.api.*;
|
||||
import org.apache.deltaspike.data.api.AbstractEntityRepository;
|
||||
import org.apache.deltaspike.data.api.EntityManagerConfig;
|
||||
import org.apache.deltaspike.data.api.Query;
|
||||
import org.apache.deltaspike.data.api.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -35,6 +38,9 @@ public abstract class MemberRepository extends AbstractEntityRepository<Member,
|
||||
|
||||
public List<Member> findAllOrderedByNameWithQueryDSL() {
|
||||
final QMember member = QMember.member;
|
||||
return jpaQuery().from(member).orderBy(member.email.asc()).list(member);
|
||||
return jpaQuery()
|
||||
.from(member)
|
||||
.orderBy(member.email.asc())
|
||||
.list(member);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,7 @@ import javax.inject.Inject;
|
||||
|
||||
public class QueryDslRepositoryExtension<E> implements QueryDslSupport, DelegateQueryHandler {
|
||||
|
||||
@Inject
|
||||
private QueryInvocationContext context;
|
||||
@Inject private QueryInvocationContext context;
|
||||
|
||||
@Override
|
||||
public JPAQuery jpaQuery() {
|
||||
|
||||
@@ -2,29 +2,20 @@ package baeldung.data;
|
||||
|
||||
import javax.enterprise.context.ApplicationScoped;
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.enterprise.inject.Default;
|
||||
import javax.enterprise.inject.Disposes;
|
||||
import javax.enterprise.inject.Produces;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
import javax.persistence.PersistenceUnit;
|
||||
import javax.persistence.PersistenceContext;
|
||||
|
||||
@ApplicationScoped
|
||||
public class SecondaryEntityManagerProducer {
|
||||
@PersistenceUnit(unitName = "secondary")
|
||||
private EntityManagerFactory entityManagerFactory;
|
||||
|
||||
@PersistenceContext(unitName = "secondary") private EntityManager entityManager;
|
||||
|
||||
@Produces
|
||||
@Default
|
||||
@RequestScoped
|
||||
@SecondaryPersistenceUnit
|
||||
public EntityManager create() {
|
||||
return this.entityManagerFactory.createEntityManager();
|
||||
return entityManager;
|
||||
}
|
||||
|
||||
public void dispose(@Disposes @Default EntityManager entityManager) {
|
||||
if (entityManager.isOpen()) {
|
||||
entityManager.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package baeldung.data;
|
||||
|
||||
import baeldung.model.User;
|
||||
import org.apache.deltaspike.data.api.FirstResult;
|
||||
import org.apache.deltaspike.data.api.MaxResults;
|
||||
import org.apache.deltaspike.data.api.Repository;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by adam.
|
||||
*/
|
||||
@Repository(forEntity = User.class)
|
||||
public abstract class SimpleUserRepository {
|
||||
public abstract Collection<User> findAll();
|
||||
|
||||
public abstract Collection<User> findAllOrderByFirstNameAsc(@FirstResult int start, @MaxResults int size);
|
||||
|
||||
public abstract Collection<User> findTop2OrderByFirstNameAsc();
|
||||
|
||||
public abstract Collection<User> findFirst2OrderByFirstNameAsc();
|
||||
|
||||
public abstract List<User> findAllOrderByFirstNameAsc();
|
||||
|
||||
public abstract List<User> findAllOrderByFirstNameAscLastNameDesc();
|
||||
|
||||
public abstract User findById(Long id);
|
||||
|
||||
public abstract Collection<User> findByFirstName(String firstName);
|
||||
|
||||
public abstract User findAnyByLastName(String lastName);
|
||||
|
||||
public abstract Collection<User> findAnyByFirstName(String firstName);
|
||||
|
||||
public abstract Collection<User> findByFirstNameAndLastName(String firstName, String lastName);
|
||||
|
||||
public abstract Collection<User> findByFirstNameOrLastName(String firstName, String lastName);
|
||||
|
||||
public abstract Collection<User> findByAddress_city(String city);
|
||||
|
||||
public abstract int count();
|
||||
|
||||
public abstract void remove(User user);
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package baeldung.data;
|
||||
|
||||
import baeldung.model.User;
|
||||
import org.apache.deltaspike.data.api.AbstractEntityRepository;
|
||||
import org.apache.deltaspike.data.api.Query;
|
||||
import org.apache.deltaspike.data.api.Repository;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by adam.
|
||||
*/
|
||||
@Repository
|
||||
public abstract class UserRepository extends AbstractEntityRepository<User, Long> {
|
||||
|
||||
public List<User> findByFirstName(String firstName) {
|
||||
return typedQuery("select u from User u where u.firstName = ?1")
|
||||
.setParameter(1, firstName)
|
||||
.getResultList();
|
||||
}
|
||||
|
||||
public abstract List<User> findByLastName(String lastName);
|
||||
|
||||
@Query("select u from User u where u.firstName = ?1")
|
||||
public abstract Collection<User> findUsersWithFirstName(String firstName);
|
||||
|
||||
@Query(value = "select * from User where firstName = ?1", isNative = true)
|
||||
public abstract Collection<User> findUsersWithFirstNameNative(String firstName);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package baeldung.model;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
|
||||
/**
|
||||
* Created by adam.
|
||||
*/
|
||||
@Entity
|
||||
public class Address {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
private String street;
|
||||
private String city;
|
||||
private String postCode;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getStreet() {
|
||||
return street;
|
||||
}
|
||||
|
||||
public void setStreet(String street) {
|
||||
this.street = street;
|
||||
}
|
||||
|
||||
public String getCity() {
|
||||
return city;
|
||||
}
|
||||
|
||||
public void setCity(String city) {
|
||||
this.city = city;
|
||||
}
|
||||
|
||||
public String getPostCode() {
|
||||
return postCode;
|
||||
}
|
||||
|
||||
public void setPostCode(String postCode) {
|
||||
this.postCode = postCode;
|
||||
}
|
||||
}
|
||||
@@ -16,22 +16,16 @@
|
||||
*/
|
||||
package baeldung.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import org.hibernate.validator.constraints.Email;
|
||||
import org.hibernate.validator.constraints.NotEmpty;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.UniqueConstraint;
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.Digits;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Pattern;
|
||||
import javax.validation.constraints.Size;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import org.hibernate.validator.constraints.Email;
|
||||
import org.hibernate.validator.constraints.NotEmpty;
|
||||
import java.io.Serializable;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
@Entity
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package baeldung.model;
|
||||
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.OneToOne;
|
||||
|
||||
/**
|
||||
* Created by adam.
|
||||
*/
|
||||
@Entity
|
||||
public class User {
|
||||
|
||||
@Id
|
||||
@GeneratedValue
|
||||
private Long id;
|
||||
private String firstName;
|
||||
private String lastName;
|
||||
@OneToOne private Address address;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public Address getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setAddress(Address address) {
|
||||
this.address = address;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="
|
||||
http://xmlns.jcp.org/xml/ns/javaee
|
||||
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" bean-discovery-mode="all">
|
||||
</beans>
|
||||
@@ -0,0 +1,21 @@
|
||||
package baeldung;
|
||||
|
||||
import javax.enterprise.inject.Produces;
|
||||
import javax.validation.Validation;
|
||||
import javax.validation.Validator;
|
||||
|
||||
/**
|
||||
* Created by adam.
|
||||
*/
|
||||
public class ValidatorProducer {
|
||||
|
||||
@Produces
|
||||
public Validator createValidator() {
|
||||
return Validation
|
||||
.byDefaultProvider()
|
||||
.configure()
|
||||
.buildValidatorFactory()
|
||||
.getValidator();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package baeldung.data;
|
||||
|
||||
import javax.enterprise.context.ApplicationScoped;
|
||||
import javax.enterprise.inject.Produces;
|
||||
import javax.enterprise.inject.Specializes;
|
||||
import javax.persistence.EntityManager;
|
||||
import javax.persistence.Persistence;
|
||||
|
||||
/**
|
||||
* Created by adam.
|
||||
*/
|
||||
public class TestEntityManagerProducer extends EntityManagerProducer {
|
||||
|
||||
@ApplicationScoped
|
||||
@Produces
|
||||
@Specializes
|
||||
public EntityManager create() {
|
||||
return Persistence
|
||||
.createEntityManagerFactory("pu-test")
|
||||
.createEntityManager();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,19 +16,12 @@
|
||||
*/
|
||||
package baeldung.test;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import baeldung.data.*;
|
||||
import org.jboss.arquillian.container.test.api.Deployment;
|
||||
import org.jboss.arquillian.junit.Arquillian;
|
||||
import baeldung.model.Member;
|
||||
import baeldung.service.MemberRegistration;
|
||||
import baeldung.util.Resources;
|
||||
import org.jboss.arquillian.container.test.api.Deployment;
|
||||
import org.jboss.arquillian.junit.Arquillian;
|
||||
import org.jboss.shrinkwrap.api.Archive;
|
||||
import org.jboss.shrinkwrap.api.ShrinkWrap;
|
||||
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
|
||||
@@ -37,24 +30,39 @@ import org.jboss.shrinkwrap.resolver.api.maven.Maven;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.io.File;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
@RunWith(Arquillian.class)
|
||||
public class MemberRegistrationIntegrationTest {
|
||||
@Deployment
|
||||
public static Archive<?> createTestArchive() {
|
||||
File[] files = Maven.resolver().loadPomFromFile("pom.xml").importRuntimeDependencies().resolve().withTransitivity().asFile();
|
||||
File[] files = Maven
|
||||
.resolver()
|
||||
.loadPomFromFile("pom.xml")
|
||||
.importRuntimeDependencies()
|
||||
.resolve()
|
||||
.withTransitivity()
|
||||
.asFile();
|
||||
|
||||
return ShrinkWrap.create(WebArchive.class, "test.war")
|
||||
.addClasses(EntityManagerProducer.class, Member.class, MemberRegistration.class, MemberRepository.class, Resources.class, QueryDslRepositoryExtension.class, QueryDslSupport.class, SecondaryPersistenceUnit.class,
|
||||
SecondaryEntityManagerProducer.class, SecondaryEntityManagerResolver.class)
|
||||
.addAsResource("META-INF/test-persistence.xml", "META-INF/persistence.xml").addAsResource("META-INF/apache-deltaspike.properties").addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml").addAsWebInfResource("test-ds.xml")
|
||||
.addAsWebInfResource("test-secondary-ds.xml").addAsLibraries(files);
|
||||
return ShrinkWrap
|
||||
.create(WebArchive.class, "test.war")
|
||||
.addClasses(EntityManagerProducer.class, Member.class, MemberRegistration.class, MemberRepository.class, Resources.class, QueryDslRepositoryExtension.class, QueryDslSupport.class, SecondaryPersistenceUnit.class, SecondaryEntityManagerProducer.class,
|
||||
SecondaryEntityManagerResolver.class)
|
||||
.addAsResource("META-INF/persistence.xml", "META-INF/persistence.xml")
|
||||
.addAsResource("META-INF/apache-deltaspike.properties")
|
||||
.addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")
|
||||
.addAsWebInfResource("test-ds.xml")
|
||||
.addAsWebInfResource("test-secondary-ds.xml")
|
||||
.addAsLibraries(files);
|
||||
}
|
||||
|
||||
@Inject
|
||||
MemberRegistration memberRegistration;
|
||||
@Inject MemberRegistration memberRegistration;
|
||||
|
||||
@Inject
|
||||
Logger log;
|
||||
@Inject Logger log;
|
||||
|
||||
@Test
|
||||
public void testRegister() throws Exception {
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
package baeldung.test;
|
||||
|
||||
import baeldung.data.SimpleUserRepository;
|
||||
import baeldung.model.User;
|
||||
import org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.persistence.EntityManager;
|
||||
import java.util.List;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
/**
|
||||
* Created by adam.
|
||||
*/
|
||||
@RunWith(CdiTestRunner.class)
|
||||
public class SimpleUserRepositoryUnitTest {
|
||||
|
||||
@Inject private EntityManager entityManager;
|
||||
|
||||
@Inject private SimpleUserRepository simpleUserRepository;
|
||||
|
||||
@Test
|
||||
public void givenFourUsersWhenFindAllShouldReturnFourUsers() {
|
||||
assertThat(simpleUserRepository
|
||||
.findAll()
|
||||
.size(), equalTo(4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTwoUsersWithSpecifiedNameWhenFindByFirstNameShouldReturnTwoUsers() {
|
||||
assertThat(simpleUserRepository
|
||||
.findByFirstName("Adam")
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTwoUsersWithSpecifiedNameWhenFindAnyByFirstNameShouldReturnTwoUsers() {
|
||||
assertThat(simpleUserRepository
|
||||
.findAnyByFirstName("Adam")
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTwoUsersWithSpecifiedNameWhenCountByFirstNameShouldReturnSizeTwo() {
|
||||
assertThat(simpleUserRepository.count(), equalTo(4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTwoUsersWithSpecifiedNameWhenRemoveByFirstNameShouldReturnSizeTwo() {
|
||||
simpleUserRepository.remove(entityManager.merge(simpleUserRepository.findById(1L)));
|
||||
assertThat(entityManager.find(User.class, 1L), nullValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenOneUserWithSpecifiedFirstNameAndLastNameWhenFindByFirstNameAndLastNameShouldReturnOneUser() {
|
||||
assertThat(simpleUserRepository
|
||||
.findByFirstNameAndLastName("Adam", "LastName1")
|
||||
.size(), equalTo(1));
|
||||
assertThat(simpleUserRepository
|
||||
.findByFirstNameAndLastName("David", "LastName2")
|
||||
.size(), equalTo(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenOneUserWithSpecifiedLastNameWhenFindAnyByLastNameShouldReturnOneUser() {
|
||||
assertThat(simpleUserRepository.findAnyByLastName("LastName1"), notNullValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenOneUserWithSpecifiedAddressCityWhenFindByCityShouldReturnOneUser() {
|
||||
assertThat(simpleUserRepository
|
||||
.findByAddress_city("London")
|
||||
.size(), equalTo(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUsersWithSpecifiedFirstOrLastNameWhenFindByFirstNameOrLastNameShouldReturnTwoUsers() {
|
||||
assertThat(simpleUserRepository
|
||||
.findByFirstNameOrLastName("David", "LastName1")
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUsersWhenFindAllOrderByFirstNameAscShouldReturnFirstAdamLastPeter() {
|
||||
List<User> users = simpleUserRepository.findAllOrderByFirstNameAsc();
|
||||
assertThat(users
|
||||
.get(0)
|
||||
.getFirstName(), equalTo("Adam"));
|
||||
assertThat(users
|
||||
.get(3)
|
||||
.getFirstName(), equalTo("Peter"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUsersWhenFindAllOrderByFirstNameAscLastNameDescShouldReturnFirstAdamLastPeter() {
|
||||
List<User> users = simpleUserRepository.findAllOrderByFirstNameAscLastNameDesc();
|
||||
assertThat(users
|
||||
.get(0)
|
||||
.getFirstName(), equalTo("Adam"));
|
||||
assertThat(users
|
||||
.get(3)
|
||||
.getFirstName(), equalTo("Peter"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUsersWhenFindTop2ShouldReturnTwoUsers() {
|
||||
assertThat(simpleUserRepository
|
||||
.findTop2OrderByFirstNameAsc()
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenUsersWhenFindFirst2ShouldReturnTwoUsers() {
|
||||
assertThat(simpleUserRepository
|
||||
.findFirst2OrderByFirstNameAsc()
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenPagesWithSizeTwoWhenFindAllOrderByFirstNameAscShouldReturnTwoPages() {
|
||||
assertThat(simpleUserRepository
|
||||
.findAllOrderByFirstNameAsc(0, 2)
|
||||
.size(), equalTo(2));
|
||||
assertThat(simpleUserRepository
|
||||
.findAllOrderByFirstNameAsc(2, 4)
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package baeldung.test;
|
||||
|
||||
import baeldung.data.UserRepository;
|
||||
import org.apache.deltaspike.testcontrol.api.junit.CdiTestRunner;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
/**
|
||||
* Created by adam.
|
||||
*/
|
||||
@RunWith(CdiTestRunner.class)
|
||||
public class UserRepositoryUnitTest {
|
||||
|
||||
@Inject private UserRepository userRepository;
|
||||
|
||||
@Test
|
||||
public void givenFourUsersWhenFindAllShouldReturnFourUsers() {
|
||||
assertThat(userRepository
|
||||
.findAll()
|
||||
.size(), equalTo(4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTwoUsersWithSpecifiedNameWhenFindByFirstNameShouldReturnTwoUsers() {
|
||||
assertThat(userRepository
|
||||
.findByFirstName("Adam")
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTwoUsersWithSpecifiedNameWhenFindUsersWithFirstNameShouldReturnTwoUsers() {
|
||||
assertThat(userRepository
|
||||
.findUsersWithFirstName("Adam")
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTwoUsersWithSpecifiedNameWhenFindUsersWithFirstNameNativeShouldReturnTwoUsers() {
|
||||
assertThat(userRepository
|
||||
.findUsersWithFirstNameNative("Adam")
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenTwoUsersWithSpecifiedLastNameWhenFindByLastNameShouldReturnTwoUsers() {
|
||||
assertThat(userRepository
|
||||
.findByLastName("LastName3")
|
||||
.size(), equalTo(2));
|
||||
}
|
||||
}
|
||||
@@ -1 +1,3 @@
|
||||
globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy=org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy
|
||||
org.apache.deltaspike.ProjectStage=UnitTest
|
||||
deltaspike.testcontrol.stop_container=false
|
||||
@@ -0,0 +1,18 @@
|
||||
<!--<?xml version="1.0" encoding="UTF-8"?>-->
|
||||
<!--<!– JBoss, Home of Professional Open Source Copyright 2013, Red Hat, Inc. -->
|
||||
<!--and/or its affiliates, and individual contributors by the @authors tag. See -->
|
||||
<!--the copyright.txt in the distribution for a full listing of individual contributors. -->
|
||||
<!--Licensed under the Apache License, Version 2.0 (the "License"); you may not -->
|
||||
<!--use this file except in compliance with the License. You may obtain a copy -->
|
||||
<!--of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required -->
|
||||
<!--by applicable law or agreed to in writing, software distributed under the -->
|
||||
<!--License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS -->
|
||||
<!--OF ANY KIND, either express or implied. See the License for the specific -->
|
||||
<!--language governing permissions and limitations under the License. –>-->
|
||||
<!--<!– Marker file indicating CDI should be enabled –>-->
|
||||
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="
|
||||
http://xmlns.jcp.org/xml/ns/javaee
|
||||
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" bean-discovery-mode="all">
|
||||
|
||||
</beans>
|
||||
+20
@@ -11,6 +11,7 @@
|
||||
<property name="hibernate.show_sql" value="false" />
|
||||
</properties>
|
||||
</persistence-unit>
|
||||
|
||||
<persistence-unit name="secondary">
|
||||
<jta-data-source>java:jboss/datasources/baeldung-jee7-seedTestSecondaryDS</jta-data-source>
|
||||
<properties>
|
||||
@@ -18,4 +19,23 @@
|
||||
<property name="hibernate.show_sql" value="false" />
|
||||
</properties>
|
||||
</persistence-unit>
|
||||
|
||||
<persistence-unit name="pu-test" transaction-type="RESOURCE_LOCAL">
|
||||
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
|
||||
<!-- add classes -->
|
||||
<class>baeldung.model.User</class>
|
||||
<class>baeldung.model.Address</class>
|
||||
|
||||
<properties>
|
||||
<!-- Configuring JDBC properties -->
|
||||
<property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:test"/>
|
||||
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
|
||||
|
||||
<!-- Hibernate properties -->
|
||||
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
|
||||
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
|
||||
<property name="hibernate.format_sql" value="false"/>
|
||||
<property name="hibernate.show_sql" value="true"/>
|
||||
</properties>
|
||||
</persistence-unit>
|
||||
</persistence>
|
||||
@@ -28,12 +28,4 @@
|
||||
<!-- Force the use of the Servlet 3.0 protocol with all containers, as it is the most mature -->
|
||||
<defaultProtocol type="Servlet 3.0" />
|
||||
|
||||
<!-- Example configuration for a remote WildFly instance -->
|
||||
<container qualifier="jboss" default="true">
|
||||
<!-- By default, arquillian will use the JBOSS_HOME environment variable. Alternatively, the configuration below can be uncommented. -->
|
||||
<configuration>
|
||||
<property name="jbossHome">target\wildfly-run\wildfly-10.0.0.Final</property>
|
||||
</configuration>
|
||||
</container>
|
||||
|
||||
</arquillian>
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
INSERT INTO ADDRESS(ID, STREET, CITY, POSTCODE) VALUES (1, 'Oxford', 'London', 'N121');
|
||||
|
||||
INSERT INTO USER(ID, FIRSTNAME, LASTNAME, ADDRESS_ID) VALUES (1, 'Adam', 'LastName1', null);
|
||||
INSERT INTO USER(ID, FIRSTNAME, LASTNAME, ADDRESS_ID) VALUES (2, 'David', 'LastName2', null);
|
||||
INSERT INTO USER(ID, FIRSTNAME, LASTNAME, ADDRESS_ID) VALUES (3, 'Adam', 'LastName3', null);
|
||||
INSERT INTO USER(ID, FIRSTNAME, LASTNAME, ADDRESS_ID) VALUES (4, 'Peter', 'LastName3', 1);
|
||||
Reference in New Issue
Block a user