package dev.lions.unionflow.server.service; import dev.lions.unionflow.server.api.dto.admin.request.CreateAuditLogRequest; import dev.lions.unionflow.server.api.dto.admin.response.AuditLogResponse; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.TestTransaction; import jakarta.inject.Inject; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import java.time.LocalDateTime; import java.util.List; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; @QuarkusTest class AuditServiceTest { @Inject AuditService auditService; @Test @TestTransaction @DisplayName("enregistrerLog crée un log et retourne un DTO") void enregistrerLog_createsAndReturnsDto() { CreateAuditLogRequest request = CreateAuditLogRequest.builder() .typeAction("TEST_ACTION") .severite("INFO") .utilisateur("test@test.com") .module("TEST") .description("Log de test service") .dateHeure(LocalDateTime.now()) .build(); AuditLogResponse response = auditService.enregistrerLog(request); assertThat(response).isNotNull(); assertThat(response.getId()).isNotNull(); assertThat(response.getTypeAction()).isEqualTo("TEST_ACTION"); assertThat(response.getSeverite()).isEqualTo("INFO"); } @Test @TestTransaction @DisplayName("listerTous retourne une structure paginée") void listerTous_returnsPagedStructure() { Map result = auditService.listerTous(0, 10, "dateHeure", "desc"); assertThat(result).containsKeys("data", "total", "page", "size", "totalPages"); assertThat(result.get("data")).isInstanceOf(List.class); assertThat(result.get("page")).isEqualTo(0); assertThat(result.get("size")).isEqualTo(10); } @Test @TestTransaction @DisplayName("rechercher avec filtres null retourne une structure paginée") void rechercher_withNullFilters_returnsPagedStructure() { Map result = auditService.rechercher( null, null, null, null, null, null, null, 0, 5); assertThat(result).containsKeys("data", "total", "page", "size", "totalPages"); } @Test @TestTransaction @DisplayName("getStatistiques retourne total, success, errors, warnings") void getStatistiques_returnsStats() { Map stats = auditService.getStatistiques(); assertThat(stats).containsKeys("total", "success", "errors", "warnings"); } }