Search in sources :

Example 1 with EnumMapFormat

use of name.abuchen.portfolio.datatransfer.csv.CSVImporter.EnumMapFormat in project portfolio by buchen.

the class CSVAccountTransactionExtractorTest method testDetectionOfFeeRefunds.

@Test
public void testDetectionOfFeeRefunds() {
    Client client = new Client();
    CSVExtractor extractor = new CSVAccountTransactionExtractor(client);
    // setup custom mapping from string -> type
    Map<String, Column> field2column = buildField2Column(extractor);
    Column typeColumn = field2column.get(Messages.CSVColumn_Type);
    @SuppressWarnings("unchecked") EnumField<AccountTransaction.Type> field = (EnumField<AccountTransaction.Type>) typeColumn.getField();
    EnumMapFormat<AccountTransaction.Type> format = field.createFormat();
    format.map().put(AccountTransaction.Type.FEES_REFUND, "Gebührenerstattung");
    format.map().put(AccountTransaction.Type.FEES, "Gebühren");
    typeColumn.setFormat(new FieldFormat(Messages.CSVColumn_Type, format));
    List<Exception> errors = new ArrayList<Exception>();
    List<Item> results = extractor.extract(0, // 
    Arrays.<String[]>asList(new String[] { "2017-04-21", "", "", "", "10", "", "Gebührenerstattung", "", "", "", "" }, new String[] { "2017-04-21", "", "", "", "20", "", "Gebühren", "", "", "", "" }), field2column, errors);
    assertThat(results.size(), is(2));
    new AssertImportActions().check(results, CurrencyUnit.EUR);
    AccountTransaction t1 = (AccountTransaction) // 
    results.stream().filter(// 
    i -> i instanceof TransactionItem).filter(i -> ((AccountTransaction) ((TransactionItem) i).getSubject()).getType() == AccountTransaction.Type.FEES_REFUND).findAny().get().getSubject();
    assertThat(t1.getMonetaryAmount(), is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(10))));
    AccountTransaction t2 = (AccountTransaction) // 
    results.stream().filter(// 
    i -> i instanceof TransactionItem).filter(i -> ((AccountTransaction) ((TransactionItem) i).getSubject()).getType() == AccountTransaction.Type.FEES).findAny().get().getSubject();
    assertThat(t2.getMonetaryAmount(), is(Money.of(CurrencyUnit.EUR, Values.Amount.factorize(20))));
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) Arrays(java.util.Arrays) Money(name.abuchen.portfolio.money.Money) Values(name.abuchen.portfolio.money.Values) Client(name.abuchen.portfolio.model.Client) Item(name.abuchen.portfolio.datatransfer.Extractor.Item) CurrencyUnit(name.abuchen.portfolio.money.CurrencyUnit) LocalDateTime(java.time.LocalDateTime) IsEmptyCollection.empty(org.hamcrest.collection.IsEmptyCollection.empty) Messages(name.abuchen.portfolio.Messages) SecurityItem(name.abuchen.portfolio.datatransfer.Extractor.SecurityItem) ArrayList(java.util.ArrayList) Assert.assertThat(org.junit.Assert.assertThat) EnumField(name.abuchen.portfolio.datatransfer.csv.CSVImporter.EnumField) EnumMapFormat(name.abuchen.portfolio.datatransfer.csv.CSVImporter.EnumMapFormat) Map(java.util.Map) TransactionItem(name.abuchen.portfolio.datatransfer.Extractor.TransactionItem) CSVExtractorTestUtil.buildField2Column(name.abuchen.portfolio.datatransfer.csv.CSVExtractorTestUtil.buildField2Column) BuySellEntry(name.abuchen.portfolio.model.BuySellEntry) AccountTransferEntry(name.abuchen.portfolio.model.AccountTransferEntry) ParseException(java.text.ParseException) CoreMatchers.nullValue(org.hamcrest.CoreMatchers.nullValue) FieldFormat(name.abuchen.portfolio.datatransfer.csv.CSVImporter.FieldFormat) AccountTransaction(name.abuchen.portfolio.model.AccountTransaction) Test(org.junit.Test) Security(name.abuchen.portfolio.model.Security) List(java.util.List) Column(name.abuchen.portfolio.datatransfer.csv.CSVImporter.Column) AssertImportActions(name.abuchen.portfolio.datatransfer.actions.AssertImportActions) Unit(name.abuchen.portfolio.model.Transaction.Unit) EnumField(name.abuchen.portfolio.datatransfer.csv.CSVImporter.EnumField) TransactionItem(name.abuchen.portfolio.datatransfer.Extractor.TransactionItem) ArrayList(java.util.ArrayList) FieldFormat(name.abuchen.portfolio.datatransfer.csv.CSVImporter.FieldFormat) AccountTransaction(name.abuchen.portfolio.model.AccountTransaction) ParseException(java.text.ParseException) AssertImportActions(name.abuchen.portfolio.datatransfer.actions.AssertImportActions) Item(name.abuchen.portfolio.datatransfer.Extractor.Item) SecurityItem(name.abuchen.portfolio.datatransfer.Extractor.SecurityItem) TransactionItem(name.abuchen.portfolio.datatransfer.Extractor.TransactionItem) CSVExtractorTestUtil.buildField2Column(name.abuchen.portfolio.datatransfer.csv.CSVExtractorTestUtil.buildField2Column) Column(name.abuchen.portfolio.datatransfer.csv.CSVImporter.Column) Client(name.abuchen.portfolio.model.Client) Test(org.junit.Test)

Aggregations

ParseException (java.text.ParseException)1 LocalDateTime (java.time.LocalDateTime)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 List (java.util.List)1 Map (java.util.Map)1 Messages (name.abuchen.portfolio.Messages)1 Item (name.abuchen.portfolio.datatransfer.Extractor.Item)1 SecurityItem (name.abuchen.portfolio.datatransfer.Extractor.SecurityItem)1 TransactionItem (name.abuchen.portfolio.datatransfer.Extractor.TransactionItem)1 AssertImportActions (name.abuchen.portfolio.datatransfer.actions.AssertImportActions)1 CSVExtractorTestUtil.buildField2Column (name.abuchen.portfolio.datatransfer.csv.CSVExtractorTestUtil.buildField2Column)1 Column (name.abuchen.portfolio.datatransfer.csv.CSVImporter.Column)1 EnumField (name.abuchen.portfolio.datatransfer.csv.CSVImporter.EnumField)1 EnumMapFormat (name.abuchen.portfolio.datatransfer.csv.CSVImporter.EnumMapFormat)1 FieldFormat (name.abuchen.portfolio.datatransfer.csv.CSVImporter.FieldFormat)1 AccountTransaction (name.abuchen.portfolio.model.AccountTransaction)1 AccountTransferEntry (name.abuchen.portfolio.model.AccountTransferEntry)1 BuySellEntry (name.abuchen.portfolio.model.BuySellEntry)1 Client (name.abuchen.portfolio.model.Client)1