Skip to content

Commit b45c1a5

Browse files
committed
Feat: Fix/Jacoco fix
1 parent 050f47b commit b45c1a5

File tree

2 files changed

+124
-1
lines changed

2 files changed

+124
-1
lines changed
Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,55 @@
11
package com.codedifferently.lesson17.bank.exceptions;
22

3-
public class MoneyOrder {}
3+
import com.codedifferently.lesson17.bank.Check;
4+
import com.codedifferently.lesson17.bank.CheckingAccount;
5+
6+
public class MoneyOrder extends Check {
7+
8+
public MoneyOrder(String checkNumber, double amount, CheckingAccount account) {
9+
super(checkNumber, amount, account);
10+
if (amount < 0) {
11+
throw new IllegalArgumentException("MoneyOrder amount must be positive");
12+
}
13+
account.withdraw(amount);
14+
}
15+
16+
@Override
17+
/**
18+
* Deposits the check into an account.
19+
*
20+
* @param toAccount The account to deposit the check into.
21+
*/
22+
public void depositFunds(CheckingAccount toAccount) {
23+
if (getIsVoided()) {
24+
throw new CheckVoidedException("MoneyOrder is voided");
25+
}
26+
// getAccount().withdraw(getAmount());
27+
toAccount.deposit(getAmount());
28+
voidCheck();
29+
}
30+
31+
@Override
32+
public String toString() {
33+
return "MoneyOrder{"
34+
+ "checkNumber='"
35+
+ getCheckNumber()
36+
+ '\''
37+
+ ", amount="
38+
+ getAmount()
39+
+ ", account="
40+
+ ((CheckingAccount) getAccount()).getAccountNumber()
41+
+ '}';
42+
}
43+
44+
private double getAmount() {
45+
throw new UnsupportedOperationException("Not supported yet.");
46+
}
47+
48+
private Object getAccount() {
49+
throw new UnsupportedOperationException("Not supported yet.");
50+
}
51+
52+
private String getCheckNumber() {
53+
throw new UnsupportedOperationException("Not supported yet.");
54+
}
55+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package com.codedifferently.lesson17.bank.exceptions;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
5+
6+
import com.codedifferently.lesson17.bank.Check;
7+
import com.codedifferently.lesson17.bank.CheckingAccount;
8+
import org.junit.jupiter.api.BeforeEach;
9+
import org.junit.jupiter.api.Test;
10+
11+
class MoneyOrderTest<account2> {
12+
13+
private CheckingAccount account1;
14+
private CheckingAccount account2;
15+
private MoneyOrder classUnderTest;
16+
17+
@BeforeEach
18+
void setUp() {
19+
account1 = new CheckingAccount("123456789", null, 100.0);
20+
account2 = new CheckingAccount("987654321", null, 200.0);
21+
classUnderTest = new MoneyOrder("123456789", 50.0, account1);
22+
}
23+
24+
@Test
25+
void testDepositFunds() {
26+
// Act
27+
classUnderTest.depositFunds(account2);
28+
29+
// Assert
30+
assertThat(account1.getBalance()).isEqualTo(50.0);
31+
assertThat(account2.getBalance()).isEqualTo(250.0);
32+
}
33+
34+
@Test
35+
void testDepositFunds_CheckVoided() {
36+
// Arrange
37+
classUnderTest.voidCheck();
38+
39+
// Act & Assert
40+
assertThatExceptionOfType(CheckVoidedException.class)
41+
.isThrownBy(() -> classUnderTest.depositFunds(account2))
42+
.withMessage("MoneyOrder is voided");
43+
}
44+
45+
@Test
46+
void testHashCode() {
47+
// Arrange
48+
MoneyOrder otherCheck = new MoneyOrder("123456789", 50.0, account1);
49+
50+
// Assert
51+
assertThat(classUnderTest.hashCode()).isEqualTo(otherCheck.hashCode());
52+
}
53+
54+
@Test
55+
void testEquals() {
56+
// Arrange
57+
Check otherCheck = new MoneyOrder("123456789", 25.0, account1);
58+
Check differentCheck = new MoneyOrder("987654321", 25.0, account1);
59+
60+
// Assert
61+
assertThat(classUnderTest.equals(otherCheck)).isTrue();
62+
assertThat(classUnderTest.equals(differentCheck)).isFalse();
63+
}
64+
65+
@Test
66+
void testToString() {
67+
// Assert
68+
assertThat(classUnderTest.toString())
69+
.isEqualTo("MoneyOrder{checkNumber='123456789', amount=50.0, account=123456789}");
70+
}
71+
}

0 commit comments

Comments
 (0)