Skip to content

Commit 9cb030f

Browse files
committed
test(lesson-17/bank): add AuditLog & TransactionEntry coverage
1 parent 33fdb6f commit 9cb030f

File tree

1 file changed

+54
-0
lines changed
  • lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package com.codedifferently.lesson17.bank;
2+
3+
import static org.junit.jupiter.api.Assertions.*;
4+
5+
import java.time.Instant;
6+
import java.util.List;
7+
import org.junit.jupiter.api.Test;
8+
9+
class AuditLogTest {
10+
11+
@Test
12+
void record_addsEntriesAndFieldsAreCorrect() {
13+
AuditLog log = new AuditLog();
14+
log.record("A-001", 100.0, TransactionType.DEPOSIT_CASH, "cash");
15+
log.record("A-002", 25.5, TransactionType.WITHDRAWAL, "atm");
16+
log.record("A-003", 75.0, TransactionType.DEPOSIT_CHECK, "Check");
17+
18+
List<TransactionEntry> entries = log.getEntries();
19+
assertEquals(3, entries.size());
20+
21+
TransactionEntry e1 = entries.get(0);
22+
assertEquals("A-001", e1.getAccountNumber());
23+
assertEquals(100.0, e1.getAmount(), 0.0001);
24+
assertEquals(TransactionType.DEPOSIT_CASH, e1.getType());
25+
assertEquals("cash", e1.getNote());
26+
assertNotNull(e1.getTimestamp());
27+
}
28+
29+
@Test
30+
void getEntries_isUnmodifiable() {
31+
AuditLog log = new AuditLog();
32+
log.record("A-100", 1.0, TransactionType.DEPOSIT_CASH, "x");
33+
List<TransactionEntry> view = log.getEntries();
34+
assertThrows(UnsupportedOperationException.class, () -> view.add(view.get(0)));
35+
}
36+
37+
@Test
38+
void transactionEntry_gettersReturnConstructorValues() {
39+
Instant ts = Instant.parse("2020-01-01T00:00:00Z");
40+
TransactionEntry entry =
41+
new TransactionEntry(ts, "A-XYZ", 9.99, TransactionType.WITHDRAWAL, "atm");
42+
assertEquals(ts, entry.getTimestamp());
43+
assertEquals("A-XYZ", entry.getAccountNumber());
44+
assertEquals(9.99, entry.getAmount(), 0.0001);
45+
assertEquals(TransactionType.WITHDRAWAL, entry.getType());
46+
assertEquals("atm", entry.getNote());
47+
}
48+
49+
@Test
50+
void bankAtm_exposesAuditLog() {
51+
BankAtm atm = new BankAtm();
52+
assertNotNull(atm.getAuditLog());
53+
}
54+
}

0 commit comments

Comments
 (0)