/* * YouTestit source code: * ====================== * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. * * Links: * ====== * Homepage : http://www.youtestit.org * Git : https://github.com/youtestit */ package org.youtestit.datamodel.entity; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.youtestit.commons.utils.exceptions.ClientException; import org.youtestit.datamodel.enums.BrowserType; import org.youtestit.datamodel.enums.OsArchi; import org.youtestit.datamodel.enums.OsType; /** * Test unit for Group entity. * * @author "<a href='mailto:patrickguillerm@gmail.com'>Patrick Guillerm</a>" * @since Dec 11, 2011 * @see org.youtestit.datamodel.entity.User */ public class DocumentTest extends DublinCoreTest { // ========================================================================= // ATTRIBUTES // ========================================================================= /** The Constant LOGGER. */ private static final Logger LOGGER = LoggerFactory.getLogger(DocumentTest.class); /** The Constant QUERY. */ private static final String QUERY = "from Document"; /** The Constant IE_9_0. */ private static final String IE_9_0 = "9.0"; /** The Constant FF_8_0. */ private static final String FF_8_0 = "8.0"; /** The Constant OS_WINDOWS. */ private static final String OS_WINDOWS = "windows"; /** The Constant OS_UBUNTU. */ private static final String OS_UBUNTU = "ubuntu"; /** The Constant DOC_PATH. */ private static final String DOC_PATH = "/myDocument"; /** The Constant DOC_TITLE. */ private static final String DOC_TITLE = "myDocument"; // ========================================================================= // METHODS // ========================================================================= /** * All document entities are identify by their uid and their path. Two * Document object are equals if they have the same uid or if have the same * path. The Uid's database table ID. This test allow to check it and verify * if basic java usage work well. * * @throws ClientException if test fail */ @Test public void equalsHashCodeTest() throws ClientException { LOGGER.info("equalsHashCodeTest"); final String title = "documentA"; final String path = "/documentA"; final DublinCore dublinCoreA = new DublinCore(1, title, path); final DublinCore dublinCoreB = new DublinCore(2, "documentB", "/documentB"); assertFalse(dublinCoreA.equals(dublinCoreB)); final DublinCore dublinCoreC = new DublinCore(1, title, path); assertTrue(dublinCoreA.equals(dublinCoreC)); final List<DublinCore> dublinCores = new ArrayList<DublinCore>(); dublinCores.add(dublinCoreA); dublinCores.add(dublinCoreB); assertTrue(dublinCores.contains(dublinCoreA)); assertTrue(dublinCores.contains(dublinCoreB)); } /** * {@inheritDoc} */ @Override public void persistenceTest() throws ClientException { assertNotNull(entityManager); List<Document> documents = entityManager.createQuery(QUERY, Document.class).getResultList(); assertNotNull(documents); assertTrue(documents.isEmpty()); final Document doc = new Document("document", "/document"); doc.setSubject(super.getSubject()); doc.setDescription(super.getDescription()); final Calendar calendar = new GregorianCalendar(); calendar.setTime(new Date()); doc.setDateCreation(calendar); beginTransaction(); entityManager.persist(doc); commitTransaction(); documents = entityManager.createQuery(QUERY, Document.class).getResultList(); assertNotNull(documents); assertEquals(documents.size(), 1); super.addCreator(doc); } /** * Test to append protabilities. * * @throws ClientException the client exception */ @Test public void testAddProtabilities() throws ClientException { loadEntityManager(); // create Os and browser ............................................... final Os ubuntu = new Os(OS_UBUNTU, OsType.LINUX, OsArchi.PC_64_BITS); final Browser firefox = new Browser(BrowserType.FIREFOX, FF_8_0); final Os windows = new Os(OS_WINDOWS, OsType.WINDOWS, OsArchi.PC_32_BITS); final Browser ie9 = new Browser(BrowserType.IE, IE_9_0); beginTransaction(); entityManager.persist(ubuntu); entityManager.persist(firefox); entityManager.persist(windows); entityManager.persist(ie9); commitTransaction(); // create portabilities ................................................ final Portability ubuntuFF = new Portability(ubuntu, firefox); final Portability windowsIE = new Portability(windows, ie9); beginTransaction(); entityManager.persist(ubuntuFF); entityManager.persist(windowsIE); commitTransaction(); // associate with document ............................................. final Document doc = new Document(DOC_TITLE, DOC_PATH); doc.addPortability(ubuntuFF); doc.addPortability(windowsIE); beginTransaction(); entityManager.persist(doc); commitTransaction(); final List<Document> documents = entityManager.createQuery(QUERY, Document.class).getResultList(); assertNotNull(documents); assertEquals(documents.size(), 1); assertEquals(doc, documents.get(0)); assertEquals(2, documents.get(0).getPortabilities().size()); closeEntityManager(); } /** * Test to remove portability. * * @throws ClientException the client exception */ @Test public void testRemovePortability() throws ClientException { loadEntityManager(); // create Os and browser ............................................... final Os ubuntu = new Os(OS_UBUNTU, OsType.LINUX, OsArchi.PC_64_BITS); final Browser firefox = new Browser(BrowserType.FIREFOX, FF_8_0); beginTransaction(); entityManager.persist(ubuntu); entityManager.persist(firefox); commitTransaction(); // create portabilities ................................................ final Portability ubuntuFF = new Portability(ubuntu, firefox); beginTransaction(); entityManager.persist(ubuntuFF); commitTransaction(); // associate with document ............................................. final Document doc = new Document(DOC_TITLE, DOC_PATH); doc.addPortability(ubuntuFF); beginTransaction(); entityManager.persist(doc); commitTransaction(); List<Document> documents = entityManager.createQuery(QUERY, Document.class).getResultList(); assertEquals(documents.size(), 1); assertEquals(doc, documents.get(0)); // remove portability .................................................. doc.removePortability(ubuntuFF); beginTransaction(); entityManager.merge(doc); commitTransaction(); documents = entityManager.createQuery(QUERY, Document.class).getResultList(); assertNotNull(documents); assertEquals(documents.size(), 1); assertEquals(doc, documents.get(0)); assertTrue(documents.get(0).getPortabilities().isEmpty()); closeEntityManager(); } }