/*
* Copyright (C) 2015 Red Hat, Inc. and/or its affiliates.
*
* 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.
*/
package org.jboss.errai.jpa.test.client;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.metamodel.EntityType;
import javax.persistence.metamodel.Metamodel;
import org.jboss.errai.jpa.test.entity.Album;
/**
* Provides a sanity check for {@link ErraiJpaTest} by running all the same
* tests that we run against Errai JPA against Hibernate.
*
* @author Jonathan Fuerth <jfuerth@gmail.com>
*/
public class HibernateJpaTest extends ErraiJpaTest {
private EntityManager entityManager;
/**
* Returns null because this test case is not meant to run in the GWT client
* environment.
*/
@Override
public String getModuleName() {
return null;
}
@Override
protected void gwtSetUp() throws Exception {
// don't call super implementation.. it is client-side-specific
Map<String, String> properties = new HashMap<String, String>();
properties.put("hibernate.connection.driver_class", "org.h2.Driver");
properties.put("hibernate.connection.url", "jdbc:h2:mem:temporary");
properties.put("hibernate.connection.username", "sa");
properties.put("hibernate.connection.password", "");
properties.put("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
properties.put("hibernate.hbm2ddl.auto", "update");
properties.put("javax.persistence.validation.mode", "none");
EntityManagerFactory emf = Persistence.createEntityManagerFactory("ErraiJpaClientTests", properties);
entityManager = emf.createEntityManager();
entityManager.getTransaction().begin();
Album.CALLBACK_LOG.clear();
}
@Override
protected void gwtTearDown() throws Exception {
if (entityManager.getTransaction().isActive()) {
entityManager.getTransaction().rollback();
}
}
@Override
protected EntityManager getEntityManager() {
return entityManager;
}
// the actual test methods are inherited from the superclass
/**
* Hibernate (at least on top of HSQLDB) damages BigDecimal (adds extra
* precision), java.util.Date (returns a java.sql.Date), and
* java.sql.Timestamp (truncates nanosecond precision). So we skip this test
* in Hibernate mode.
*/
@Override
public void testStoreAndFetchOneWithEverythingUsingFieldAccess() throws Exception {
// skip
}
/**
* Regression check for ERRAI-675.
* Hibernate is allowed to find the non client entity since it manages client as well as server entities.
*/
@Override
public void testNonClientEntityIsNotInEntityManager() {
// skip
}
/**
* Hibernate (at least on top of HSQLDB) damages BigDecimal (adds extra
* precision), java.util.Date (returns a java.sql.Date), and
* java.sql.Timestamp (truncates nanosecond precision). So we skip this test
* in Hibernate mode.
*/
@Override
public void testStoreAndFetchOneWithEverythingUsingMethodAccess() throws Exception {
// skip
}
/**
* This is a test to see how Errai copes with structural changes to the entity
* model. Not applicable to Hibernate.
*/
@Override
public void testAddPrimitiveFieldToPreviouslyPersistedEntity() {
// skip
}
/**
* Hibernate doesn't know how to unwrap Errai's WrappedPortables, so we have
* to skip this test.
*/
@Override
public void testPersistProxiedEntity() {
// skip
}
/**
* Hibernate doesn't know how to unwrap Errai's WrappedPortables, so we have
* to skip this test.
*/
@Override
public void testUpdateDataBinderProxiedEntity() {
// skip
}
/**
* Hibernate doesn't know how to unwrap Errai's WrappedPortables, so we have
* to skip this test.
*/
@Override
public void testEnsurePropertyChangeEventIsFiredAfterIdGeneration() {
// skip
}
}