blob: c4fb22e6713f8b58001e62462ccfc5a70f601157 [file] [log] [blame]
/********************************************************************************
* Copyright (c) 2015-2019 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
********************************************************************************/
package org.eclipse.mdm.preferences.entity;
import static org.assertj.core.api.Assertions.assertThat;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;
import org.eclipse.persistence.config.PersistenceUnitProperties;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.ImmutableMap;
public class PreferenceTest {
private static final long CLOB_SIZE = 1_000_000;
private EntityManagerFactory factory;
@Before
public void init() {
factory = Persistence.createEntityManagerFactory("preferenceTest", ImmutableMap
.of(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, "META-INF/persistence-test.xml"));
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
em.createQuery("delete from Preference").executeUpdate();
em.getTransaction().commit();
em.close();
}
@After
public void destroy() {
factory.close();
}
@Test
public void testPersist() {
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Preference p = new Preference("MDMXYZ", "*", "key1", "value1");
em.persist(p);
em.getTransaction().commit();
}
@Test
public void testLoad() {
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Preference p = new Preference("MDMXYZ", "*", "key2", "value1");
em.persist(p);
em.getTransaction().commit();
assertThat(em.find(Preference.class, p.getId()))
.isEqualToIgnoringGivenFields(new Preference("MDMXYZ", "*", "key2", "value1"), "id");
em.close();
}
@Test
public void testQuery() {
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Preference p = new Preference("MDMXYZ", "*", "key3", "value1");
em.persist(p);
em.getTransaction().commit();
TypedQuery<Preference> q = em.createQuery("select p from Preference p", Preference.class);
assertThat(q.getResultList()).hasSize(1).usingElementComparatorIgnoringFields("id")
.contains(new Preference("MDMXYZ", "*", "key3", "value1"));
em.close();
}
@Test
public void testPersistLob() {
String longString = generateString(CLOB_SIZE);
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
Preference p = new Preference("MDMXYZ", "*", "clob", longString);
em.persist(p);
em.getTransaction().commit();
em.close();
em = factory.createEntityManager();
Preference loaded = em.find(Preference.class, p.getId());
assertThat(loaded).isEqualToIgnoringGivenFields(new Preference("MDMXYZ", "*", "clob", longString), "id");
em.close();
}
private String generateString(long length) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < length; i++) {
builder.append("a");
}
return builder.toString();
}
}