package jhaushalt.service.factories.buchung;
import static org.fest.assertions.Assertions.*;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import jhaushalt.domain.Geldbetrag;
import jhaushalt.domain.buchung.Buchung;
import jhaushalt.domain.buchung.SplitBuchung;
import jhaushalt.service.factories.DataSourceArrayHolder;
import jhaushalt.service.factories.io.DataInputFacade;
import org.junit.Test;
public class SplitBuchungStrategyIntegrationTest {
private static final String ANY_SPLIT_BOOKING_TEXT = "Split-Buchungs-Text";
private SplitBuchungStrategy strategy = new SplitBuchungStrategy();
@Test
public void validEntryShouldBeLoadedProperly() throws IOException, ParseException {
List<String> inputArray = createInputArray();
inputArray.add("2");
addSingleBookingEntry(inputArray, "Category #1", 20000);
addSingleBookingEntry(inputArray, "Category #2", 30000);
DataInputFacade in = new DataSourceArrayHolder(inputArray);
Buchung actualBooking = strategy.loadData(in);
assertThat(actualBooking).isInstanceOf(SplitBuchung.class);
assertThat(actualBooking.getText()).isEqualTo(ANY_SPLIT_BOOKING_TEXT);
assertThat(actualBooking.getWert()).isEqualTo(new Geldbetrag(50000D));
}
private void addSingleBookingEntry(List<String> inputArray, String category, long sum) {
inputArray.add(category);
inputArray.add(Long.toString(sum));
}
private List<String> createInputArray() {
List<String> input = new ArrayList<String>();
input.add("24.12.2004");
input.add(ANY_SPLIT_BOOKING_TEXT);
return input;
}
}