package dev.lions.unionflow.server.api.enums.notification;

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

/**
 * Tests unitaires pour PrioriteNotification.
 *
 * @author UnionFlow Team
 * @version 1.0
 * @since 2025-12-09
 */
@DisplayName("Tests PrioriteNotification")
class PrioriteNotificationTest {

  @Test
  @DisplayName("Toutes les priorités doivent avoir un libellé")
  void testToutesLesPrioritesOntLibelle() {
    for (PrioriteNotification priorite : PrioriteNotification.values()) {
      assertThat(priorite.getLibelle()).isNotNull().isNotBlank();
    }
  }

  @Test
  @DisplayName("CRITIQUE doit avoir le libellé correct")
  void testCritique() {
    assertThat(PrioriteNotification.CRITIQUE.getLibelle()).isEqualTo("Critique");
  }

  @Test
  @DisplayName("HAUTE doit avoir le libellé correct")
  void testHaute() {
    assertThat(PrioriteNotification.HAUTE.getLibelle()).isEqualTo("Haute");
  }

  @Test
  @DisplayName("NORMALE doit avoir le libellé correct")
  void testNormale() {
    assertThat(PrioriteNotification.NORMALE.getLibelle()).isEqualTo("Normale");
  }

  @Test
  @DisplayName("BASSE doit avoir le libellé correct")
  void testBasse() {
    assertThat(PrioriteNotification.BASSE.getLibelle()).isEqualTo("Basse");
  }

  @Test
  @DisplayName("Toutes les valeurs de l'enum doivent être présentes")
  void testToutesLesValeurs() {
    assertThat(PrioriteNotification.values()).hasSize(4);
    assertThat(PrioriteNotification.values())
        .containsExactlyInAnyOrder(
            PrioriteNotification.CRITIQUE,
            PrioriteNotification.HAUTE,
            PrioriteNotification.NORMALE,
            PrioriteNotification.BASSE);
  }
}

