package kr.itn.itnhub.org;

import org.junit.jupiter.api.Test;

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

class OrganizationStatusTest {

    private Organization withContact() {
        Organization org = new Organization();
        org.setOrgNo("001");
        org.setOrgName("국제방송교류재단");
        org.setChannelSlug("001");
        org.setDeptName("데이터정보화팀");
        org.setManagerName("송민지");
        org.setManagerPhone("02-3475-5434");
        org.setManagerEmail("ming@arirang.com");
        return org;
    }

    @Test
    void 담당자정보가_없으면_정보대기다() {
        Organization org = new Organization();
        org.setOrgNo("008");
        org.setOrgName("경찰청_치안정책연구소");

        assertThat(org.getStatus()).isEqualTo(OrgStatus.INFO_PENDING);
    }

    @Test
    void 담당자정보가_다_차면_생성가능이다() {
        assertThat(withContact().getStatus()).isEqualTo(OrgStatus.READY);
    }

    @Test
    void 직급은_없어도_생성가능이다() {
        Organization org = withContact();
        org.setManagerTitle(null);

        assertThat(org.getStatus()).isEqualTo(OrgStatus.READY);
    }

    @Test
    void 채널이_한쪽만_있으면_부분생성이다() {
        Organization org = withContact();
        org.setChannelIdMj("chan-mj");

        assertThat(org.getStatus()).isEqualTo(OrgStatus.PARTIAL);
    }

    @Test
    void 채널이_둘_다_있으면_운영중이다() {
        Organization org = withContact();
        org.setChannelIdMj("chan-mj");
        org.setChannelIdLaw("chan-law");

        assertThat(org.getStatus()).isEqualTo(OrgStatus.ACTIVE);
    }

    @Test
    void 담당자정보가_비어도_채널이_있으면_운영중이다() {
        Organization org = new Organization();
        org.setOrgNo("008");
        org.setOrgName("경찰청_치안정책연구소");
        org.setChannelIdMj("chan-mj");
        org.setChannelIdLaw("chan-law");

        assertThat(org.getStatus()).isEqualTo(OrgStatus.ACTIVE);
    }

    @Test
    void 공백만_있는_값은_없는_것으로_본다() {
        Organization org = withContact();
        org.setManagerEmail("   ");

        assertThat(org.getStatus()).isEqualTo(OrgStatus.INFO_PENDING);
    }
}
