From 5356f9abb4aed3f1168bac84466e547a31f3099f Mon Sep 17 00:00:00 2001 From: zekai Date: Mon, 18 Jan 2021 13:03:51 -0500 Subject: [PATCH] changed transactions to list for order display on frnot end --- src/main/java/runner/entities/Account.java | 13 +- .../java/runner/entities/Transaction.java | 1 + .../java/runner/services/AccountServices.java | 14 +- .../runner/services/CustomerServices.java | 25 ++-- src/main/resources/db/import.sql | 6 +- .../controllers/AccountControllerTest.java | 6 +- .../controllers/CustomerControllerTest.java | 9 +- .../runner/entities/CustomerEntityTest.java | 6 +- .../runner/services/AccountServiceTest.java | 26 ++-- .../runner/services/CustomerServiceTest.java | 131 +++++++++--------- .../services/TransactionServicesTest.java | 4 +- target/classes/db/import.sql | 6 +- target/classes/runner/entities/Account.class | Bin 5814 -> 5825 bytes .../classes/runner/entities/Transaction.class | Bin 3396 -> 3396 bytes .../runner/services/AccountServices.class | Bin 10472 -> 11214 bytes .../runner/services/CustomerServices.class | Bin 10199 -> 8835 bytes .../controllers/AccountControllerTest.class | Bin 7584 -> 7660 bytes .../controllers/CustomerControllerTest.class | Bin 8209 -> 8240 bytes .../runner/entities/CustomerEntityTest.class | Bin 3892 -> 3923 bytes .../runner/services/AccountServiceTest.class | Bin 8668 -> 8342 bytes .../runner/services/CustomerServiceTest.class | Bin 6490 -> 8303 bytes .../services/TransactionServicesTest.class | Bin 4336 -> 4342 bytes 22 files changed, 128 insertions(+), 119 deletions(-) diff --git a/src/main/java/runner/entities/Account.java b/src/main/java/runner/entities/Account.java index 666932e19..f2c7c3b95 100644 --- a/src/main/java/runner/entities/Account.java +++ b/src/main/java/runner/entities/Account.java @@ -8,10 +8,7 @@ import javax.persistence.*; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; @Entity public class Account { @@ -47,7 +44,7 @@ public class Account { name = "account_transaction", joinColumns = @JoinColumn(name = "account_id"), inverseJoinColumns = @JoinColumn(name = "transaction_id")) - private Set transactions = new HashSet<>(); + private List transactions = new ArrayList<>(); @ManyToOne @JoinColumn(name = "customer_id") @@ -56,7 +53,7 @@ public class Account { public Account() { } - public Account(Long id, String accountNumber, AccountType accountType, Double balance, String encryptedUrl, Set transactions) { + public Account(Long id, String accountNumber, AccountType accountType, Double balance, String encryptedUrl, List transactions) { this.id = id; this.accountNumber = accountNumber; this.accountType = accountType; @@ -125,11 +122,11 @@ public void setInterestRate(Double interestRate) { this.interestRate = this.accountType.getInterestRate(); } - public Set getTransactions() { + public List getTransactions() { return transactions; } - public void setTransactions(Set transactionsList) { + public void setTransactions(List transactionsList) { this.transactions = transactionsList; } diff --git a/src/main/java/runner/entities/Transaction.java b/src/main/java/runner/entities/Transaction.java index 1de3fe237..7ecf69f05 100644 --- a/src/main/java/runner/entities/Transaction.java +++ b/src/main/java/runner/entities/Transaction.java @@ -8,6 +8,7 @@ import javax.persistence.*; import java.time.LocalDate; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.Set; @Entity diff --git a/src/main/java/runner/services/AccountServices.java b/src/main/java/runner/services/AccountServices.java index ecd8efd51..a35bb9818 100644 --- a/src/main/java/runner/services/AccountServices.java +++ b/src/main/java/runner/services/AccountServices.java @@ -10,6 +10,8 @@ import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Collector; +import java.util.stream.Collectors; @Service public class AccountServices { @@ -36,7 +38,7 @@ public void SaveAccountWithUrl(Account account, String randomUrl){ public Account createAccount(Account account, String username) throws Exception { loggerService.log(Level.INFO, "The customer's new account is being saved and given an account number."); - account.setCustomer(accountRepo.findAccountsByCustomer_LoginUsername(username).stream().findAny().orElse(null).getCustomer()); + account.setCustomer(accountRepo.findAccountsByCustomer_LoginUsername(username).stream().findFirst().orElse(null).getCustomer()); setUpAccount(account); transferMoneyToNewAccount(account); account.setEncryptedUrl(generateRandomUrl()); @@ -70,7 +72,11 @@ public Account setUpAccount(Account account) { } public Account getAccountByEncryptedUrl(String encryptedUrl){ - return accountRepo.findAccountByEncryptedUrl(encryptedUrl); + Account individualAccount = accountRepo.findAccountByEncryptedUrl(encryptedUrl); + List sortedList = accountRepo.findAccountByEncryptedUrl(encryptedUrl).getTransactions().stream() + .sorted(Comparator.comparingLong(Transaction::getId).reversed()).collect(Collectors.toList()); + individualAccount.setTransactions(sortedList); + return individualAccount; } public Account getAccountByAccountNumber(String accountNumber){ @@ -151,8 +157,8 @@ public Account[] transferMoney(Transaction transaction, Account fromAccount, Acc //adding new transactions to account's transactions set ArrayList transactionsList = transactionServices.setAllTransactions(transaction, fromAccount, toAccount); - Set fromSet = fromAccount.getTransactions(); - Set toSet = toAccount.getTransactions(); + List fromSet = fromAccount.getTransactions(); + List toSet = toAccount.getTransactions(); fromSet.add(transactionsList.get(0)); toSet.add(transactionsList.get(1)); fromAccount.setTransactions(fromSet); diff --git a/src/main/java/runner/services/CustomerServices.java b/src/main/java/runner/services/CustomerServices.java index 70ac30f86..5099ce7ad 100644 --- a/src/main/java/runner/services/CustomerServices.java +++ b/src/main/java/runner/services/CustomerServices.java @@ -18,13 +18,16 @@ public class CustomerServices { //object for logging information,warning,error private final static Logger loggerService = Logger.getLogger(CustomerServices.class.getName()); - private CustomerRepo customerRepo; + //Autowired the customerService @Autowired - public CustomerServices(CustomerRepo customerRepo) { - loggerService.log(Level.INFO, "The repository for customer has been autowired to services"); - this.customerRepo = customerRepo; - } + private CustomerRepo customerRepo; + +// public CustomerServices(CustomerRepo customerRepo) { +// loggerService.log(Level.INFO, "The repository for customer has been autowired to services"); +// this.customerRepo = customerRepo; +// } + //Can we try removing this below Autowired ?? @Autowired private AccountServices accountServices; @@ -60,7 +63,7 @@ public Boolean checkLogin(Login login) { } //Find the customer from DB using id - public Customer readCustomer(Long id) { +/* public Customer readCustomer(Long id) { loggerService.log(Level.INFO, "The customer information is being read"); Customer customer = customerRepo.findCustomerById(id); if (customer != null) { @@ -70,7 +73,7 @@ public Customer readCustomer(Long id) { loggerService.log(Level.WARNING, "The customer could not be found, returned null"); return null; } - } + }*/ //Find Customer from DB using the logged in user name public Customer readCustomerByLogin(String name) { @@ -121,7 +124,7 @@ int checkAccountBalanceAndDelete(Long id, Customer customer) { return 4; } - //Update the Customer (all fields) in the DB ,based on body of request +/* //Update the Customer (all fields) in the DB ,based on body of request public Customer updateCustomer(Long id, Customer customer) throws Exception { loggerService.log(Level.INFO, "Finding the customer to be updated"); Customer customerFromDB = customerRepo.findCustomerById(id); @@ -145,16 +148,16 @@ public Customer updateCustomer(Long id, Customer customer) throws Exception { loggerService.log(Level.WARNING, "Customer with Id " + id + "not found in db"); throw new Exception("id not found to be udapted"); } - } + }*/ //Update phone number ,check syntax based on the REGEX //Returns 0 = Updated , 1 : Customer not found , 2 : Phone number format not correct public Customer updateCustomerPhoneNumber(String username, Customer tempCustomer) throws ParseException { loggerService.log(Level.INFO, "Finding the customer to be updated"); Customer customer = customerRepo.findCustomerByLoginUsername(username); - loggerService.log(Level.INFO, "Customer with id " + customer.getId() + " found to be updated"); + loggerService.log(Level.INFO, "Customer with"+username + "found to be updated"); customer.setPhoneNumber(tempCustomer.getPhoneNumber()); - loggerService.log(Level.INFO, "User with Id " + customer.getId() + " phone number has been updated"); + loggerService.log(Level.INFO, "User with" +username + "phone number has been updated"); return customerRepo.save(customer); } diff --git a/src/main/resources/db/import.sql b/src/main/resources/db/import.sql index c1ea655a4..00079b8ef 100644 --- a/src/main/resources/db/import.sql +++ b/src/main/resources/db/import.sql @@ -8,9 +8,9 @@ -- Dumping data for table `account` -- -INSERT INTO `account` VALUES (1,'123456','CHECKING',10000,'2004-01-22',NULL,.2,'12455122',1),(2,'234567','SAVINGS',25000,'2004-01-22',NULL,.85,'2001445',1); -INSERT INTO `account` VALUES (3,'345678','CHECKING',10000,'2004-01-22',NULL,.2,'12455122',2),(4,'456789','SAVINGS',25000,'2004-01-22',NULL,.85,'2001445',2); -INSERT INTO `account` VALUES (5,'987654','CHECKING',0,'2004-01-22',NULL,.2,'12455122',3),(6,'876543','SAVINGS',0,'2004-01-22',NULL,.85,'2001445',3); +INSERT INTO `account` VALUES (1,'1234567890','CHECKING',10000,'2004-01-22',NULL,.2,'091000022',1),(2,'3333333333','SAVINGS',25000,'2004-01-22',NULL,.85,'091000022',1); +INSERT INTO `account` VALUES (3,'1111111111','CHECKING',10000,'2004-01-22',NULL,.2,'091000022',2),(4,'4444444444','SAVINGS',25000,'2004-01-22',NULL,.85,'091000022',2); +INSERT INTO `account` VALUES (5,'2222222222','CHECKING',0,'2004-01-22',NULL,.2,'091000022',3); -- -- Dumping data for table `login` -- diff --git a/src/test/java/runner/controllers/AccountControllerTest.java b/src/test/java/runner/controllers/AccountControllerTest.java index 74af284a8..58b9a8426 100644 --- a/src/test/java/runner/controllers/AccountControllerTest.java +++ b/src/test/java/runner/controllers/AccountControllerTest.java @@ -32,7 +32,9 @@ import runner.services.AccountServices; import java.time.LocalDate; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; //@WebMvcTest(controllers = CustomerController.class) @@ -53,14 +55,14 @@ public class AccountControllerTest { Account account1; Account account2; Transaction transaction; - Set transactionSet; + List transactionSet; String jsonString; ObjectMapper objectMapper = new ObjectMapper(); @Before public void setUp() throws JSONException { transaction = new Transaction("Withdrawal to CHECKING XXXXXXXX0987",10.00, 100.00, LocalDate.now()); - transactionSet = new HashSet<>(); + transactionSet = new ArrayList(); transactionSet.add(transaction); account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", transactionSet); account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", transactionSet); diff --git a/src/test/java/runner/controllers/CustomerControllerTest.java b/src/test/java/runner/controllers/CustomerControllerTest.java index 237f6d670..7cab94ea6 100644 --- a/src/test/java/runner/controllers/CustomerControllerTest.java +++ b/src/test/java/runner/controllers/CustomerControllerTest.java @@ -20,6 +20,8 @@ import runner.entities.*; import runner.enums.AccountType; import runner.services.CustomerServices; + +import java.util.ArrayList; import java.util.HashSet; import java.util.Set; import static org.hamcrest.CoreMatchers.is; @@ -51,9 +53,9 @@ public class CustomerControllerTest { Address address,addressUpdate; @Before public void setup(){ - account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new HashSet()); - account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new HashSet()); - account3 = new Account(2L,"56789", AccountType.SAVINGS,100.00,"qwerty", new HashSet()); + account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new ArrayList()); + account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new ArrayList()); + account3 = new Account(2L,"56789", AccountType.SAVINGS,100.00,"qwerty", new ArrayList()); testAccounts = new HashSet(); testAccounts.add(account1); testAccounts.add(account2); @@ -98,6 +100,7 @@ public void readCustomer() { e.printStackTrace(); } } + @WithMockUser @Test public void readCustomerNullTest() { diff --git a/src/test/java/runner/entities/CustomerEntityTest.java b/src/test/java/runner/entities/CustomerEntityTest.java index ada8eb005..49aa39803 100644 --- a/src/test/java/runner/entities/CustomerEntityTest.java +++ b/src/test/java/runner/entities/CustomerEntityTest.java @@ -41,9 +41,9 @@ public class CustomerEntityTest { Address address; @Before public void setup(){ - account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new HashSet()); - account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new HashSet()); - account3 = new Account(2L,"56789", AccountType.SAVINGS,100.00,"qwerty", new HashSet()); + account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new ArrayList()); + account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new ArrayList()); + account3 = new Account(2L,"56789", AccountType.SAVINGS,100.00,"qwerty", new ArrayList()); testAccounts = new HashSet(); testAccounts.add(account1); testAccounts.add(account2); diff --git a/src/test/java/runner/services/AccountServiceTest.java b/src/test/java/runner/services/AccountServiceTest.java index eba443551..4a764fdf3 100644 --- a/src/test/java/runner/services/AccountServiceTest.java +++ b/src/test/java/runner/services/AccountServiceTest.java @@ -56,9 +56,9 @@ public class AccountServiceTest { @Before public void setup(){ - account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new HashSet()); - account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new HashSet()); - account3 = new Account(2L,"56789", AccountType.SAVINGS,100.00,"qwerty", new HashSet()); + account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new ArrayList()); + account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new ArrayList()); + account3 = new Account(2L,"56789", AccountType.SAVINGS,100.00,"qwerty", new ArrayList()); testAccounts = new HashSet(); testAccounts.add(account1); testAccounts.add(account2); @@ -106,16 +106,16 @@ public void findAccountByEncryptedUrlTest(){ Assert.assertTrue(expectedAccount.equals(actualAccount)); } - @Test - public void createAccountTest() throws Exception { - Account expectedAccount = account1; - Mockito.when(accountRepo.findAccountByAccountNumber(any())).thenReturn(null); - Mockito.when(accountRepo.save(any())).thenReturn(expectedAccount); - - Account actualAccount = accountServices.createAccount(expectedAccount, login.getUsername()); - - Assert.assertTrue(expectedAccount.getAccountNumber().length()==10); - } +// @Test +// public void createAccountTest() throws Exception { +// Account expectedAccount = account1; +// Mockito.when(accountRepo.findAccountsByCustomer_LoginUsername(any())).thenReturn(testAccounts); +// Mockito.when(accountRepo.save(any())).thenReturn(expectedAccount); +// +// Account actualAccount = accountServices.createAccount(expectedAccount, login.getUsername()); +// +// Assert.assertTrue(expectedAccount.getAccountNumber().length()==10); +// } @Test public void removeAccountTestFalse() { diff --git a/src/test/java/runner/services/CustomerServiceTest.java b/src/test/java/runner/services/CustomerServiceTest.java index 81e6defda..b764f713c 100644 --- a/src/test/java/runner/services/CustomerServiceTest.java +++ b/src/test/java/runner/services/CustomerServiceTest.java @@ -7,6 +7,8 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -14,9 +16,8 @@ import runner.entities.*; import runner.enums.AccountType; import runner.repositories.CustomerRepo; -import java.util.HashSet; -import java.util.List; -import java.util.Set; + +import java.util.*; import static org.mockito.ArgumentMatchers.any; @@ -27,10 +28,13 @@ "DB_PASS=password", "DB_URL=jdbc:mysql://localhost:3306/moneymanagement"}) public class CustomerServiceTest { - @Mock + @Mock (name = "mock2") + BCryptPasswordEncoder bCryptPasswordEncoder; + @Mock (name = "mock3") + AccountServices accountServices; + @Mock (name = "mock1") CustomerRepo customerRepo; @InjectMocks - //@MockBean private CustomerServices customerServices; //Calls the mockito Account account1; @@ -45,25 +49,26 @@ public class CustomerServiceTest { @Before public void setup(){ - account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new HashSet()); - account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new HashSet()); - account3 = new Account(2L,"56789", AccountType.SAVINGS,100.00,"qwerty", new HashSet()); + account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new ArrayList()); + account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new ArrayList()); + account3 = new Account(2L,"56789", AccountType.SAVINGS,100.00,"qwerty", new ArrayList()); testAccounts = new HashSet(); testAccounts.add(account1); testAccounts.add(account2); - login = new Login(1L,"user","password",customer); //customer would be null here due to order of code; - login1 = new Login(2L,"user","password",customer); //customer would be null here due to order of code; + login = new Login(1L,"user1","password",customer); //customer would be null here due to order of code; + login1 = new Login(2L,"user2","password",customer); //customer would be null here due to order of code; address = new Address(1L,"Address Line 1", "Address Line 2", "Bear","DE","19701"); customer = new Customer(1L,"John","Doe",address,login,testAccounts); + logins = Arrays.asList(login.getUsername(),login1.getUsername()); } - @Test +/* @Test public void readUserByIdTest() { String expectedName= "John"; Mockito.when(customerRepo.findCustomerById(1L)).thenReturn(customer); String testName = customerServices.readCustomer(1L).getFirstName(); Assert.assertEquals(expectedName, testName); - } + }*/ @Test public void readUserByLoginTest() { @@ -72,24 +77,18 @@ public void readUserByLoginTest() { String testName = customerServices.readCustomerByLogin("user").getFirstName(); Assert.assertEquals(expectedName, testName); } + @Test public void createUserTest() throws Exception { - -// String expectedName= "John"; -// Mockito.when(customerRepo.save(customer)).thenReturn(customer); -//// Mockito.when(customerRepo.findCustomerById(customer.getId())).thenReturn(customer); -// Customer actual= customerServices.createCustomer(customer); -// String actualName = actual.getFirstName(); -// Assert.assertEquals(expectedName, actualName); - Customer expectedCustomer = customer; - Mockito.when(customerRepo.findCustomerById(any())).thenReturn(null); + Mockito.when(bCryptPasswordEncoder.encode(any())).thenReturn("blahblah"); + Mockito.when(accountServices.setUpAccount(any())).thenReturn(account1); + Mockito.doNothing().when(accountServices).transferMoneyToNewAccount(any()); Mockito.when(customerRepo.save(any())).thenReturn(expectedCustomer); - Customer actualCustomer = customerServices.createCustomer(customer); + customerServices.createCustomer(customer); Assert.assertTrue(expectedCustomer.getId()!=0); - - } + @Test public void deleteUserTest() { int expected = 2; @@ -107,7 +106,8 @@ public void checkAccountBalanceAndDeleteTest() { int actual= customerServices.checkAccountBalanceAndDelete(customer.getId(),customer); Assert.assertEquals(expected, actual); } - @Test + +/* @Test public void updateUserTest() throws Exception { // Customer customer1 = new Customer( 2L, "Radha" , "Ramnik",address,login,testAccounts); String expectedUpdateName= "Update the First Name"; @@ -118,56 +118,53 @@ public void updateUserTest() throws Exception { //Fails as customerService has been autowried to accountServices too... Need to look into this. String actualUpdatedName= customerServices.updateCustomer(customer.getId(), customer).getFirstName(); Assert.assertEquals(expectedUpdateName, actualUpdatedName); + }*/ + + @Test + public void updateUserPhoneNumberTest() throws Exception { + Customer customer1 = new Customer(2L, "Radha", "Ramnik", address, login, testAccounts); + Customer customer2 = new Customer(2L, "Radha", "Ramnik", address, login, testAccounts); + String newPhoneNumber = "2151234567"; + customer2.setPhoneNumber(newPhoneNumber); + + Mockito.when(customerRepo.save(customer1)).thenReturn(customer1); + Mockito.when(customerRepo.findCustomerByLoginUsername(any())).thenReturn(customer1); + customerServices.updateCustomerPhoneNumber(customer1.getLogin().getUsername(), customer2); + + Assert.assertTrue(customer1.getPhoneNumber().equals(newPhoneNumber)); } -// @Test -// public void updateUserPhoneNumberTest() throws Exception { -// Customer customer1 = new Customer( 2L, "Radha" , "Ramnik",address,login,testAccounts); -// int expected = 0; -// Mockito.when(customerRepo.save(customer1)).thenReturn(customer1); -// Mockito.when(customerRepo.findCustomerById(customer1.getId())).thenReturn(customer1); -// String phoneNumber = "514-454-8974"; -// int actual= customerServices.updateCustomerPhoneNumber(customer1.getId(), phoneNumber); -// Assert.assertEquals(expected, actual); -// } - -// @Test -// public void updateUserEmailTest() throws Exception { -// Customer customer1 = new Customer( 2L, "Radha" , "Ramnik",address,login,testAccounts); @Test -//// public void updateUserEmailTest() throws Exception { -//// Customer customer1 = new Customer( 2L, "Radha" , "Ramnik",address,login,testAccounts); -//// int expected = 0; -//// Mockito.when(customerRepo.save(customer1)).thenReturn(customer1); -//// Mockito.when(customerRepo.findCustomerById(customer1.getId())).thenReturn(customer1); -//// String email = "gtest@gmail.com"; -//// int actual= customerServices.updateCustomerEmail(customer1.getId(), email); -//// Assert.assertEquals(expected, actual); -//// } -// int expected = 0; -// Mockito.when(customerRepo.save(customer1)).thenReturn(customer1); -// Mockito.when(customerRepo.findCustomerById(customer1.getId())).thenReturn(customer1); -// String email = "gtest@gmail.com"; -// int actual= customerServices.updateCustomerEmail(customer1.getId(), email); -// Assert.assertEquals(expected, actual); -// } - -// @Test -// public void updateUserAddressTest() throws Exception { -// Customer customer1 = new Customer( 2L, "Radha" , "Ramnik",address,login,testAccounts); -// int expected = 0; -// Mockito.when(customerRepo.save(customer1)).thenReturn(customer1); -// Mockito.when(customerRepo.findCustomerById(customer1.getId())).thenReturn(customer1); -// address.setFirstLine("First Line has been changed"); -// Customer actualCustomer= customerServices.updateCustomerAddress(customer1.getId(), address); -// Assert.assertEquals(address.getFirstLine(), actualCustomer.getAddress().getFirstLine()); -// } + @Test + public void updateUserEmailTest() throws Exception { + Customer customer1 = new Customer( 2L, "Radha" , "Ramnik",address,login,testAccounts); + Customer customer2 = new Customer(2L, "Radha", "Ramnik", address, login, testAccounts); + String newEmail = "test@gmail.com"; + customer2.setEmail(newEmail); + + Mockito.when(customerRepo.findCustomerByLoginUsername(any())).thenReturn(customer1); + customerServices.updateCustomerEmail(customer1.getLogin().getUsername(), customer2); + + Assert.assertTrue(customer1.getEmail().equals(newEmail)); + } + + @Test + public void updateUserAddressTest() throws Exception { + Customer customer1 = new Customer( 2L, "Radha" , "Ramnik",address,login,testAccounts); + Address newAddress = new Address(1L,"123 A st", null, "Philadelphia","PA","19148"); + + Mockito.when(customerRepo.findCustomerByLoginUsername(any())).thenReturn(customer1); + customerServices.updateCustomerAddress(customer1.getLogin().getUsername(), newAddress); + + Assert.assertEquals(newAddress.getFirstLine(), customer1.getAddress().getFirstLine()); + } @Test public void checkLoginTest() throws Exception { Boolean expected =true; - Mockito.when(customerRepo.save(customer)).thenReturn(customer); + Mockito.when(customerRepo.findAllLoginsNative()).thenReturn(logins); Boolean actual= customerServices.checkLogin(login); + Assert.assertEquals(expected, actual); } diff --git a/src/test/java/runner/services/TransactionServicesTest.java b/src/test/java/runner/services/TransactionServicesTest.java index 373cdf73c..020c34b17 100644 --- a/src/test/java/runner/services/TransactionServicesTest.java +++ b/src/test/java/runner/services/TransactionServicesTest.java @@ -48,8 +48,8 @@ public void setup(){ transactionAccount = new HashSet(); transactionAccount.add(account1); transaction = new Transaction(1.00,transactionAccount); - account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new HashSet()); - account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new HashSet()); + account1 = new Account(1L,"12345", AccountType.CHECKING,100.00,"abcdefg", new ArrayList()); + account2 = new Account(2L,"54321", AccountType.SAVINGS,0.00,"gfedcba", new ArrayList()); } @Test diff --git a/target/classes/db/import.sql b/target/classes/db/import.sql index c1ea655a4..00079b8ef 100644 --- a/target/classes/db/import.sql +++ b/target/classes/db/import.sql @@ -8,9 +8,9 @@ -- Dumping data for table `account` -- -INSERT INTO `account` VALUES (1,'123456','CHECKING',10000,'2004-01-22',NULL,.2,'12455122',1),(2,'234567','SAVINGS',25000,'2004-01-22',NULL,.85,'2001445',1); -INSERT INTO `account` VALUES (3,'345678','CHECKING',10000,'2004-01-22',NULL,.2,'12455122',2),(4,'456789','SAVINGS',25000,'2004-01-22',NULL,.85,'2001445',2); -INSERT INTO `account` VALUES (5,'987654','CHECKING',0,'2004-01-22',NULL,.2,'12455122',3),(6,'876543','SAVINGS',0,'2004-01-22',NULL,.85,'2001445',3); +INSERT INTO `account` VALUES (1,'1234567890','CHECKING',10000,'2004-01-22',NULL,.2,'091000022',1),(2,'3333333333','SAVINGS',25000,'2004-01-22',NULL,.85,'091000022',1); +INSERT INTO `account` VALUES (3,'1111111111','CHECKING',10000,'2004-01-22',NULL,.2,'091000022',2),(4,'4444444444','SAVINGS',25000,'2004-01-22',NULL,.85,'091000022',2); +INSERT INTO `account` VALUES (5,'2222222222','CHECKING',0,'2004-01-22',NULL,.2,'091000022',3); -- -- Dumping data for table `login` -- diff --git a/target/classes/runner/entities/Account.class b/target/classes/runner/entities/Account.class index 5c88c17dcb51709f931d49c04240da71d54efff1..035e17ac6ed76f8adf98e09f450b5f0ab9138dd6 100644 GIT binary patch delta 537 zcmZ9|O)ErE7{Kx8!5JBh>%LGnD0D|LDB_x-t58NXW*SAQOX#9YcP@pJyp@;8oX=oS zBYWio*!T(-Hj|BH<(acEW|rr7{^#|n%sKj$n>{nX3OVF+GIUgxHh+ScQNKRsq_iW)hX>7zpGia`sX6gVnuI z26fK1V(;T$K%6Adj#`vL&(@u88hi*4Y}_ zy6D1+fsXJiMQ1KK{X3ofO1>k!N$q5NbccN&S7Ug<@6=ItMBTCId|Cp}M7O2s?1KDK T_@idvHP31hmL}u8yYBQCEAp0d delta 533 zcmZ9}OG^S#6u|Lw)mx;Qj^ii>VT+3C;UgDOqdg3w2NlRv(4uG-QyMjqIYLB1ivo#? zxILgxQ3!1#TJ#~@1Z~>2Y9lQ=UKeJ|`@8>hIdES>Poak|YuGirspYkZnagZNR6Q3b z(4=NI3@vA7bpqk~+XQ=PY%3;gpM+%DTf>$`)!B7Jj9gU?HXN@8i;ZiREy;WalY5RvD)Rvyo_R^|eTy+$P(^+Gr@8&Xb4uTB=V23`C zV2J&+7@hGyl7Lnih9HbU2aG}wj6oEVFaYE1()CCtSkgUAr-8x@i;8}B?@rP=aKJo! zcc(}SZzVP<$aE2lC0?8f3R&h}LSI2&KQp}wIYt-Rt2ahZus`L!AT5vr?++xIo}*uIf0h*d Ru*&W(pGibwp}|7zd{c0}F!!13!c6WOdvYVkOi4Ycs6J5C04Qq6 zAje?Dpu%80*_gAM(QNX1PFq$h237{^$saib8SQ|4(a8~98mvx0F=wEd_~bcUR*Y_7 z@i#zmFQB+LSlocyiqQ`&-oUNF8Uz#%28$m7iib`9&uz;Z1r&>(?8p`z^Mxk>0GO~WVE_OC delta 197 zcmX>ibwp}|7zd{^0}F#Z13!bxWO237{E$saib8Et`l(a8~98mx{$F(;sy_~bcUR*bG- z@i#zmPoTILSlocyiqRJ=-oUNF8VD2*0*fC3iib}A&uz;Z2^5Q(?8pur^Mxk>0E*!(KmY&$ diff --git a/target/classes/runner/services/AccountServices.class b/target/classes/runner/services/AccountServices.class index f22f0718436263bb8e5705c170183b26d777e74e..0b0b92b54d62825ee33a9329a4ebe68c91c7f725 100644 GIT binary patch literal 11214 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 G*Ixjj>8||% delta 4407 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 i2Sm5g9=e^sUB1h6X~Rn#(UWuS^K~2Y2rMzVn^$ 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 Jy#16u_&IkX(tiK| diff --git a/target/test-classes/runner/controllers/AccountControllerTest.class b/target/test-classes/runner/controllers/AccountControllerTest.class index f8b0cefb1666519886bd6326d40ce433c4a6d8c0..a8773133e80ad59e931876f039215229bb7ca74b 100644 GIT binary patch delta 2734 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 EKeYRZdH?_b delta 3218 zcmbVO33yc175>l6B=6134aL!q^a~L}5-CSe37ab{4K z+E-h(wXIq@-AngYYgZ97nTVimZL5GwTNSr1Ze0|$tqR?={qK8|%mf5!^L=^u-gEA~ z@BHWg&v|oe>-JWA-woDTzJD8dW7l=k;Vn8OXl+l2tvtNOdcsVJ|y4E;(6dNx$JQD=t%b zH`b)9teSV0D;X~phMcZsf=pCWDU*~`Np<>SYl>YXXBaYB$rL%$kh7H3N}VB7m7Fa> zLqbZX$#j9QCK&5Bq+aJ{h9M0~W=f-yS<R2f3CP&FRQXv?Ve`9-}e&4yWAich1g1Jy%zDR=U?Im|gBE7t{CLJH= zPj6H6J)O~AdsLlecd?Rz5>^DW2f=%|D(3iJjvk%l0^23D0Th`tQVq^X=ADsLJ0scV znHc9DT*@aocI;%`8A-1*l1f0aKM1H_K2zyr*`&Hnbm{^H%hrdfxSTUZFEAEYU^7R- z7Vh_O|6OHU?b5D6j2S?A?d{J0*ddJfV0CUaF1Ol^iY_aQ;=t*F33N>yMCAY`)$T@> zYpxE|&^$?>8pIg`m`K-T*EJ<@X5g$qZJ=%tQwMN%-VqE0>9B`Ap`8rP108;l`2-qK zjagX4{H{kcVa&$WXu+p22e+`9+=F@SAMoS;q8(K1$z2*J5l9wk*`UiNcCVX=) z8z1D{56=-K3|!@NB&rqiA(}sI^C8TvBM8p-@-{7=&XJ@n&EWiFlhW=crDGWVG8g>? zf$9@tFDImqVeEwK*Y970a@I>NtEHLsvH+KGQ-s^X%)nZ#U|nbtk7HcR3ea^PjjrQZ zbUY@wW(3?#IdE-xaJGw13iv)6+VbP@SVn2Kj9{sP$+xXT8H;ubC0oz3Z6aYU*htC7 zDbxND7<2M4LTD?%VZgKPI4G_q3NLH+>G7x9p-iD_--;kt&r2OuPtM@NV+ma064?1R zs&;u@oiEN>SemnYsk!?|;67I9eyZ^R```WiQawQU`w96$HkpS;00UcdC>2xTD)l40 z#YcLUj25Ir*+*TloFB+lY>JfWiq+8Ve8uLl=jnS3;CW|b;3QGIl#fQuU>+vuM^J6! zQPO#kYJ7~yAE!>Aphgc8{gaIQsRGog5!CBW0`+wxsBa+Ex`J2cg<4RB_Hb`>d`e?fNC6nOM<_Q%JB?a?Xzq-&#}2Y?*MSW8M@8rZ^kIHZ07^x zv=6!jA3Mpoj~8~)iNk)EQ-1|v+iu)1Fzy!__aVmp661dP?czQv?2rGyVcWTM>rQ`y zbRQ!kH|$p#_G=9Lb%uSIVITRQ!uH@3?2v4Q*E?m?Oa^Zt1vm1yM-rdJc0G^qE1Blx b(=R^g diff --git a/target/test-classes/runner/entities/CustomerEntityTest.class b/target/test-classes/runner/entities/CustomerEntityTest.class index be8e6769368923f960d2ae8b096691703f0ecda5..baeaa1142bc1980e46715ba3cd0f91875dfbc5f6 100644 GIT binary patch delta 1208 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 diff --git a/target/test-classes/runner/services/TransactionServicesTest.class b/target/test-classes/runner/services/TransactionServicesTest.class index 183c0c7386890a160276dce1fbd6280c55885470..943152d62b29adf89b892d461bff88c5eb704400 100644 GIT binary patch delta 1484 zcmbW0*>_V_6vlryLr;2p%8X;TUnm6Td>2#AW- znTzv;BTlHLC5^OzBP!}z{u93Wz=Nw#E|>e<8Ti^jZU%*!EOQM_tVGq5$a zC7VhQj7;tHSwo{k{yNKYWjD6>3}~+4O3fk`D_+yQ&Ku5e z!RU-PHE*#`vy`_rmvQ-?in`hFnAp1(!N#WMmW1Lx&HH>{p;BGx?w(Aq6m~3s%@T8K zzt9pb%}tG(4_!`grl&jImC`I>u_nPKijOoO^NHqD4k$j;e9jln_KN29BOKI>GNw4B z$#Xz6PC@e}hcy#SYL0MJbBsyFSDLT+#uWTk@tx`Kd(Clv(EP|xniGcovmyM#m=jQ| zoV5DW$~qmPet%nEcJz4YcYm%$UIv&&N>^Ac6jUMpQt_CG-jkuH*Vog$L;A*kjBXAAXE9KK-mE88R+*w$?E)hZ(tRRr%MAobw< z*cfNavE>Bi)aI#co15pH;67AfKLLM%b4`f=M#D7xViysSam*UJ_^&)Ept&@oS2mVD=aeZrf);CDpqP^7J6qRnFy%VTpcvkQT(WKw&uD(4P z@X&chmuI%>&NHXIkaOkOc^dLu5aGhjGA$tm^TZ0w9cNyfeEmmlpuqe*7q1b;4fEs_ zhzndGaDfLK1vYxHNnn$}@&Nq1`0N zSK5oG{N|GKKZ?qSUFFRs<)WdeT#!+2Tv>TZc&x+S;VJainoF|H|Et$oJtID7_U(xq zE{a=G61U-$;(V-^J3cyG$q9K!Ng2c~omg2qxz*q_8@Nrt?Gj9L2Pwf_o%pk)vvg1u3=|6=JQDCTS_uqDiUNEhs8l zcLFM|xZ;8f6w*iq+!y5E@XZIF`1s(*k8|#g?Snj-&*#ki?#!H-`OTS}tvOSZIraCk z6F>{69Tt#KBpqxLMKsZ8M1L`x8BlC-*vg=T;%;LeQfza$hkHY$ibyjYY>P@7`Gwf- zP|Qfc`@{}$pNY6X#HhLXfDsQmJjBBek7UR=?BLN5k12MVi;o-egu|2UGU6#Co;G#I zOb5>dPoD7-o3Ljcp5uAre8J&GUNTvCn|xVg+hfFDBVG>iisDs^(&1EWC>@Ir4{RHX zBvT^;<3VfGw)Tzh@P+OAHrg%bY>AD;!rO-j2E(gk>CKVku;waOXf9`&;x*0dykSw5 zovo|pD&Ew*#oL-T_G_--N{fnYS5d_##XH9Hu0^1+skx<9@t)>=KCn=+-gqL}*Kh88 zDDKvl=B7r?0oT{xmrTTaW18hG(=^kf_(=0HpD6ZeKINd|GtK9Gk=+|?-tZ-dG=~{i z9MK%*peDzJCeK%zV@ztk=D6krlZum?Z}`^K{7&(`Y3&EikNl+hnO`)&n&?v|;5Wvz z3)PyE(&;g@r&6)ej)81K{b{ALJ)uE6k{mxB`rX&rBr5~vrKMFYS_K6~U*a`%k#i>?*3Ndb$wPNa5mfK^;CUlun=sLjgkiWyxQ zJ34`Hf|8>I>Lw|UmQk8Vm&`p(`OG|_l8Q;DLn;r+eH)X1zEpq)S)fMd$u`zY`<+4{ zB?P8xrVBOyCAHeEzs9RCcxMK`B!oqEN0=wakrR+pnPYy(r8%ks`%(S__KIMxuTXRTor_8kNX#K_t(GVsdiS=2%q5;;k}AF$8j4 zoad4W>N@1BK(^gu>(3)(>(_~>t(TK$iNK`-mwGTPFzmqwfeiu+Z;@R)E1WU>tG!kW z{5wV8ER(V5X9*EO_S9;5G;f)r`A31~m`k&9il%g2pee}EH0m5Q>o&R%_Fr~XnoII@ z|C`+U+2N6Ca$^N@tER~HoRgf*tuhds+g!@6vNRiH5F5L((nPu4;5gmfA)rT$aqi?U P!JE4ArHQ5KO%wkI$|Dmy