package com.piggymetrics.account.repository;
import com.piggymetrics.account.AccountApplication;
import com.piggymetrics.account.domain.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import static org.junit.Assert.assertEquals;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = AccountApplication.class)
public class AccountRepositoryTest {
@Autowired
private AccountRepository repository;
@Test
public void shouldFindAccountByName() {
Account stub = getStubAccount();
repository.save(stub);
Account found = repository.findByName(stub.getName());
assertEquals(stub.getLastSeen(), found.getLastSeen());
assertEquals(stub.getNote(), found.getNote());
assertEquals(stub.getIncomes().size(), found.getIncomes().size());
assertEquals(stub.getExpenses().size(), found.getExpenses().size());
}
private Account getStubAccount() {
Saving saving = new Saving();
saving.setAmount(new BigDecimal(1500));
saving.setCurrency(Currency.USD);
saving.setInterest(new BigDecimal("3.32"));
saving.setDeposit(true);
saving.setCapitalization(false);
Item vacation = new Item();
vacation.setTitle("Vacation");
vacation.setAmount(new BigDecimal(3400));
vacation.setCurrency(Currency.EUR);
vacation.setPeriod(TimePeriod.YEAR);
vacation.setIcon("tourism");
Item grocery = new Item();
grocery.setTitle("Grocery");
grocery.setAmount(new BigDecimal(10));
grocery.setCurrency(Currency.USD);
grocery.setPeriod(TimePeriod.DAY);
grocery.setIcon("meal");
Item salary = new Item();
salary.setTitle("Salary");
salary.setAmount(new BigDecimal(9100));
salary.setCurrency(Currency.USD);
salary.setPeriod(TimePeriod.MONTH);
salary.setIcon("wallet");
Account account = new Account();
account.setName("test");
account.setNote("test note");
account.setLastSeen(new Date());
account.setSaving(saving);
account.setExpenses(Arrays.asList(grocery, vacation));
account.setIncomes(Arrays.asList(salary));
return account;
}
}