diff --git a/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/BankAtm.java b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/BankAtm.java index 8cbcd3cc..3b520bf6 100644 --- a/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/BankAtm.java +++ b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/BankAtm.java @@ -85,4 +85,4 @@ private CheckingAccount getAccountOrThrow(String accountNumber) { } return account; } -} +} \ No newline at end of file diff --git a/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/BusinessChecking.java b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/BusinessChecking.java new file mode 100644 index 00000000..a7739c95 --- /dev/null +++ b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/BusinessChecking.java @@ -0,0 +1,25 @@ +package com.codedifferently.lesson17.bank; + +import java.util.Set; + +public class BusinessChecking extends CheckingAccount { + // By extending the checking account class it will call to the methods of the checking account. + + public BusinessChecking(String accountNumber, Set<Customer> owners, double initialBalance) { + super(accountNumber, owners, initialBalance); + + boolean hasBusinessOwner = + false; // Have a for loop for to detect if the customer is a business owner// + for (Customer owner : owners) { + if (owner.isBusiness()) { + hasBusinessOwner = true; + break; + } + } + + if (!hasBusinessOwner) { // If that customer is not a business owner, it will throw an + // exception// + throw new IllegalArgumentException("Business account must have at least one business owner."); + } + } +} diff --git a/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/CheckingAccount.java b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/CheckingAccount.java index 5d8aeb74..237a0535 100644 --- a/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/CheckingAccount.java +++ b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/CheckingAccount.java @@ -1,8 +1,9 @@ package com.codedifferently.lesson17.bank; -import com.codedifferently.lesson17.bank.exceptions.InsufficientFundsException; import java.util.Set; +import com.codedifferently.lesson17.bank.exceptions.InsufficientFundsException; + /** Represents a checking account. */ public class CheckingAccount { @@ -128,4 +129,4 @@ public String toString() { + isActive + '}'; } -} +} \ No newline at end of file diff --git a/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/Customer.java b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/Customer.java index af084713..bcc38381 100644 --- a/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/Customer.java +++ b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/Customer.java @@ -10,6 +10,7 @@ public class Customer { private final UUID id; private final String name; private final Set<CheckingAccount> accounts = new HashSet<>(); + private final boolean isBusiness; /** * Creates a new customer. @@ -17,9 +18,10 @@ public class Customer { * @param id The ID of the customer. * @param name The name of the customer. */ - public Customer(UUID id, String name) { + public Customer(UUID id, String name, boolean isBusiness) { this.id = id; this.name = name; + this.isBusiness = isBusiness; } /** @@ -75,4 +77,8 @@ public boolean equals(Object obj) { public String toString() { return "Customer{" + "id=" + id + ", name='" + name + '\'' + '}'; } + + public boolean isBusiness() { + return isBusiness; + } } diff --git a/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/SavingsAccount.java b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/SavingsAccount.java new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/SavingsAccount.java @@ -0,0 +1 @@ + diff --git a/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/account.java b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/account.java new file mode 100644 index 00000000..3fad7243 --- /dev/null +++ b/lesson_17/bank/bank_app/src/main/java/com/codedifferently/lesson17/bank/account.java @@ -0,0 +1,17 @@ +package com.codedifferently.lesson17.bank; + +public class Account { + +package com.codedifferently.lesson17.bank; + +class account { + public static void main(String[] args) { + static Object getOwners() { + return "Owner information not available."; + } + static Object ›() { + throw new UnsupportedOperationException("Not supported yet."); + } +} + + diff --git a/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/BankAtmTest.java b/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/BankAtmTest.java index fa4a913a..83bf1ed5 100644 --- a/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/BankAtmTest.java +++ b/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/BankAtmTest.java @@ -21,8 +21,8 @@ class BankAtmTest { @BeforeEach void setUp() { classUnderTest = new BankAtm(); - customer1 = new Customer(UUID.randomUUID(), "John Doe"); - customer2 = new Customer(UUID.randomUUID(), "Jane Smith"); + customer1 = new Customer(UUID.randomUUID(), "John Doe", false); + customer2 = new Customer(UUID.randomUUID(), "Jane Smith", false); account1 = new CheckingAccount("123456789", Set.of(customer1), 100.0); account2 = new CheckingAccount("987654321", Set.of(customer1, customer2), 200.0); customer1.addAccount(account1); @@ -35,7 +35,7 @@ void setUp() { @Test void testAddAccount() { // Arrange - Customer customer3 = new Customer(UUID.randomUUID(), "Alice Johnson"); + Customer customer3 = new Customer(UUID.randomUUID(), "Alice Johnson", false); CheckingAccount account3 = new CheckingAccount("555555555", Set.of(customer3), 300.0); customer3.addAccount(account3); diff --git a/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/BusinessCheckingAccountTest.java b/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/BusinessCheckingAccountTest.java new file mode 100644 index 00000000..b2eaa9e6 --- /dev/null +++ b/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/BusinessCheckingAccountTest.java @@ -0,0 +1,39 @@ +package com.codedifferently.lesson17.bank; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.util.Set; +import java.util.UUID; +import org.junit.jupiter.api.Test; + +public class BusinessCheckingAccountTest { + + public class BusinessCheckingTest { + + @Test + public void testValidBusinessCheckingAccount() { + Customer bob = new Customer(UUID.randomUUID(), "Bob", true); // is a business + Set<Customer> owners = Set.of(bob); + + BusinessChecking account = new BusinessChecking("BUS-001", owners, 100.0); + assertEquals("BUS-001", account.getAccountNumber()); + } + + @Test + public void testInvalidBusinessCheckingAccountThrowsException() { + Customer alice = new Customer(UUID.randomUUID(), "Alice", false); // personal + Set<Customer> owners = Set.of(alice); + + Exception exception = + assertThrows( + IllegalArgumentException.class, + () -> { + new BusinessChecking("BUS-002", owners, 100.0); + }); + + assertEquals( + "Business account must have at least one business owner.", exception.getMessage()); + } + } +} diff --git a/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/CheckingAccountTest.java b/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/CheckingAccountTest.java index f155d8e5..2ca05f63 100644 --- a/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/CheckingAccountTest.java +++ b/lesson_17/bank/bank_app/src/test/java/com/codedifferently/lesson17/bank/CheckingAccountTest.java @@ -20,8 +20,8 @@ class CheckingAccountTest { @BeforeEach void setUp() { owners = new HashSet<>(); - owners.add(new Customer(UUID.randomUUID(), "John Doe")); - owners.add(new Customer(UUID.randomUUID(), "Jane Smith")); + owners.add(new Customer(UUID.randomUUID(), "John Doe", false)); + owners.add(new Customer(UUID.randomUUID(), "Jane Smith", false)); classUnderTest = new CheckingAccount("123456789", owners, 100.0); }