/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package project.latex.balloon.writer; import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.FileAppender; import org.apache.log4j.Logger; import org.junit.After; import static org.junit.Assert.fail; import org.junit.Before; import org.junit.Test; import static org.mockito.Mockito.*; /** * * @author Dan */ public class FileDataWriterTest { private FileDataWriter writer; private List<String> dataKeys; private DataModelConverter converter; private Logger mockLogger; private FileAppender mockAppender; private ChecksumGenerator checksumGenerator; @Before public void setUp() { dataKeys = new ArrayList<>(); dataKeys.add("Date"); dataKeys.add("Value"); checksumGenerator = mock(ChecksumGenerator.class); converter = new DataModelConverter(checksumGenerator); mockLogger = mock(Logger.class); mockAppender = mock(FileAppender.class); writer = new FileDataWriter(dataKeys, converter, mockLogger, mockAppender); } @After public void tearDown() throws IOException { writer = null; dataKeys = null; } /** * Test of writeData method, of class FileDataWriter. */ @Test(expected = IllegalArgumentException.class) public void testWriteDataThrowsMeaningfulExceptionIfDataIsNull() { writer.writeData(null); } @Test public void testHeadersAreWrittenOnceBeforeData() { try { Map<String, Object> dataMap = new HashMap<>(); dataMap.put("Value", 5); Date modelDate = new Date(); dataMap.put("Date", modelDate); when(checksumGenerator.generateChecksum(anyString())).thenReturn("XX"); writer.writeData(dataMap); writer.writeData(dataMap); verify(mockLogger).info("Date,Value"); String expectedDataString = modelDate.toString() + ",5"; verify(mockLogger, times(2)).info(expectedDataString + "*XX"); } catch (Exception ex) { fail(ex.getMessage()); } } }