fix tests and silent failures

This commit is contained in:
2026-04-17 13:02:00 -06:00
parent a6056c11e4
commit 46bdd5c3d7
6 changed files with 34 additions and 16 deletions

View File

@@ -410,6 +410,7 @@ public class AuthController {
try { try {
avatarStorageService.deleteAvatar(user); avatarStorageService.deleteAvatar(user);
} catch (IOException e) { } catch (IOException e) {
log.warn("Failed to delete avatar for user {}: {}", user.getId(), e.getMessage());
} }
user.setAvatarUrl(null); user.setAvatarUrl(null);
userRepository.save(user); userRepository.save(user);

View File

@@ -326,17 +326,25 @@ public class AppointmentService {
AppointmentResponse response = new AppointmentResponse(); AppointmentResponse response = new AppointmentResponse();
response.setAppointmentId(appointment.getAppointmentId()); response.setAppointmentId(appointment.getAppointmentId());
response.setCustomerId(appointment.getCustomer().getId()); if (appointment.getCustomer() != null) {
response.setCustomerName(appointment.getCustomer().getFirstName() + " " + appointment.getCustomer().getLastName()); response.setCustomerId(appointment.getCustomer().getId());
response.setStoreId(appointment.getStore().getStoreId()); response.setCustomerName(appointment.getCustomer().getFirstName() + " " + appointment.getCustomer().getLastName());
response.setStoreName(appointment.getStore().getStoreName()); }
response.setServiceId(appointment.getService().getServiceId()); if (appointment.getStore() != null) {
response.setServiceName(appointment.getService().getServiceName()); response.setStoreId(appointment.getStore().getStoreId());
response.setStoreName(appointment.getStore().getStoreName());
}
if (appointment.getService() != null) {
response.setServiceId(appointment.getService().getServiceId());
response.setServiceName(appointment.getService().getServiceName());
}
response.setAppointmentDate(appointment.getAppointmentDate()); response.setAppointmentDate(appointment.getAppointmentDate());
response.setAppointmentTime(appointment.getAppointmentTime()); response.setAppointmentTime(appointment.getAppointmentTime());
response.setAppointmentStatus(appointment.getAppointmentStatus()); response.setAppointmentStatus(appointment.getAppointmentStatus());
response.setEmployeeId(appointment.getEmployee().getId()); if (appointment.getEmployee() != null) {
response.setEmployeeName(appointment.getEmployee().getFirstName() + " " + appointment.getEmployee().getLastName()); response.setEmployeeId(appointment.getEmployee().getId());
response.setEmployeeName(appointment.getEmployee().getFirstName() + " " + appointment.getEmployee().getLastName());
}
response.setPetName(pet != null ? pet.getPetName() : null); response.setPetName(pet != null ? pet.getPetName() : null);
response.setPetId(pet != null ? pet.getPetId() : null); response.setPetId(pet != null ? pet.getPetId() : null);
response.setCreatedAt(appointment.getCreatedAt()); response.setCreatedAt(appointment.getCreatedAt());

View File

@@ -12,7 +12,7 @@ import com.stripe.exception.StripeException;
import com.stripe.model.PaymentIntent; import com.stripe.model.PaymentIntent;
import com.stripe.param.PaymentIntentCreateParams; import com.stripe.param.PaymentIntentCreateParams;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import jakarta.transaction.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -9,6 +9,8 @@ import com.petshop.backend.exception.BusinessException;
import com.petshop.backend.exception.ResourceNotFoundException; import com.petshop.backend.exception.ResourceNotFoundException;
import com.petshop.backend.repository.CategoryRepository; import com.petshop.backend.repository.CategoryRepository;
import com.petshop.backend.repository.ProductRepository; import com.petshop.backend.repository.ProductRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
@@ -23,6 +25,8 @@ import java.util.Locale;
@Service @Service
public class ProductService { public class ProductService {
private static final Logger log = LoggerFactory.getLogger(ProductService.class);
private final ProductRepository productRepository; private final ProductRepository productRepository;
private final CategoryRepository categoryRepository; private final CategoryRepository categoryRepository;
private final CatalogImageStorageService catalogImageStorageService; private final CatalogImageStorageService catalogImageStorageService;
@@ -152,7 +156,8 @@ public class ProductService {
} }
try { try {
catalogImageStorageService.deleteProductImage(storedImagePath); catalogImageStorageService.deleteProductImage(storedImagePath);
} catch (IOException | IllegalArgumentException ignored) { } catch (IOException | IllegalArgumentException e) {
log.warn("Failed to delete stored image {}: {}", storedImagePath, e.getMessage());
} }
} }

View File

@@ -367,8 +367,11 @@ public class SaleService {
SaleResponse response = new SaleResponse(); SaleResponse response = new SaleResponse();
response.setSaleId(sale.getSaleId()); response.setSaleId(sale.getSaleId());
response.setSaleDate(sale.getSaleDate()); response.setSaleDate(sale.getSaleDate());
response.setEmployeeId(sale.getEmployee().getId());
response.setEmployeeName(sale.getEmployee().getFirstName() + " " + sale.getEmployee().getLastName()); if (sale.getEmployee() != null) {
response.setEmployeeId(sale.getEmployee().getId());
response.setEmployeeName(sale.getEmployee().getFirstName() + " " + sale.getEmployee().getLastName());
}
if (sale.getStore() != null) { if (sale.getStore() != null) {
response.setStoreId(sale.getStore().getStoreId()); response.setStoreId(sale.getStore().getStoreId());

View File

@@ -59,7 +59,7 @@ class UserServiceTest {
User target = user(2L, User.Role.ADMIN); User target = user(2L, User.Role.ADMIN);
authenticate(actor); authenticate(actor);
when(userRepository.findById(2L)).thenReturn(Optional.of(target)); when(userRepository.findByIdForUpdate(2L)).thenReturn(Optional.of(target));
when(userRepository.findById(1L)).thenReturn(Optional.of(actor)); when(userRepository.findById(1L)).thenReturn(Optional.of(actor));
UserRequest request = request(User.Role.ADMIN); UserRequest request = request(User.Role.ADMIN);
@@ -74,7 +74,7 @@ class UserServiceTest {
User target = user(2L, User.Role.ADMIN); User target = user(2L, User.Role.ADMIN);
authenticate(actor); authenticate(actor);
when(userRepository.findById(2L)).thenReturn(Optional.of(target)); when(userRepository.findByIdForUpdate(2L)).thenReturn(Optional.of(target));
UserRequest request = request(User.Role.CUSTOMER); UserRequest request = request(User.Role.CUSTOMER);
@@ -145,6 +145,7 @@ class UserServiceTest {
User actor = user(1L, User.Role.ADMIN); User actor = user(1L, User.Role.ADMIN);
authenticate(actor); authenticate(actor);
when(userRepository.findByIdForUpdate(1L)).thenReturn(Optional.of(actor));
when(userRepository.findById(1L)).thenReturn(Optional.of(actor)); when(userRepository.findById(1L)).thenReturn(Optional.of(actor));
when(userRepository.save(any(User.class))).thenAnswer(invocation -> invocation.getArgument(0)); when(userRepository.save(any(User.class))).thenAnswer(invocation -> invocation.getArgument(0));
@@ -161,7 +162,7 @@ class UserServiceTest {
User target = user(2L, User.Role.CUSTOMER); User target = user(2L, User.Role.CUSTOMER);
authenticate(actor); authenticate(actor);
when(userRepository.findById(2L)).thenReturn(Optional.of(target)); when(userRepository.findByIdForUpdate(2L)).thenReturn(Optional.of(target));
when(userRepository.findById(1L)).thenReturn(Optional.of(actor)); when(userRepository.findById(1L)).thenReturn(Optional.of(actor));
UserRequest request = request(User.Role.ADMIN); UserRequest request = request(User.Role.ADMIN);
@@ -176,7 +177,7 @@ class UserServiceTest {
User target = user(2L, User.Role.CUSTOMER); User target = user(2L, User.Role.CUSTOMER);
authenticate(actor); authenticate(actor);
when(userRepository.findById(2L)).thenReturn(Optional.of(target)); when(userRepository.findByIdForUpdate(2L)).thenReturn(Optional.of(target));
UserRequest request = request(User.Role.ADMIN); UserRequest request = request(User.Role.ADMIN);