From b47fd39c7f9d67c1c1568226f42d34fba3c39354 Mon Sep 17 00:00:00 2001 From: Dagim02 Date: Wed, 17 Jun 2026 17:52:03 +0200 Subject: [PATCH] Replace @Data with @Getter/@Setter and fix dotenv initialization --- .../TicketTrackingSystemApplication.java | 11 +-- .../dto/project/ProjectRequest.java | 7 +- .../dto/project/ProjectResponse.java | 10 +- .../dto/user/UserRequest.java | 5 +- .../service/UserServiceTest.java | 92 ++++++++++++++++++- 5 files changed, 108 insertions(+), 17 deletions(-) diff --git a/src/main/java/net/hackyourfuture/tickettrackingsystem/TicketTrackingSystemApplication.java b/src/main/java/net/hackyourfuture/tickettrackingsystem/TicketTrackingSystemApplication.java index 3bd0d00..9ad27a9 100644 --- a/src/main/java/net/hackyourfuture/tickettrackingsystem/TicketTrackingSystemApplication.java +++ b/src/main/java/net/hackyourfuture/tickettrackingsystem/TicketTrackingSystemApplication.java @@ -13,12 +13,11 @@ public static void main(String[] args) { Dotenv dotenv = Dotenv.load(); - System.setProperty("DB_URL", dotenv.get("DB_URL")); - System.setProperty("DB_USERNAME", dotenv.get("DB_USERNAME")); - System.setProperty("DB_PASSWORD", dotenv.get("DB_PASSWORD")); - System.setProperty("EMAIL_API_KEY", dotenv.get("EMAIL_API_KEY")); - System.setProperty("EMAIL_FROM", dotenv.get("EMAIL_FROM")); - + System.out.println("DB_URL=" + dotenv.get("DB_URL")); + System.out.println("DB_USERNAME=" + dotenv.get("DB_USERNAME")); + System.out.println("DB_PASSWORD=" + dotenv.get("DB_PASSWORD")); + System.out.println("EMAIL_API_KEY=" + dotenv.get("EMAIL_API_KEY")); + System.out.println("EMAIL_FROM=" + dotenv.get("EMAIL_FROM")); SpringApplication.run(TicketTrackingSystemApplication.class, args); } diff --git a/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/project/ProjectRequest.java b/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/project/ProjectRequest.java index c2d51aa..53d61a1 100644 --- a/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/project/ProjectRequest.java +++ b/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/project/ProjectRequest.java @@ -2,11 +2,10 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.AllArgsConstructor; +import lombok.*; -@Data +@Getter +@Setter @NoArgsConstructor @AllArgsConstructor public class ProjectRequest { diff --git a/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/project/ProjectResponse.java b/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/project/ProjectResponse.java index 1cd8829..f617674 100644 --- a/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/project/ProjectResponse.java +++ b/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/project/ProjectResponse.java @@ -1,10 +1,9 @@ package net.hackyourfuture.tickettrackingsystem.dto.project; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; -@Data +@Getter +@Setter @NoArgsConstructor @AllArgsConstructor public class ProjectResponse { @@ -13,7 +12,8 @@ public class ProjectResponse { private String name; private TicketsSummary tickets; - @Data + @Getter + @Setter @NoArgsConstructor @AllArgsConstructor public static class TicketsSummary { diff --git a/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/user/UserRequest.java b/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/user/UserRequest.java index 5db2dd3..6f4a9ef 100644 --- a/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/user/UserRequest.java +++ b/src/main/java/net/hackyourfuture/tickettrackingsystem/dto/user/UserRequest.java @@ -6,7 +6,10 @@ import jakarta.validation.constraints.Size; import lombok.*; -@Data +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor public class UserRequest { @NotBlank diff --git a/src/test/java/net/hackyourfuture/tickettrackingsystem/service/UserServiceTest.java b/src/test/java/net/hackyourfuture/tickettrackingsystem/service/UserServiceTest.java index 6f85404..4c279fe 100644 --- a/src/test/java/net/hackyourfuture/tickettrackingsystem/service/UserServiceTest.java +++ b/src/test/java/net/hackyourfuture/tickettrackingsystem/service/UserServiceTest.java @@ -1,4 +1,94 @@ package net.hackyourfuture.tickettrackingsystem.service; -public class UserServiceTest { +import net.hackyourfuture.tickettrackingsystem.dto.user.UserRequest; +import net.hackyourfuture.tickettrackingsystem.dto.user.UserResponse; +import net.hackyourfuture.tickettrackingsystem.exception.NotFoundException; +import net.hackyourfuture.tickettrackingsystem.exception.ValidationException; +import net.hackyourfuture.tickettrackingsystem.model.User; +import net.hackyourfuture.tickettrackingsystem.repository.UserRepository; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.List; +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class UserServiceTest { + + @Mock + private UserRepository repo; + + @InjectMocks + private UserService service; + + @Test + void getById_shouldReturnUser() { + User user = new User(1L, "John", "john@test.com"); + + when(repo.findById(1L)).thenReturn(Optional.of(user)); + + UserResponse result = service.getById(1L); + + assertEquals(1L, result.getId()); + assertEquals("John", result.getName()); + assertEquals("john@test.com", result.getEmail()); + } + + @Test + void getById_shouldThrowWhenUserNotFound() { + when(repo.findById(1L)).thenReturn(Optional.empty()); + + assertThrows(NotFoundException.class, + () -> service.getById(1L)); + } + + @Test + void create_shouldCreateUser() { + UserRequest request = new UserRequest("John", "john@test.com"); + User saved = new User(1L, "John", "john@test.com"); + + when(repo.findByEmail(request.getEmail())) + .thenReturn(Optional.empty()); + + when(repo.create(any(User.class))) + .thenReturn(saved); + + UserResponse result = service.create(request); + + assertEquals("John", result.getName()); + assertEquals("john@test.com", result.getEmail()); + + verify(repo).create(any(User.class)); + } + + @Test + void create_shouldThrowWhenEmailExists() { + User existing = new User(1L, "John", "john@test.com"); + UserRequest request = new UserRequest("Jane", "john@test.com"); + + when(repo.findByEmail(request.getEmail())) + .thenReturn(Optional.of(existing)); + + assertThrows(ValidationException.class, + () -> service.create(request)); + + verify(repo, never()).create(any()); + } + + @Test + void delete_shouldDeleteUser() { + User user = new User(1L, "John", "john@test.com"); + + when(repo.findById(1L)).thenReturn(Optional.of(user)); + + service.delete(1L); + + verify(repo).delete(1L); + } }