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);
}
}