/* * 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.indesign; import no.dusken.momus.model.Article; import no.dusken.momus.model.Person; import no.dusken.momus.model.Publication; import no.dusken.momus.test.AbstractTestRunner; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import java.util.HashSet; import java.util.Set; import static org.junit.Assert.assertEquals; public class IndesignGeneratorTest extends AbstractTestRunner { @Autowired IndesignGenerator indesignGenerator; @Test public void testGenerateFromArticle() throws Exception { Article article = new Article(1L); /* The content should test all kind of elements and some edge cases Now we test for: line endings inside a paragraph extra lines at the end of a tag a new line inside the html */ article.setContent("<h1>Tittel</h1><h2>Ingress<br></h2><h3>En mellomtittel</h3><p>Et avsnitt</p>\n" + "<p>Enda et avsnitt og dette avsnittet har<br>linjeskift midt inni!<br></p>" + "<h3>En mellomtittel</h3><p>Med et nytt avsnitt</p><ul><li>Med en punktliste</li><li>element 2</li><li>element 3</li></ul>" + "<p>et nytt avsnitt</p><ol><li>Med nummerert liste</li><li>element 2</li></ol>" + "<blockquote>og så et kult sitat</blockquote>" + "<p>og til slutt et avsnitt med <i>utheving</i> og <b>fet skrift</b>, kult?<br></p>"); article.setName("Min tittel"); Publication pub = new Publication(); pub.setName("TestPub"); article.setPublication(pub); Set<Person> journalists = new HashSet<>(); journalists.add(new Person(1L, "user1", "Mats", "Mats Matsesen", "mats@mats.mats", "12345678", true)); journalists.add(new Person(2L, "user1", "Kåre", "Kåre Kål", "lala@lolo.com", "12345678", true)); article.setJournalists(journalists); Set<Person> photographers = new HashSet<>(); photographers.add(new Person(3L, "user1", "Einar", "Einar Einarsen", "einar@lala.org", "12345678", true)); article.setPhotographers(photographers); String expected = "<UNICODE-WIN>\r\n" + "<Version:7.5>\r\n" + "<ParaStyle:Byline>Tekst: Mats Matsesen, Kåre Kål\r\n" + "<ParaStyle:Byline>Foto: Einar Einarsen\r\n" + "<ParaStyle:Tittel>Tittel\r\n" + "<ParaStyle:Ingress>Ingress\r\n" + "<ParaStyle:Mellomtittel>En mellomtittel\r\n" + "<ParaStyle:Brødtekst>Et avsnitt\r\n" + "<ParaStyle:Brødtekst>Enda et avsnitt og dette avsnittet har\r\nlinjeskift midt inni!\r\n" + "<ParaStyle:Mellomtittel>En mellomtittel\r\n" + "<ParaStyle:Brødtekst>Med et nytt avsnitt\r\n" + "<bnListType:Bullet>Med en punktliste\r\n" + "element 2\r\n" + "element 3\r\n" + "<ParaStyle:Brødtekst>et nytt avsnitt\r\n" + "<bnListType:Numbered>Med nummerert liste\r\n" + "element 2\r\n" + "<ParaStyle:Sitat>og så et kult sitat\r\n" + "<ParaStyle:Brødtekst>og til slutt et avsnitt med <cTypeface:Italic>utheving<cTypeface:> og <cTypeface:Bold>fet skrift<cTypeface:>, kult?\r\n" ; IndesignExport result = indesignGenerator.generateFromArticle(article); assertEquals(expected, result.getContent()); assertEquals("TestPub Min tittel", result.getName()); } @Test public void changesToIllustratorNoJournalists() { Article article = new Article(1L); Publication pub = new Publication(); pub.setName("TestPub"); article.setPublication(pub); article.setContent(""); article.setJournalists(new HashSet<Person>()); Set<Person> photographers = new HashSet<>(); photographers.add(new Person(3L, "user1", "Einar", "Einar Einarsen", "einar@lala.org", "12345678", true)); photographers.add(new Person(10L, "user1", "Roy", "Roy Royce", "einar@lala.org", "12345678", true)); article.setPhotographers(photographers); article.setUseIllustration(true); String expected = "<UNICODE-WIN>\r\n" + "<Version:7.5>\r\n" + "<ParaStyle:Byline>Illustrasjon: Einar Einarsen, Roy Royce\r\n"; IndesignExport result = indesignGenerator.generateFromArticle(article); assertEquals(expected, result.getContent()); } @Test public void testImageTextIsAdded() { Article article = new Article(1L); article.setContent("<h1>Min kule tittel!</h1><p>Ingen bildetekst her, plz!</p>"); article.setImageText("Bilde 1 er tatt av Kåre, viser John.\nBilde med grønn fyr viser en grønn fyr."); article.setJournalists(new HashSet<Person>()); Set<Person> photographers = new HashSet<>(); photographers.add(new Person(3L, "user1", "Einar", "Einar Einarsen", "einar@lala.org", "12345678", true)); article.setPhotographers(photographers); String expected = "<UNICODE-WIN>\r\n" + "<Version:7.5>\r\n" + "<ParaStyle:Byline>Foto: Einar Einarsen\r\n" + "<ParaStyle:Tittel>Min kule tittel!\r\n" + "<ParaStyle:Brødtekst>Ingen bildetekst her, plz!\r\n" + "<ParaStyle:Bildetekster>Bilde 1 er tatt av Kåre, viser John.\r\nBilde med grønn fyr viser en grønn fyr.\r\n"; IndesignExport result = indesignGenerator.generateFromArticle(article); assertEquals(expected, result.getContent()); } @Test public void testExternalAuthors() { Article article = new Article(1L); article.setContent("<h1>Min kule tittel!</h1>"); article.setJournalists(new HashSet<Person>()); Set<Person> photographers = new HashSet<>(); photographers.add(new Person(3L, "user1", "Einar", "Einar Einarsen", "einar@lala.org", "12345678", true)); article.setPhotographers(photographers); article.setExternalAuthor("Ekstern Eksternsen"); article.setExternalPhotographer("Fotogjengen"); String expected = "<UNICODE-WIN>\r\n" + "<Version:7.5>\r\n" + "<ParaStyle:Byline>Tekst: Ekstern Eksternsen\r\n" + "<ParaStyle:Byline>Foto: Einar Einarsen, Fotogjengen\r\n" + "<ParaStyle:Tittel>Min kule tittel!\r\n"; IndesignExport result = indesignGenerator.generateFromArticle(article); assertEquals(expected, result.getContent()); } }