/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.test.jpa;
import static org.junit.Assert.assertThat;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.apache.lucene.search.Query;
import org.hamcrest.CoreMatchers;
import org.hibernate.Session;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.hcore.util.impl.ContextHelper;
import org.hibernate.search.jpa.FullTextEntityManager;
import org.hibernate.search.jpa.Search;
import org.hibernate.search.query.dsl.QueryBuilder;
import org.hibernate.search.testsupport.TestForIssue;
import org.junit.Before;
import org.junit.Test;
/**
* @author Hardy Ferentschik
*/
public class ToStringTest extends JPATestCase {
FullTextEntityManager entityManager;
FullTextSession fullTextSession;
Query luceneQuery;
@Before
public void setup() {
entityManager = Search.getFullTextEntityManager( factory.createEntityManager() );
Session session = entityManager.unwrap( Session.class );
fullTextSession = org.hibernate.search.Search.getFullTextSession( session );
QueryBuilder builder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity( Foo.class ).get();
luceneQuery = builder.keyword()
.onField( "fubar" )
.matching( "snafu" )
.createQuery();
}
@Test
@TestForIssue(jiraKey = "HSEARCH-1173")
public void testToStringContainsQueryInformationForSessionUseCase() throws Exception {
org.hibernate.search.FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(
luceneQuery, Foo.class
);
assertToStringContainsLuceneQueryInformation( fullTextQuery.toString() );
}
@Test
@TestForIssue(jiraKey = "HSEARCH-1173")
public void testToStringContainsQueryInformationForJPAUseCase() throws Exception {
org.hibernate.search.jpa.FullTextQuery fullTextQuery = entityManager.createFullTextQuery(
luceneQuery, Foo.class
);
assertToStringContainsLuceneQueryInformation( fullTextQuery.toString() );
}
@Override
public Class<?>[] getAnnotatedClasses() {
return new Class<?>[] { Foo.class };
}
private void assertToStringContainsLuceneQueryInformation(String fullTextQueryToString) {
String queryString = ContextHelper.getSearchIntegrator( fullTextSession )
.createHSQuery( luceneQuery, Foo.class )
.getQueryString();
assertThat( "Unexpected toString implementation. The string should contain a string representation of the internal query.",
fullTextQueryToString, CoreMatchers.containsString( queryString ) );
}
@Entity
@Indexed
public static class Foo {
@Id
@GeneratedValue
private long id;
@Field
private String fubar;
}
}