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.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.*; /** * @author Marvin B. Lillehaug <lillehau@underdusken.no> */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({"/META-INF/integrationTest.xml"}) @TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true) public class TestSectionPageServceImpl2 { @Autowired private PageService pageService; @Autowired private SectionService sectionService; private Section s; @Autowired private SectionPageService sectionPageService; @Test @Transactional public void testGetSectionPagePublished(){ createContent(); 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()); } private void createContent() { Section sub = getSection(); Page p1 = getPage1(); Page p2 = getPage2(); Page p3 = getPage3(sub); Page p4 = getPage4(); Page p5 = getPage5(sub); List<SectionPage> pages = getSectionPages(p1, p2, p3, p4, p5); s.setPages(pages); sectionService.saveOrUpdate(s); } private List<SectionPage> getSectionPages(Page p1, Page p2, Page p3, Page p4, Page p5) { 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); return pages; } private Page getPage5(Section sub) { 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); return p5; } private Page getPage4() { 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); return p4; } private Page getPage3(Section sub) { 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); return p3; } private Page getPage2() { 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); return p2; } private Page getPage1() { 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); return p1; } private Section getSection() { s = new Section(); s.setName("Section-TestSectionPageServceImpl2"); s = sectionService.saveOrUpdate(s); Section sub = new Section(); sub.setParent(s); sub.setName("Subsection-TestSectionPageServceImpl2"); sub.setUrl("sub"); sub = sectionService.saveOrUpdate(sub); return sub; } @Test public void testSaveSectionPageManualAndFetchSection(){ createContent(); Page p = new ExtendedPage(); p.setTitle("tt"); p.setSummary("fff"); p.setParent(s); p = pageService.saveOrUpdate(p); SectionPage sp = new SectionPage(s, p, 3, ""); sp = sectionPageService.saveOrUpdate(sp); Section ss = sectionService.getEntity(s.getID()); assertTrue("Section did not contain sp", ss.getPages().contains(sp)); cleanUp(); } public void cleanUp(){ for (Section s : sectionService.getSections(true)){ for(SectionPage p : s.getPages()){ sectionPageService.remove(p); pageService.remove(p.getPage()); } } Section ass = sectionService.getEntity(s.getID()); Section child = ass.getChildren().get(0); sectionService.remove(child); ass = sectionService.getEntity(s.getID()); sectionService.remove(ass); } }