/*
* Copyright 2016 Studentmediene i Trondheim AS
*
* Licensed 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.
*/
package no.dusken.momus.service;
import no.dusken.momus.model.Article;
import no.dusken.momus.model.Page;
import no.dusken.momus.model.Publication;
import no.dusken.momus.service.PublicationService;
import no.dusken.momus.service.repository.ArticleRepository;
import no.dusken.momus.service.repository.PageRepository;
import no.dusken.momus.service.repository.PublicationRepository;
import no.dusken.momus.test.AbstractTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import static org.junit.Assert.assertEquals;
@Transactional
public class PublicationServiceTest extends AbstractTestRunner{
@Autowired
PublicationRepository publicationRepository;
@Autowired
PublicationService publicationService;
@Autowired
PageRepository pageRepository;
@Autowired
ArticleRepository articleRepository;
private Publication publication;
private Page page1;
private Page page2;
@Before
public void setUp() throws Exception {
publication = new Publication(1L);
publication.setName("old");
publication.setReleaseDate(new Date(1000));
publication = publicationRepository.save(publication);
List<Page> pages = new ArrayList<>();
page1 = new Page(1L);
page1.setPageNr(1);
page1.setAdvertisement(false);
page1.setNote("");
page1.setPublication(publication);
page1 = pageRepository.save(page1);
pages.add(page1);
page2 = new Page(2L);
page2.setPageNr(2);
page2.setPublication(publication);
page2 = pageRepository.save(page2);
pages.add(page2);
publication.setPages(pages);
publication = publicationRepository.save(publication);
}
@Test
public void testUpdatePublicationMetadata() throws Exception{
Publication pub = new Publication(publication.getId());
pub.setName("justanupdatedpubname");
pub = publicationRepository.save(pub);
assertEquals("justanupdatedpubname",pub.getName());
}
@Test
public void testGetActivePublication() throws Exception{
Date today = new Date();
Publication pub1 = new Publication();
pub1.setReleaseDate(new Date(today.getTime()-10000)); //Old
publicationRepository.save(pub1);
Publication pub2 = new Publication();
pub2.setReleaseDate(new Date(today.getTime()+100000)); //New
publicationRepository.save(pub2);
Publication pub3 = new Publication();
pub3.setReleaseDate(new Date(today.getTime()+200000)); //Newer
publicationRepository.save(pub2);
assertEquals(publicationService.getActivePublication(today),pub2);
}
@Test
public void testUpdatePublicationPages() throws Exception{
Publication pub = new Publication(publication.getId());
List<Page> pages = new ArrayList<>();
pages.add(page1);
pages.add(page2);
pub.setPages(pages);
pub = publicationRepository.save(pub);
assertEquals(pub.getPages(),pages);
}
@Test
public void testUpdatePageMetadata() throws Exception{
Page page = new Page(page1.getId());
page.setNote("vader is lukes father");
page.setPageNr(6);
page.setWeb(true);
page.setAdvertisement(false);
page = pageRepository.save(page);
assertEquals(page.getNote(), "vader is lukes father");
assertEquals(page.getPageNr(), 6);
assertEquals(page.isWeb(), true);
assertEquals(page.isAdvertisement(), false);
}
@Test
public void testUpdateArticlesPage() throws Exception{
Page page = new Page(page1.getId());
Article a = new Article(1L);
a = articleRepository.save(a);
Set<Article> as = new HashSet<>();
as.add(a);
page.setArticles(as);
page = pageRepository.save(page);
assertEquals(page.getArticles(),as);
as.remove(a);
page.setArticles(as);
page = pageRepository.save(page);
assertEquals(page.getArticles(), as);
}
}