From b16d9b1264d72c6e9c4811c4cffa8ea499ee976f Mon Sep 17 00:00:00 2001 From: xsedlac9 <xsedlac9@muni.cz> Date: Sun, 21 Apr 2024 12:48:39 +0200 Subject: [PATCH] IT for account and user implemented --- .../application/service/AccountService.java | 30 +++-- .../application/service/UserService.java | 2 +- .../user/repository/UserRepository.java | 19 --- .../controller/AccountControllerIT.java | 119 +++++++++++++++--- .../controller/AccountControllerTest.java | 8 +- .../controller/UserControllerIT.java | 77 +++++++++++- .../controller/UserControllerTest.java | 4 +- .../application/facade/AccountFacadeTest.java | 6 +- .../application/facade/UserFacadeTest.java | 4 +- .../service/AccountServiceTest.java | 42 +++++-- .../application/service/UserServiceTest.java | 6 +- 11 files changed, 247 insertions(+), 70 deletions(-) diff --git a/account-management/src/main/java/cz/muni/pa165/banking/application/service/AccountService.java b/account-management/src/main/java/cz/muni/pa165/banking/application/service/AccountService.java index 9c5c179..da8127b 100644 --- a/account-management/src/main/java/cz/muni/pa165/banking/application/service/AccountService.java +++ b/account-management/src/main/java/cz/muni/pa165/banking/application/service/AccountService.java @@ -8,6 +8,7 @@ import cz.muni.pa165.banking.domain.scheduled.ScheduledPaymentProjection; import cz.muni.pa165.banking.domain.scheduled.recurrence.Recurrence; import cz.muni.pa165.banking.domain.scheduled.recurrence.RecurrenceType; import cz.muni.pa165.banking.domain.scheduled.repository.ScheduledPaymentRepository; +import cz.muni.pa165.banking.domain.user.repository.UserRepository; import cz.muni.pa165.banking.exception.EntityNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,34 +20,47 @@ import java.util.stream.Collectors; @Service public class AccountService { - + private final SystemServiceApi balanceApi; - + private final AccountRepository accountRepository; - + + private final UserRepository userRepository; + private final ScheduledPaymentRepository scheduledPaymentsRepository; - public AccountService(SystemServiceApi balanceApi, AccountRepository accountRepository, ScheduledPaymentRepository scheduledPaymentsRepository){ + public AccountService(SystemServiceApi balanceApi, AccountRepository accountRepository, UserRepository userRepository, ScheduledPaymentRepository scheduledPaymentsRepository){ this.balanceApi = balanceApi; this.accountRepository = accountRepository; + this.userRepository = userRepository; this.scheduledPaymentsRepository = scheduledPaymentsRepository; } - - public Account createAccount(Account newAccount){ + + public Account createAccount(Account newAccount) { + if (!userRepository.existsById(newAccount.getUserId())) { + throw new EntityNotFoundException("User with id: " + newAccount.getUserId() + " was not found."); + } + balanceApi.createBalance(newAccount.getAccountNumber()); return accountRepository.save(newAccount); } - public Account findById(Long accountId) throws EntityNotFoundException { + public Account findById(Long accountId){ return accountRepository.findById(accountId) .orElseThrow(() -> new EntityNotFoundException("Account with id: " + accountId + " was not found.")); } - public Account findByNumber(String accountNumber) throws EntityNotFoundException { + public Account findByNumber(String accountNumber){ return accountRepository.findByAccountNumber(accountNumber) .orElseThrow(() -> new EntityNotFoundException("Account with number: " + accountNumber + " was not found.")); } public ScheduledPayment schedulePayment(ScheduledPayment newScheduledPayment) { + if (!accountRepository.existsById(newScheduledPayment.getSourceAccountId())){ + throw new EntityNotFoundException("Account with id: " + newScheduledPayment.getSourceAccountId() + " was not found." +" id1: "+ newScheduledPayment.getId()); + } + if (!accountRepository.existsById(newScheduledPayment.getTargetAccountId())){ + throw new EntityNotFoundException("Account with id: " + newScheduledPayment.getTargetAccountId() + " was not found." +" id2: "+ newScheduledPayment.getId()); + } return scheduledPaymentsRepository.save(newScheduledPayment); } diff --git a/account-management/src/main/java/cz/muni/pa165/banking/application/service/UserService.java b/account-management/src/main/java/cz/muni/pa165/banking/application/service/UserService.java index e1d56ce..7c80563 100644 --- a/account-management/src/main/java/cz/muni/pa165/banking/application/service/UserService.java +++ b/account-management/src/main/java/cz/muni/pa165/banking/application/service/UserService.java @@ -15,7 +15,7 @@ public class UserService { } public User createUser(User user){ - return userRepository.addUser(user); + return userRepository.save(user); } public User findById(Long userId) throws EntityNotFoundException { diff --git a/account-management/src/main/java/cz/muni/pa165/banking/domain/user/repository/UserRepository.java b/account-management/src/main/java/cz/muni/pa165/banking/domain/user/repository/UserRepository.java index 88b2df0..8d2db82 100644 --- a/account-management/src/main/java/cz/muni/pa165/banking/domain/user/repository/UserRepository.java +++ b/account-management/src/main/java/cz/muni/pa165/banking/domain/user/repository/UserRepository.java @@ -10,23 +10,4 @@ import java.util.Optional; @Repository public interface UserRepository extends JpaRepository<User, Long> { - /** - * Adds a new user to the repository. - * - * @param user the user to add - * @return newly created user - */ - default User addUser(User user){ - return saveAndFlush(user); - } - - /** - * Retrieves a user by their ID. - * - * @param id the ID of the user to retrieve - * @return the user with the specified ID, or null if no such user exists - */ - @Query("SELECT u FROM User u where u.id = :id") - Optional<User> findById(Long id); - } diff --git a/account-management/src/test/java/cz/muni/pa165/banking/application/controller/AccountControllerIT.java b/account-management/src/test/java/cz/muni/pa165/banking/application/controller/AccountControllerIT.java index 340278b..2199537 100644 --- a/account-management/src/test/java/cz/muni/pa165/banking/application/controller/AccountControllerIT.java +++ b/account-management/src/test/java/cz/muni/pa165/banking/application/controller/AccountControllerIT.java @@ -7,6 +7,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import cz.muni.pa165.banking.domain.account.Account; +import cz.muni.pa165.banking.domain.account.AccountType; import cz.muni.pa165.banking.domain.account.repository.AccountRepository; import cz.muni.pa165.banking.domain.scheduled.repository.ScheduledPaymentRepository; import cz.muni.pa165.banking.domain.user.User; @@ -20,8 +22,10 @@ import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import java.nio.charset.StandardCharsets; +import java.util.Currency; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -37,15 +41,12 @@ class AccountControllerIT { @Autowired private AccountRepository accountRepository; - - @Autowired - private ScheduledPaymentRepository scheduledPaymentRepository; + @BeforeAll public static void initDb( @Autowired UserRepository userRepository, - @Autowired AccountRepository accountRepository, - @Autowired ScheduledPaymentRepository scheduledPaymentRepository + @Autowired AccountRepository accountRepository ) { User user = new User(); user.setId(1L); @@ -54,21 +55,111 @@ class AccountControllerIT { user.setFirstName("Jozko"); user.setLastName("Mrkvicka"); userRepository.save(user); - } - - private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper() - .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) - .registerModule(new JavaTimeModule()) - .setPropertyNamingStrategy(new PropertyNamingStrategies.SnakeCaseStrategy()) - .setSerializationInclusion(JsonInclude.Include.NON_NULL); + User user2 = new User(); + user2.setId(2L); + user2.setEmail("123@eemail.cz"); + user2.setPassword("pass123"); + user2.setFirstName("Jozko"); + user2.setLastName("Mrkvicka"); + userRepository.save(user2); + + Account account = new Account(); + account.setId(1L); + account.setUserId(1L); + account.setAccountNumber("1"); + account.setType(AccountType.CREDIT); + account.setCurrency(Currency.getInstance("CZK")); + accountRepository.save(account); + + Account account2 = new Account(); + account2.setId(2L); + account2.setUserId(2L); + account2.setAccountNumber("2"); + account2.setType(AccountType.CREDIT); + account2.setCurrency(Currency.getInstance("CZK")); + accountRepository.save(account2); + } @Test - void createAccount_returnsCreated() throws Exception { + void createAccount_userExists_returnsCreated() throws Exception { mockMvc.perform(post("/account") .contentType(MediaType.APPLICATION_JSON) .content("{\"userId\":1,\"type\":\"SAVING\",\"maxSpendingLimit\":1000, \"currency\": \"CZK\"}")) - .andExpect(status().is(201)) + .andExpect(status().isCreated()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } + + @Test + void createAccount_userNotExist_returnsNotFound() throws Exception { + mockMvc.perform(post("/account") + .contentType(MediaType.APPLICATION_JSON) + .content("{\"userId\":3,\"type\":\"SAVING\",\"maxSpendingLimit\":1000, \"currency\": \"CZK\"}")) + .andExpect(status().isNotFound()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } + + @Test + void findAccountById_accountFound_returnsOk() throws Exception { + mockMvc.perform(get("/account?accountId=1") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } + + @Test + void findAccountById_accountNotFound_returnsNotFound() throws Exception { + mockMvc.perform(get("/account?accountId=3") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isNotFound()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } + + @Test + void getScheduledPayments_accountFound_returnsOk() throws Exception { + mockMvc.perform(get("/account/scheduled?accountNumber=1") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } + + @Test + void getScheduledPayments_accountNotFound_returnsNotFound() throws Exception { + mockMvc.perform(get("/account/scheduled?accountNumber=3") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isNotFound()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } + + @Test + void schedulePayment_accountFound_returnsCreated() throws Exception { + mockMvc.perform(post("/account/scheduled") + .contentType(MediaType.APPLICATION_JSON) + .content("{\"id\":1,\"senderAccountId\":1, \"receiverAccountId\":2, \"amount\":1}")) + .andExpect(status().isCreated()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } + + @Test + void schedulePayment_accountNotFound_returnsNotFound() throws Exception { + mockMvc.perform(post("/account/scheduled") + .contentType(MediaType.APPLICATION_JSON) + .content("{\"id\":1,\"senderAccountId\":1, \"receiverAccountId\":3, \"amount\":1}")) + .andExpect(status().isNotFound()) .andReturn() .getResponse() .getContentAsString(StandardCharsets.UTF_8); diff --git a/account-management/src/test/java/cz/muni/pa165/banking/application/controller/AccountControllerTest.java b/account-management/src/test/java/cz/muni/pa165/banking/application/controller/AccountControllerTest.java index 41a970e..2280276 100644 --- a/account-management/src/test/java/cz/muni/pa165/banking/application/controller/AccountControllerTest.java +++ b/account-management/src/test/java/cz/muni/pa165/banking/application/controller/AccountControllerTest.java @@ -40,7 +40,7 @@ class AccountControllerTest { } @Test - void getAccount_ValidAccountNumber_ReturnsAccount() throws Exception { + void getAccount_ValidAccountNumber_ReturnsAccount(){ // Arrange Long accountId = 123456789L; AccountDto accountDto = new AccountDto(); @@ -55,7 +55,7 @@ class AccountControllerTest { } @Test - void getAccount_InvalidAccountNumber_ReturnsNull() throws Exception { + void getAccount_InvalidAccountNumber_ReturnsNull() { // Arrange Long invalidId = 123456789L; when(accountFacade.findById(invalidId)).thenReturn(null); @@ -69,7 +69,7 @@ class AccountControllerTest { } @Test - void getScheduledPayments_ValidAccountNumber_ReturnsPayments() throws Exception { + void getScheduledPayments_ValidAccountNumber_ReturnsPayments(){ // Arrange String accountNumber = "123456789"; ScheduledPaymentsDto scheduledPaymentsDto = new ScheduledPaymentsDto(); @@ -84,7 +84,7 @@ class AccountControllerTest { } @Test - void getScheduledPayments_InvalidAccountNumber_ReturnsNull() throws Exception { + void getScheduledPayments_InvalidAccountNumber_ReturnsNull(){ // Arrange String invalidAccountNumber = "123456789"; when(accountFacade.findScheduledPaymentsByNumber(invalidAccountNumber)).thenReturn(null); diff --git a/account-management/src/test/java/cz/muni/pa165/banking/application/controller/UserControllerIT.java b/account-management/src/test/java/cz/muni/pa165/banking/application/controller/UserControllerIT.java index f793f1c..26b9d80 100644 --- a/account-management/src/test/java/cz/muni/pa165/banking/application/controller/UserControllerIT.java +++ b/account-management/src/test/java/cz/muni/pa165/banking/application/controller/UserControllerIT.java @@ -1,10 +1,85 @@ package cz.muni.pa165.banking.application.controller; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; + +import cz.muni.pa165.banking.domain.account.Account; +import cz.muni.pa165.banking.domain.account.AccountType; +import cz.muni.pa165.banking.domain.account.repository.AccountRepository; +import cz.muni.pa165.banking.domain.scheduled.repository.ScheduledPaymentRepository; +import cz.muni.pa165.banking.domain.user.User; +import cz.muni.pa165.banking.domain.user.repository.UserRepository; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; + +import java.nio.charset.StandardCharsets; +import java.util.Currency; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + @SpringBootTest @AutoConfigureMockMvc class UserControllerIT { -} \ No newline at end of file + @Autowired + private MockMvc mockMvc; + + @Autowired + private UserRepository userRepository; + + @BeforeAll + public static void initDb( + @Autowired UserRepository userRepository + ) { + User user = new User(); + user.setId(1L); + user.setEmail("email@example.org"); + user.setPassword("pass123"); + user.setFirstName("Jozko"); + user.setLastName("Mrkvicka"); + userRepository.save(user); + } + + @Test + void createUser_returnsCreated() throws Exception { + mockMvc.perform(post("/user") + .contentType(MediaType.APPLICATION_JSON) + .content("{\"email\":\"123@email.cz\",\"password\":\"passwd123\",\"firstName\":\"Joe\", \"lastName\": \"Mama\", \"userType\": \"REGULAR\"}")) + .andExpect(status().isCreated()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } + + @Test + void findUserById_userFound_returnsOk() throws Exception { + mockMvc.perform(get("/user?userId=1") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } + + @Test + void findUserById_userNotFound_returnsNotFound() throws Exception { + mockMvc.perform(get("/user?userId=3") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isNotFound()) + .andReturn() + .getResponse() + .getContentAsString(StandardCharsets.UTF_8); + } +} diff --git a/account-management/src/test/java/cz/muni/pa165/banking/application/controller/UserControllerTest.java b/account-management/src/test/java/cz/muni/pa165/banking/application/controller/UserControllerTest.java index 52c421b..a2f8ad9 100644 --- a/account-management/src/test/java/cz/muni/pa165/banking/application/controller/UserControllerTest.java +++ b/account-management/src/test/java/cz/muni/pa165/banking/application/controller/UserControllerTest.java @@ -37,7 +37,7 @@ class UserControllerTest { } @Test - void getUser_ValidUserId_ReturnsUser() throws Exception { + void getUser_ValidUserId_ReturnsUser(){ // Arrange Long userId = 1L; UserDto userDto = new UserDto(); @@ -52,7 +52,7 @@ class UserControllerTest { } @Test - void getUser_InvalidUserId_ReturnsNull() throws Exception { + void getUser_InvalidUserId_ReturnsNull() { // Arrange Long userId = 123L; when(userFacade.findById(userId)).thenReturn(null); diff --git a/account-management/src/test/java/cz/muni/pa165/banking/application/facade/AccountFacadeTest.java b/account-management/src/test/java/cz/muni/pa165/banking/application/facade/AccountFacadeTest.java index 8f868fe..e17ced8 100644 --- a/account-management/src/test/java/cz/muni/pa165/banking/application/facade/AccountFacadeTest.java +++ b/account-management/src/test/java/cz/muni/pa165/banking/application/facade/AccountFacadeTest.java @@ -64,7 +64,7 @@ class AccountFacadeTest { } @Test - void getAccount_ValidAccountNumber_ReturnsAccountDto() throws Exception { + void getAccount_ValidAccountNumber_ReturnsAccountDto(){ // Arrange Long accountId = 123456789L; AccountDto accountDto = new AccountDto(); @@ -81,7 +81,7 @@ class AccountFacadeTest { } @Test - void getAccount_InvalidAccountNumber_ReturnsNull() throws Exception { + void getAccount_InvalidAccountNumber_ReturnsNull(){ // Arrange Long invalidId = 123456789L; when(accountService.findById(invalidId)).thenReturn(null); @@ -106,7 +106,7 @@ class AccountFacadeTest { } @Test - void getScheduledPaymentsOfAccount_ValidAccountNumber_ReturnsPayments() throws Exception { + void getScheduledPaymentsOfAccount_ValidAccountNumber_ReturnsPayments() { // Arrange String validAccountNumber = "123456789"; ScheduledPaymentsDto scheduledPaymentsDto = new ScheduledPaymentsDto(); diff --git a/account-management/src/test/java/cz/muni/pa165/banking/application/facade/UserFacadeTest.java b/account-management/src/test/java/cz/muni/pa165/banking/application/facade/UserFacadeTest.java index 13e8a8e..1ed9d32 100644 --- a/account-management/src/test/java/cz/muni/pa165/banking/application/facade/UserFacadeTest.java +++ b/account-management/src/test/java/cz/muni/pa165/banking/application/facade/UserFacadeTest.java @@ -48,7 +48,7 @@ class UserFacadeTest { } @Test - void getUser_ValidUserId_ReturnsUserDto() throws Exception { + void getUser_ValidUserId_ReturnsUserDto(){ // Arrange Long userId = 1L; UserDto userDto = new UserDto(); @@ -65,7 +65,7 @@ class UserFacadeTest { } @Test - void getUser_InvalidUserId_ReturnsNull() throws Exception { + void getUser_InvalidUserId_ReturnsNull(){ // Arrange Long invalidUserId = 123L; when(userService.findById(invalidUserId)).thenReturn(null); diff --git a/account-management/src/test/java/cz/muni/pa165/banking/application/service/AccountServiceTest.java b/account-management/src/test/java/cz/muni/pa165/banking/application/service/AccountServiceTest.java index a17558a..2a33198 100644 --- a/account-management/src/test/java/cz/muni/pa165/banking/application/service/AccountServiceTest.java +++ b/account-management/src/test/java/cz/muni/pa165/banking/application/service/AccountServiceTest.java @@ -5,6 +5,10 @@ import cz.muni.pa165.banking.domain.account.repository.AccountRepository; import cz.muni.pa165.banking.domain.scheduled.ScheduledPayment; import cz.muni.pa165.banking.domain.scheduled.ScheduledPaymentProjection; import cz.muni.pa165.banking.domain.scheduled.repository.ScheduledPaymentRepository; +import cz.muni.pa165.banking.domain.user.User; +import cz.muni.pa165.banking.domain.user.repository.UserRepository; +import cz.muni.pa165.banking.exception.EntityNotFoundException; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; @@ -15,8 +19,7 @@ import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) class AccountServiceTest { @@ -24,6 +27,9 @@ class AccountServiceTest { @Mock private AccountRepository accountRepository; + @Mock + private UserRepository userRepository; + @Mock private ScheduledPaymentRepository scheduledPaymentRepository; @@ -34,6 +40,11 @@ class AccountServiceTest { void createAccount_ValidAccount_ReturnsAccount() { // Arrange Account account = new Account(); + account.setId(1L); + account.setAccountNumber("123"); + account.setUserId(1L); + + when(userRepository.existsById(anyLong())).thenReturn(true); when(accountRepository.save(account)).thenReturn(account); // Act @@ -45,7 +56,7 @@ class AccountServiceTest { } @Test - void getAccount_ValidAccountId_ReturnsAccount() throws Exception { + void getAccount_ValidAccountId_ReturnsAccount(){ // Arrange Long accountId = 1L; Account account = new Account(); @@ -60,13 +71,13 @@ class AccountServiceTest { } @Test - void getAccountById_InvalidAccountId_ThrowsException() throws Exception { + void getAccountById_InvalidAccountId_ThrowsException(){ // Arrange Long accountId = 1L; when(accountRepository.findById(accountId)).thenReturn(Optional.empty()); // Act & Assert - assertThrows(Exception.class, () -> { + assertThrows(EntityNotFoundException.class, () -> { accountService.findById(accountId); }); @@ -74,7 +85,7 @@ class AccountServiceTest { } @Test - void getAccountByNumber_ValidAccountNumber_ReturnsAccount() throws Exception { + void getAccountByNumber_ValidAccountNumber_ReturnsAccount(){ // Arrange String accountNumber = "123456789"; Account account = new Account(); @@ -89,13 +100,13 @@ class AccountServiceTest { } @Test - void getAccountByNumber_InvalidAccountNumber_ThrowsException() throws Exception { + void getAccountByNumber_InvalidAccountNumber_ThrowsException(){ // Arrange String accountNumber = "123456789"; when(accountRepository.findByAccountNumber(accountNumber)).thenReturn(Optional.empty()); // Act & Assert - assertThrows(Exception.class, () -> { + assertThrows(EntityNotFoundException.class, () -> { accountService.findByNumber(accountNumber); }); verify(accountRepository).findByAccountNumber(accountNumber); @@ -105,6 +116,11 @@ class AccountServiceTest { void schedulePayment_ValidScheduledPayment_ReturnsScheduledPayment() { // Arrange ScheduledPayment scheduledPayment = new ScheduledPayment(); + scheduledPayment.setId(1L); + scheduledPayment.setSourceAccountId(1L); + scheduledPayment.setTargetAccountId(2L); + + when(accountRepository.existsById(anyLong())).thenReturn(true); when(scheduledPaymentRepository.save(scheduledPayment)).thenReturn(scheduledPayment); // Act @@ -116,14 +132,14 @@ class AccountServiceTest { } @Test - void schedulePayment_InvalidScheduledPayment_ReturnsNull() { + void schedulePayment_InvalidScheduledPayment_ThrowsException(){ // Arrange ScheduledPayment scheduledPayment = new ScheduledPayment(); - when(scheduledPaymentRepository.save(scheduledPayment)).thenReturn(null); // Act & Assert - assertNull(accountService.schedulePayment(scheduledPayment)); - verify(scheduledPaymentRepository).save(scheduledPayment); + assertThrows(EntityNotFoundException.class, () -> { + accountService.schedulePayment(scheduledPayment); + }); } @Test @@ -140,4 +156,4 @@ class AccountServiceTest { // Assert assertEquals(scheduledPayments, result); } -} +} \ No newline at end of file diff --git a/account-management/src/test/java/cz/muni/pa165/banking/application/service/UserServiceTest.java b/account-management/src/test/java/cz/muni/pa165/banking/application/service/UserServiceTest.java index 01e65e7..eb88965 100644 --- a/account-management/src/test/java/cz/muni/pa165/banking/application/service/UserServiceTest.java +++ b/account-management/src/test/java/cz/muni/pa165/banking/application/service/UserServiceTest.java @@ -27,18 +27,18 @@ class UserServiceTest { void createUser_ValidUser_ReturnsUser() { // Arrange User user = new User(); - when(userRepository.addUser(user)).thenReturn(user); + when(userRepository.save(user)).thenReturn(user); // Act User result = userService.createUser(user); // Assert assertEquals(user, result); - verify(userRepository).addUser(user); + verify(userRepository).save(user); } @Test - void getUser_ValidUserId_ReturnsUser() throws Exception { + void getUser_ValidUserId_ReturnsUser(){ // Arrange Long userId = 1L; User user = new User(); -- GitLab