package org.oregami.service;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.persist.PersistService;
import com.google.inject.persist.jpa.JpaPersistModule;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.oregami.data.PublicationFranchiseDao;
import org.oregami.entities.Publication;
import org.oregami.entities.PublicationFranchise;
import org.oregami.entities.PublicationIssue;
import org.oregami.test.PersistenceTest;
import org.oregami.util.StartHelper;
import javax.persistence.EntityManager;
import java.util.List;
public class TestPublicationFranchiseService {
private static Injector injector;
private static EntityManager entityManager;
public TestPublicationFranchiseService() {
}
@BeforeClass
public static void init() {
StartHelper.init(StartHelper.CONFIG_FILENAME_TEST);
injector = StartHelper.getInjector();
entityManager = injector.getInstance(EntityManager.class);
}
@Test
public void testBasicPersistence() {
entityManager.getTransaction().begin();
PublicationFranchise pf = new PublicationFranchise();
pf.setName("Power Play");
entityManager.persist(pf);
entityManager.flush();
PublicationFranchiseDao dao = injector.getInstance(PublicationFranchiseDao.class);
List<PublicationFranchise> list = dao.findAll();
Assert.assertEquals(1, list.size());
entityManager.getTransaction().rollback();
}
@Test
public void testServiceUpdate() {
entityManager.getTransaction().begin();
PublicationFranchise pf = new PublicationFranchise();
pf.setName("Power Play");
entityManager.persist(pf);
entityManager.flush();
PublicationFranchiseDao dao = injector.getInstance(PublicationFranchiseDao.class);
List<PublicationFranchise> list = dao.findAll();
Assert.assertEquals(1, list.size());
PublicationFranchiseService service = injector.getInstance(PublicationFranchiseService.class);
PublicationFranchise publicationFranchise = dao.findOne(pf.getId());
publicationFranchise.setName("updated");
ServiceResult<PublicationFranchise> serviceResult = service.updateEntity(publicationFranchise, null);
Assert.assertTrue(serviceResult.getErrors().isEmpty());
PublicationFranchise franchiseLoaded = dao.findOne(pf.getId());
Assert.assertEquals(publicationFranchise.getName(), franchiseLoaded.getName());
franchiseLoaded.setName("a");
Publication publication = new Publication();
publication.setName("pub name");
PublicationIssue issue1 = new PublicationIssue();
publication.getPublicationIssueList().add(issue1);
franchiseLoaded.getPublicationList().add(publication);
ServiceResult<PublicationFranchise> serviceResult2 = service.updateEntity(franchiseLoaded, null);
Assert.assertTrue(serviceResult2.hasErrors());
Assert.assertEquals(3, serviceResult2.getErrors().size());
entityManager.getTransaction().rollback();
}
}