diff --git a/app/src/main/java/me/panavtec/androidbankkata/account/transaction/Transaction.java b/app/src/main/java/me/panavtec/androidbankkata/account/transaction/Transaction.java new file mode 100644 index 0000000..9ce998b --- /dev/null +++ b/app/src/main/java/me/panavtec/androidbankkata/account/transaction/Transaction.java @@ -0,0 +1,9 @@ +package me.panavtec.androidbankkata.account.transaction; + +import java.util.Date; + +public class Transaction { + public Transaction(int amount, Date date) { + + } +} diff --git a/app/src/main/java/me/panavtec/androidbankkata/account/transaction/TransactionRepository.java b/app/src/main/java/me/panavtec/androidbankkata/account/transaction/TransactionRepository.java index f14bed9..b9d6284 100644 --- a/app/src/main/java/me/panavtec/androidbankkata/account/transaction/TransactionRepository.java +++ b/app/src/main/java/me/panavtec/androidbankkata/account/transaction/TransactionRepository.java @@ -1,4 +1,7 @@ package me.panavtec.androidbankkata.account.transaction; public class TransactionRepository { + public void store(Transaction transaction) { + throw new UnsupportedOperationException(); + } } diff --git a/app/src/test/java/me/panavtec/androidbankkata/account/BankAccountShouldShould.java b/app/src/test/java/me/panavtec/androidbankkata/account/BankAccountShouldShould.java new file mode 100644 index 0000000..46fa1bc --- /dev/null +++ b/app/src/test/java/me/panavtec/androidbankkata/account/BankAccountShouldShould.java @@ -0,0 +1,56 @@ +package me.panavtec.androidbankkata.account; + +import java.util.Date; +import me.panavtec.androidbankkata.account.statement.StatementFormatter; +import me.panavtec.androidbankkata.account.statement.StatementView; +import me.panavtec.androidbankkata.account.transaction.Transaction; +import me.panavtec.androidbankkata.account.transaction.TransactionRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +import static org.mockito.Mockito.*; + +@RunWith(MockitoJUnitRunner.class) public class BankAccountShouldShould { + + @Mock TransactionRepository repository; + @Mock StatementFormatter formatter; + @Mock StatementView view; + @Mock Clock clock; + + @Test public void store_a_transaction() { + BankAccount account = givenAccountWithMockedClock(); + + account.deposit(anAmount()); + + verifyStore(aTransactionWith(anAmount())); + } + + private BankAccount givenAccountWithMockedClock() { + when(clock.today()).thenReturn(date()); + return givenAccount(); + } + + private Date date() { + return new Date(); + } + + private BankAccount givenAccount() { + BankAccount account = new BankAccount(repository, formatter, clock); + account.attach(view); + return account; + } + + private int anAmount() { + return 100; + } + + private Transaction aTransactionWith(int anyAmount) { + return new Transaction(anyAmount, date()); + } + + private void verifyStore(Transaction transaction) { + verify(repository).store(transaction); + } +} \ No newline at end of file