/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * 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 org.kie.workbench.common.forms.jbpm.server.context.generation.dynamic.impl.fieldProcessors; import java.io.File; import java.util.Date; import org.jbpm.document.Document; import org.jbpm.document.service.impl.DocumentImpl; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.kie.workbench.common.forms.dynamic.backend.server.document.UploadedDocumentManager; import org.kie.workbench.common.forms.dynamic.model.document.DocumentData; import org.kie.workbench.common.forms.dynamic.model.document.DocumentStatus; import org.kie.workbench.common.forms.dynamic.service.context.generation.dynamic.BackendFormRenderingContext; import org.kie.workbench.common.forms.jbpm.model.authoring.document.definition.DocumentFieldDefinition; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.assertNotNull; import static junit.framework.TestCase.assertNull; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class DocumentFieldValueProcessorTest { @Mock protected UploadedDocumentManager uploadedDocumentManager; @Mock protected File uploaded; @Mock protected BackendFormRenderingContext context; protected DocumentFieldValueProcessor processor; protected DocumentFieldDefinition field; @Before public void initTest() { when(uploadedDocumentManager.getFile(anyString())).thenReturn(uploaded); when(uploaded.length()).thenReturn(new Long(1024)); field = new DocumentFieldDefinition(); field.setBinding("document"); field.setName("document"); field.setLabel("document"); processor = new TestDocumentFieldValueProcessor(uploadedDocumentManager); } @Test public void testNull2FlatValue() { DocumentData documentData = processor.toFlatValue(field, null, context); assertNull("DocumentData must be null!", documentData); } @Test public void testDocument2FlatValue() { Document doc = new DocumentImpl("id", "docName", 1024, new Date()); DocumentData documentData = processor.toFlatValue(field, doc, context); assertNotNull("DocumentData cannot be null!", documentData); assertEquals("Names are not equal", doc.getName(), documentData.getFileName()); assertEquals("Sizes are not equal", doc.getSize(), documentData.getSize()); assertEquals("Link must be empty", "", documentData.getLink()); } @Test public void testNullFlatValue2Document() { Document doc = processor.toRawValue(field, null, null, context); assertNull("Document must be null!", doc); } @Test public void testNewFlatValue2Document() { DocumentData data = new DocumentData("test", 1024, null); data.setContentId("content"); Document doc = processor.toRawValue(field, data, null, context); verify(uploadedDocumentManager).getFile(anyString()); verify(uploadedDocumentManager).removeFile(anyString()); assertNotNull("Document cannot be null!", doc); assertEquals("Names are not equal", data.getFileName(), doc.getName()); assertEquals("Sizes are not equal", data.getSize(), doc.getSize()); } @Test public void testExistingFlatValue2Document() { Document doc = new DocumentImpl("id", "docName", 1024, new Date(), "aLink"); DocumentData data = new DocumentData(doc.getName(), doc.getSize(), doc.getLink()); data.setStatus(DocumentStatus.STORED); Document rawDoc = processor.toRawValue(field, data, doc, context); assertEquals("Documents must be equal!", doc, rawDoc); verify(uploadedDocumentManager, never()).getFile(anyString()); verify(uploadedDocumentManager, never()).removeFile(anyString()); } }