package no.dusken.aranea.service; import no.dusken.aranea.model.ExtendedPage; import no.dusken.aranea.model.Page; import no.dusken.aranea.model.Section; import no.dusken.aranea.model.SectionPage; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.transaction.annotation.Transactional; import java.util.GregorianCalendar; import java.util.LinkedList; import java.util.List; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertNotNull; /** * @author Marvin B. Lillehaug <lillehau@underdusken.no> */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"/META-INF/integrationTest.xml"}) @TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true) @Transactional public class TestSectionPageServiceImpl { @Autowired private PageService pageService; @Autowired private SectionService sectionService; private Section s; private Page page; @Autowired private SectionPageService sectionPageService; @Before public void onSetup(){ s = new Section(); s.setName("Section"); s = sectionService.saveOrUpdate(s); Section sub = new Section(); sub.setParent(s); sub.setName("Subsection"); sub.setUrl("sub"); sub = sectionService.saveOrUpdate(sub); Page p1 = new ExtendedPage(); p1.setTitle("tittel1"); p1.setPublished(true); p1.setSummary("ingress"); p1.setParent(s); p1.setVisibleFrom(new GregorianCalendar(1900, 1, 1)); p1.setVisibleTo(new GregorianCalendar(3900, 1, 1)); p1 = pageService.saveOrUpdate(p1); assertNotNull(p1); Page p2 = new ExtendedPage(); p2.setTitle("tittel2"); p2.setPublished(true); p2.setSummary("ingress"); p2.setParent(s); p2.setVisibleFrom(new GregorianCalendar(1900, 1, 1)); p2.setVisibleTo(new GregorianCalendar(3900, 1, 1)); p2 = pageService.saveOrUpdate(p2); assertNotNull(p2); Page p3 = new ExtendedPage(); p3.setTitle("tittel3"); p3.setPublished(true); p3.setSummary("ingress"); p3.setParent(sub); p3.setVisibleFrom(new GregorianCalendar(1900, 1, 1)); p3.setVisibleTo(new GregorianCalendar(3900, 1, 1)); p3 = pageService.saveOrUpdate(p3); assertNotNull(p3); Page p4 = new ExtendedPage(); p4.setTitle("tittel4"); p4.setPublished(false); p4.setSummary("ingress"); p4.setParent(s); p4.setVisibleFrom(new GregorianCalendar(1900, 1, 1)); p4.setVisibleTo(new GregorianCalendar(3900, 1, 1)); p4 = pageService.saveOrUpdate(p4); assertNotNull(p4); Page p5 = new ExtendedPage(); p5.setTitle("tittel5"); p5.setPublished(false); p5.setSummary("ingress"); p5.setParent(sub); p5.setVisibleFrom(new GregorianCalendar(1900, 1, 1)); p5.setVisibleTo(new GregorianCalendar(3900, 1, 1)); p5 = pageService.saveOrUpdate(p5); assertNotNull(p5); page = p1; SectionPage sp1 = new SectionPage(s, p1, 1, ""); SectionPage sp2 = new SectionPage(s, p2, 2, ""); SectionPage sp3 = new SectionPage(s, p4, 3, ""); SectionPage sp4 = new SectionPage(s, p3, 4, ""); SectionPage sp5 = new SectionPage(s, p5, 5, ""); List<SectionPage> pages = new LinkedList<SectionPage>(); pages.add(sp1); pages.add(sp2); pages.add(sp3); pages.add(sp4); pages.add(sp5); s.setPages(pages); sectionService.saveOrUpdate(s); Section k = sectionService.getEntity(s.getID()); assertEquals("Wrong number of pages", 5, k.getPages().size()); List<Page> sectionpages = pageService.getSectionPagePublished(5, s); assertEquals("Wrong number of sectionpages returned", 3, sectionpages.size()); assertEquals("Wrong page as number one", "tittel1", sectionpages.get(0).getTitle()); assertEquals("Wrong page as number two", "tittel2", sectionpages.get(1).getTitle()); assertEquals("Wrong page as number three", "tittel3", sectionpages.get(2).getTitle()); SectionPage spsub1 = new SectionPage(sub, page, 1, ""); sectionPageService.saveOrUpdate(spsub1); } @Test public void testChangeOrdering(){ List<SectionPage> sectionPages = sectionPageService.getSectionPageByOwner(s); assertEquals("Wrong page as number one", "tittel1", sectionPages.get(0).getPage().getTitle()); assertEquals("Wrong page as number two", "tittel2", sectionPages.get(1).getPage().getTitle()); assertEquals("Wrong page as number three", "tittel4", sectionPages.get(2).getPage().getTitle()); assertEquals("Wrong page as number four", "tittel3", sectionPages.get(3).getPage().getTitle()); assertEquals("Wrong page as number five", "tittel5", sectionPages.get(4).getPage().getTitle()); List<Page> pages = pageService.getSectionPagePublished(5, s); assertEquals("Wrong page as number one", "tittel1", pages.get(0).getTitle()); assertEquals("Wrong page as number two", "tittel2", pages.get(1).getTitle()); assertEquals("Wrong page as number two", "tittel3", pages.get(2).getTitle()); sectionPages.get(0).setOrdering(2); sectionPages.get(1).setOrdering(1); sectionPageService.saveOrUpdateSectionPages(sectionPages); pages = pageService.getSectionPagePublished(5, s); assertEquals("Wrong page as number one", "tittel2", pages.get(0).getTitle()); assertEquals("Wrong page as number two", "tittel1", pages.get(1).getTitle()); assertEquals("Wrong page as number two", "tittel3", pages.get(2).getTitle()); } @Test public void testGetBySection(){ List<SectionPage> sectionPages = sectionPageService.getSectionPageByOwner(s); assertEquals("Wrong number returned", 5, sectionPages.size()); } @Test public void testGetBySectionAndOrdering(){ SectionPage sp = sectionPageService.getSectionPageBySectionAndOrdering(s, 2); assertEquals("Wrong sectionPage", "tittel2", sp.getPage().getTitle()); } @Test public void testGetBySectionAndPage(){ SectionPage sp = sectionPageService.getSectionPageBySectionAndPage(s, page); assertNotNull("SectionPage was null", sp); assertEquals("Wrong sectionPage", "tittel1", sp.getPage().getTitle()); } @Test public void testGetSectionPagesForPage(){ List<SectionPage> sectionPages = sectionPageService.getSectionPagesByPage(page); assertEquals("Wrong size", 2, sectionPages.size()); } }