office-alexander-logistics/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/xml/EAkteImportTester.java

116 lines
3.3 KiB
Java

package com.alexanderlogistics.xml;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import javax.xml.transform.TransformerException;
import javax.xml.xpath.XPathExpressionException;
import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.exceptions.AccessDeniedException;
import org.imixs.workflow.exceptions.ModelException;
import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.ProcessingErrorException;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.Spy;
import org.mockito.junit.MockitoJUnitRunner;
import com.alexanderlogistics.InvoiceUtil;
import com.alexanderlogistics.KreditorDebitorService;
import com.alexanderlogistics.mahnlauf.MahnlaufService;
/**
* Testet den Import Vorgang anhand einer Cargosoft XML Datei
*
*
*
* @author rsoika
*/
@RunWith(MockitoJUnitRunner.class)
public class EAkteImportTester {
@Spy
@InjectMocks
private CargosoftXMLEAkteImportService service;
@Mock
private DocumentService documentService;
@Mock
private KreditorDebitorService kreditorDebitorService;
@Mock
private MahnlaufService mahnlaufService;
@Before
public void setUp() {
// Mock protected Methode 'alreadyImported' -> always false
Mockito.when(service.alreadyImported(Mockito.anyString())).thenReturn(false);
}
/**
* Ein Einfacher test
*
* @throws TransformerException
* @throws XPathExpressionException
* @throws ModelException
* @throws PluginException
* @throws ProcessingErrorException
* @throws AccessDeniedException
*
* @throws Exception
*/
@Test
public void testEAkteBasic() throws Exception {
ItemCollection source = new ItemCollection();
String fileName = "Abgabenbescheid-IM-GCA-2408-116N-001-ATC400012650820242452-_20240806164256864_DEBUG.xml";
byte[] xmlContent = readTestFile("cargosoft/" + fileName);
assertNotNull(xmlContent);
// Act
ItemCollection result = service.createWorkitem(source, fileName, xmlContent, new HashMap<>());
// Assert
assertNotNull(result);
assertEquals("001", result.getItemValueString("mandant.id"));
// test Rows
List<ItemCollection> rows = InvoiceUtil.explodeChildList(result);
assertNotNull(rows);
assertEquals(2, rows.size());
ItemCollection row1 = rows.get(0);
ItemCollection row2 = rows.get(1);
assertEquals("LA-ZEL-2403-004", row1.getItemValueString("filenumber"));
assertEquals("LA-ZEL-2403-00", row2.getItemValueString("filenumber"));
assertEquals("ZOLL", row1.getItemValueString("activity.type"));
assertEquals("EUST", row2.getItemValueString("activity.type"));
}
/**
* Hilfsmethode zum einlesen einer xml test datei
*
* @return
* @throws IOException
*/
private byte[] readTestFile(String filename) throws IOException {
// Load the file from the resources folder
ClassLoader classLoader = getClass().getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream(filename);
byte[] data = inputStream.readAllBytes();
inputStream.close();
return data;
}
}