Skip to content
Snippets Groups Projects
Commit aeb87458 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#724 - added tests for CsvParser

parent 868f3397
Branches
Tags
No related merge requests found
package de.deadlocker8.budgetmaster.transactions.csvimport;
import java.util.List;
import java.util.Objects;
public class CsvRow
{
......@@ -21,6 +22,21 @@ public class CsvRow
return columns;
}
@Override
public boolean equals(Object o)
{
if(this == o) return true;
if(o == null || getClass() != o.getClass()) return false;
CsvRow csvRow = (CsvRow) o;
return Objects.equals(columns, csvRow.columns);
}
@Override
public int hashCode()
{
return Objects.hash(columns);
}
@Override
public String toString()
{
......
......@@ -128,13 +128,9 @@ class TransactionImportServiceTest
@Test
void test_createCsvTransactionFromCsvRow_dateParseException()
{
final LocalDate date = LocalDate.of(2023, 1, 21);
final CsvRow csvRow = new CsvRow("21.01.2023", "Groceries", "-12.00", "dolor sit amet");
final CsvColumnSettings csvColumnSettings = new CsvColumnSettings(1, "dd.MM.", 2, 3, 4);
final CsvTransaction expectedCsvTransaction = new CsvTransaction(date, "Groceries", -1200, "dolor sit amet", CsvTransactionStatus.PENDING, CATEGORY_NONE);
final Settings settings = new Settings();
settings.setLanguage(LanguageType.ENGLISH);
Mockito.when(settingsService.getSettings()).thenReturn(settings);
......@@ -148,13 +144,9 @@ class TransactionImportServiceTest
@Test
void test_createCsvTransactionFromCsvRow_amountParseException()
{
final LocalDate date = LocalDate.of(2023, 1, 21);
final CsvRow csvRow = new CsvRow("21.01.2023", "Groceries", "non_amount", "dolor sit amet");
final CsvColumnSettings csvColumnSettings = new CsvColumnSettings(1, "dd.MM.yyyy", 2, 3, 4);
final CsvTransaction expectedCsvTransaction = new CsvTransaction(date, "Groceries", -1200, "dolor sit amet", CsvTransactionStatus.PENDING, CATEGORY_NONE);
final Settings settings = new Settings();
settings.setLanguage(LanguageType.ENGLISH);
Mockito.when(settingsService.getSettings()).thenReturn(settings);
......
package de.deadlocker8.budgetmaster.unit.transaction.csvimport;
import com.opencsv.exceptions.CsvValidationException;
import de.deadlocker8.budgetmaster.transactions.csvimport.CsvParser;
import de.deadlocker8.budgetmaster.transactions.csvimport.CsvRow;
import org.junit.jupiter.api.Test;
import java.io.IOException;
import static org.assertj.core.api.Assertions.assertThat;
class CsvParserTest
{
private static final String VALID_CSV = "Date;Title;Amount\n" +
"03.01.2023;Lorem;50.00\n" +
"05.01.2023;Ipsum;-8.37\n" +
"08.01.2023;dolor sit amet;-12.00";
@Test
void test_parseCsv_emptyFile() throws CsvValidationException, IOException
{
assertThat(CsvParser.parseCsv("", ';', 0))
.isEmpty();
}
@Test
void test_parseCsv_separatorNotPresent() throws CsvValidationException, IOException
{
assertThat(CsvParser.parseCsv("abc,17", ';', 0))
.containsExactly(new CsvRow("abc,17"));
}
@Test
void test_parseCsv() throws CsvValidationException, IOException
{
assertThat(CsvParser.parseCsv(VALID_CSV, ';', 0)).
containsExactly(new CsvRow("Date", "Title", "Amount"),
new CsvRow("03.01.2023", "Lorem", "50.00"),
new CsvRow("05.01.2023", "Ipsum", "-8.37"),
new CsvRow("08.01.2023", "dolor sit amet", "-12.00"));
}
@Test
void test_parseCsv_skipLines() throws CsvValidationException, IOException
{
assertThat(CsvParser.parseCsv(VALID_CSV, ';', 2)).
containsExactly(new CsvRow("05.01.2023", "Ipsum", "-8.37"),
new CsvRow("08.01.2023", "dolor sit amet", "-12.00"));
}
@Test
void test_parseCsv_skipLines_moreThanExisting() throws CsvValidationException, IOException
{
assertThat(CsvParser.parseCsv(VALID_CSV, ';', 999))
.isEmpty();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment