Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
@@ -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 {
Expand All @@ -13,7 +12,8 @@ public class ProjectResponse {
private String name;
private TicketsSummary tickets;

@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public static class TicketsSummary {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
import jakarta.validation.constraints.Size;
import lombok.*;

@Data
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class UserRequest {

@NotBlank
Expand Down
Original file line number Diff line number Diff line change
@@ -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", "[email protected]");

when(repo.findById(1L)).thenReturn(Optional.of(user));

UserResponse result = service.getById(1L);

assertEquals(1L, result.getId());
assertEquals("John", result.getName());
assertEquals("[email protected]", 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", "[email protected]");
User saved = new User(1L, "John", "[email protected]");

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("[email protected]", result.getEmail());

verify(repo).create(any(User.class));
}

@Test
void create_shouldThrowWhenEmailExists() {
User existing = new User(1L, "John", "[email protected]");
UserRequest request = new UserRequest("Jane", "[email protected]");

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", "[email protected]");

when(repo.findById(1L)).thenReturn(Optional.of(user));

service.delete(1L);

verify(repo).delete(1L);
}
}
Loading