package dev.lions.unionflow.server.api.dto.organisation.response;

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

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

/**
 * Tests unitaires pour OrganisationResponse.
 * Vérifie l'alias numeroRegistre / numeroEnregistrement.
 *
 * @author UnionFlow Team
 * @version 1.0
 * @since 2026-03-05
 */
@DisplayName("Tests OrganisationResponse")
class OrganisationResponseTest {

    @Test
    @DisplayName("getNumeroRegistre retourne numeroEnregistrement")
    void getNumeroRegistre_returnsNumeroEnregistrement() {
        OrganisationResponse r = OrganisationResponse.builder()
                .numeroEnregistrement("MUT-CI-2020-001")
                .build();
        assertThat(r.getNumeroRegistre()).isEqualTo("MUT-CI-2020-001");
    }

    @Test
    @DisplayName("getNumeroRegistre retourne null quand numeroEnregistrement est null")
    void getNumeroRegistre_nullWhenNumeroEnregistrementNull() {
        OrganisationResponse r = OrganisationResponse.builder().build();
        assertThat(r.getNumeroRegistre()).isNull();
    }

    @Test
    @DisplayName("setNumeroRegistre met à jour numeroEnregistrement")
    void setNumeroRegistre_updatesNumeroEnregistrement() {
        OrganisationResponse r = OrganisationResponse.builder().build();
        r.setNumeroRegistre("ASSO-2021-042");
        assertThat(r.getNumeroEnregistrement()).isEqualTo("ASSO-2021-042");
        assertThat(r.getNumeroRegistre()).isEqualTo("ASSO-2021-042");
    }

    @Test
    @DisplayName("getNomOrganisationParente retourne organisationParenteNom")
    void getNomOrganisationParente_returnsOrganisationParenteNom() {
        OrganisationResponse r = OrganisationResponse.builder()
                .organisationParenteNom("Organisation Mère")
                .build();
        assertThat(r.getNomOrganisationParente()).isEqualTo("Organisation Mère");
    }

    @Test
    @DisplayName("setNomOrganisationParente met à jour organisationParenteNom")
    void setNomOrganisationParente_updatesOrganisationParenteNom() {
        OrganisationResponse r = OrganisationResponse.builder().build();
        r.setNomOrganisationParente("Parent Org");
        assertThat(r.getOrganisationParenteNom()).isEqualTo("Parent Org");
        assertThat(r.getNomOrganisationParente()).isEqualTo("Parent Org");
    }
}
