Search in sources :

Example 6 with Attachment

use of org.summerb.minicms.api.dto.Attachment in project summerb by skarpushin.

the class AttachmentServiceImplTest method testAttachment_expectMultipleResults.

@Test
public void testAttachment_expectMultipleResults() throws Exception {
    Attachment a = new Attachment();
    a.setArticleId(createTestArticle());
    a.setName("test attachment");
    a.setSize(123);
    a.setContents(createValidContentsReader());
    attachmentService.create(a);
    a.setContents(createValidContentsReader());
    a.setName("test attachment 2");
    attachmentService.create(a);
    PaginatedList<Attachment> result = attachmentService.query(new PagerParams(0, 100), Query.n().eq(Attachment.FN_ARTICLE_ID, a.getArticleId()));
    assertEquals(2, result.getItems().size());
}
Also used : PagerParams(org.summerb.easycrud.api.dto.PagerParams) Attachment(org.summerb.minicms.api.dto.Attachment) Test(org.junit.Test)

Example 7 with Attachment

use of org.summerb.minicms.api.dto.Attachment in project summerb by skarpushin.

the class AttachmentServiceImplTest method testAttachment_expectCanRetrieveInputStream.

@Test
public void testAttachment_expectCanRetrieveInputStream() throws Exception {
    Attachment a = new Attachment();
    a.setArticleId(createTestArticle());
    a.setName("test attachment");
    a.setSize(123);
    a.setContents(createValidContentsReader());
    Attachment result = attachmentService.create(a);
    InputStream b = attachmentService.getContentInputStream(result.getId());
    assertStreamsEquals(createValidContentsReader(), b);
}
Also used : InputStream(java.io.InputStream) Attachment(org.summerb.minicms.api.dto.Attachment) Test(org.junit.Test)

Example 8 with Attachment

use of org.summerb.minicms.api.dto.Attachment in project summerb by skarpushin.

the class AttachmentServiceImplTest method testAttachment_expectCreatedAndRetrieved.

@Test
public void testAttachment_expectCreatedAndRetrieved() throws Exception {
    Attachment a = new Attachment();
    a.setArticleId(createTestArticle());
    a.setName("test attachment");
    a.setSize(123);
    a.setContents(createValidContentsReader());
    Attachment result = attachmentService.create(a);
    assertNotNull(result);
    assertNotNull(result.getId());
    assertTrue(result.getId() > 0);
    Attachment b = attachmentService.findById(result.getId());
    assertNotNull(b);
    // NOTE: By default we don't want to open stream
    assertNull(b.getContents());
}
Also used : Attachment(org.summerb.minicms.api.dto.Attachment) Test(org.junit.Test)

Example 9 with Attachment

use of org.summerb.minicms.api.dto.Attachment in project summerb by skarpushin.

the class ArticleRenderingServiceImplTest method testRenderArticle_smokeTest.

@Test
public void testRenderArticle_smokeTest() throws Exception {
    ArticleAbsoluteUrlBuilder articleAbsoluteUrlBuilder = new UrlBuilderTestImpl();
    ArticleService articleService = Mockito.mock(ArticleService.class);
    AttachmentService attachmentService = Mockito.mock(AttachmentService.class);
    Article a1 = new Article();
    a1.setId(1L);
    a1.setArticleKey("a1");
    a1.setAnnotation("Article annotation. Read other article first: ${article['a2']}");
    a1.setContent("Article text. See: ${article['a2']}. And now - here is the screenshot: ${img['screenshot1.jpg']}");
    when(articleService.findArticleByKeyAndLocale(eq("a1"), any(Locale.class))).thenReturn(a1);
    Attachment att1 = new Attachment();
    att1.setId(1L);
    att1.setArticleId(1L);
    att1.setName("screenshot1.jpg");
    when(attachmentService.findArticleAttachments(1L)).thenReturn(new Attachment[] { att1 });
    Article a2 = new Article();
    a2.setId(1L);
    a2.setArticleKey("a2");
    a2.setTitle("Title of article 2");
    a2.setAnnotation("Article annotation. Read other article first: ${article['a2']}");
    a2.setContent("Article text. See: ${article['a2']}. And now - here is the screenshot: ${img['screenshot1.jpg']}");
    when(articleService.findArticleByKeyAndLocale(eq("a2"), any(Locale.class))).thenReturn(a2);
    ArticleRendererImpl fixture = new ArticleRendererImpl();
    fixture.setArticleAbsoluteUrlBuilder(articleAbsoluteUrlBuilder);
    fixture.setArticleService(articleService);
    fixture.setAttachmentService(attachmentService);
    fixture.setStringTemplateCompiler(new StringTemplateCompilerlImpl());
    RenderedArticle result = fixture.renderArticle("a1", Locale.ENGLISH);
    assertNotNull(result);
    String a2href = "<a href=\"url-article:a2\" title=\"Title of article 2\">Title of article 2</a>";
    assertEquals("Article annotation. Read other article first: " + a2href, result.getAnnotation());
    assertEquals("Article text. See: " + a2href + ". And now - here is the screenshot: <img class=\"article-image\" src=\"url-att:screenshot1.jpg\" alt=\"screenshot1.jpg\" />", result.getContent());
}
Also used : Locale(java.util.Locale) ArticleService(org.summerb.minicms.api.ArticleService) StringTemplateCompilerlImpl(org.summerb.stringtemplate.impl.StringTemplateCompilerlImpl) ArticleAbsoluteUrlBuilder(org.summerb.minicms.api.ArticleAbsoluteUrlBuilder) Article(org.summerb.minicms.api.dto.Article) RenderedArticle(org.summerb.minicms.api.dto.consuming.RenderedArticle) ArticleRendererImpl(org.summerb.minicms.impl.ArticleRendererImpl) Attachment(org.summerb.minicms.api.dto.Attachment) UrlBuilderTestImpl(integr.org.summerb.minicms.impl.UrlBuilderTestImpl) AttachmentService(org.summerb.minicms.api.AttachmentService) RenderedArticle(org.summerb.minicms.api.dto.consuming.RenderedArticle) Test(org.junit.Test)

Example 10 with Attachment

use of org.summerb.minicms.api.dto.Attachment in project summerb by skarpushin.

the class AttachmentEventBusWireTapImpl method getDtoSafeForEventBus.

private Attachment getDtoSafeForEventBus(Attachment dto) {
    try {
        if (dto.getContents() == null) {
            return dto;
        }
        InputStream contents = dto.getContents();
        dto.setContents(null);
        Attachment dto2 = DeepCopy.copyOrPopagateExcIfAny(dto);
        dto.setContents(contents);
        return dto2;
    } catch (NotSerializableException e) {
        throw new RuntimeException("Failed to identify the version of the Attachment DTO that is safe for eventBus", e);
    }
}
Also used : NotSerializableException(java.io.NotSerializableException) InputStream(java.io.InputStream) Attachment(org.summerb.minicms.api.dto.Attachment)

Aggregations

Attachment (org.summerb.minicms.api.dto.Attachment)12 Test (org.junit.Test)5 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)5 Locale (java.util.Locale)3 Article (org.summerb.minicms.api.dto.Article)3 InputStream (java.io.InputStream)2 RenderedArticle (org.summerb.minicms.api.dto.consuming.RenderedArticle)2 EventBus (com.google.common.eventbus.EventBus)1 UrlBuilderTestImpl (integr.org.summerb.minicms.impl.UrlBuilderTestImpl)1 NotSerializableException (java.io.NotSerializableException)1 Date (java.util.Date)1 LinkedList (java.util.LinkedList)1 FileItem (org.apache.commons.fileupload.FileItem)1 InputStreamResource (org.springframework.core.io.InputStreamResource)1 HttpHeaders (org.springframework.http.HttpHeaders)1 ResponseEntity (org.springframework.http.ResponseEntity)1 ResponseBody (org.springframework.web.bind.annotation.ResponseBody)1 PagerParams (org.summerb.easycrud.api.dto.PagerParams)1 Query (org.summerb.easycrud.api.query.Query)1 ArticleAbsoluteUrlBuilder (org.summerb.minicms.api.ArticleAbsoluteUrlBuilder)1