Added Foo stored procedures tests

This commit is contained in:
GuenHamza 2016-07-07 03:32:37 +00:00 committed by GitHub
parent 95e6cb16d7
commit 7eb04b4ea5
1 changed files with 128 additions and 0 deletions

View File

@ -0,0 +1,128 @@
package com.baeldung.persistence.service;
import java.util.List;
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
import static org.junit.Assert.assertEquals;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.exception.SQLGrammarException;
import org.junit.After;
import org.junit.Assume;
import org.junit.Before;
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 com.baeldung.persistence.model.Foo;
import com.baeldung.spring.PersistenceConfig;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
public class FooStoredProceduresIntegrationTest {
@Autowired
private SessionFactory sessionFactory;
@Autowired
private IFooService fooService;
private Session session;
@Before
public final void before() {
session = sessionFactory.openSession();
Assume.assumeTrue(getAllFoosExists());
Assume.assumeTrue(getFoosByNameExists());
}
private boolean getFoosByNameExists() {
try {
Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()")
.addEntity(Foo.class);
sqlQuery.list();
return true;
} catch (SQLGrammarException e) {
System.out
.println("WARNING : GetFoosByName() Procedure is may be missing ");
return false;
}
}
private boolean getAllFoosExists() {
try {
Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()")
.addEntity(Foo.class);
sqlQuery.list();
return true;
} catch (SQLGrammarException e) {
System.out
.println("WARNING : GetAllFoos() Procedure is may be missing ");
return false;
}
}
@After
public final void after() {
session.close();
}
@Test
public final void getAllFoosUsingStoredProcedures() {
fooService.create(new Foo(randomAlphabetic(6)));
// Stored procedure getAllFoos using createSQLQuery
Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()").addEntity(
Foo.class);
@SuppressWarnings("unchecked")
List<Foo> allFoos = sqlQuery.list();
for (Foo foo : allFoos) {
System.out.println("getAllFoos() SQL Query result : "
+ foo.getName());
}
assertEquals(allFoos.size(), fooService.findAll().size());
// Stored procedure getAllFoos using a Named Query
Query namedQuery = session.getNamedQuery("callGetAllFoos");
@SuppressWarnings("unchecked")
List<Foo> allFoos2 = namedQuery.list();
for (Foo foo : allFoos2) {
System.out.println("getAllFoos() NamedQuery result : "
+ foo.getName());
}
assertEquals(allFoos2.size(), fooService.findAll().size());
}
@Test
public final void getFoosByNameUsingStoredProcedures() {
fooService.create(new Foo("NewFooName"));
// Stored procedure getFoosByName using createSQLQuery()
Query sqlQuery = session.createSQLQuery("CALL GetFoosByName(:fooName)")
.addEntity(Foo.class).setParameter("fooName", "NewFooName");
@SuppressWarnings("unchecked")
List<Foo> allFoosByName = sqlQuery.list();
for (Foo foo : allFoosByName) {
System.out.println("getFoosByName() using SQL Query : found => "
+ foo.toString());
}
// Stored procedure getFoosByName using getNamedQuery()
Query namedQuery = session.getNamedQuery("callGetFoosByName")
.setParameter("fooName", "NewFooName");
@SuppressWarnings("unchecked")
List<Foo> allFoosByName2 = namedQuery.list();
for (Foo foo : allFoosByName2) {
System.out.println("getFoosByName() using Native Query : found => "
+ foo.toString());
}
}
}