package kr.itn.itnhub.org; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; class OrganizationStatusTest { private Organization withApplicant() { Organization org = new Organization(); org.setOrgNo("001"); org.setOrgName("국제방송교류재단"); org.setChannelSlug("001"); org.setApplicantContactId(1L); return org; } @Test void 신청기관_담당자가_배정되지_않으면_정보대기다() { Organization org = new Organization(); org.setOrgNo("008"); org.setOrgName("경찰청_치안정책연구소"); assertThat(org.getStatus()).isEqualTo(OrgStatus.INFO_PENDING); } @Test void 신청기관_담당자가_배정되면_생성가능이다() { assertThat(withApplicant().getStatus()).isEqualTo(OrgStatus.READY); } @Test void 문정원_변호사_배정이_없어도_신청기관_담당자만_있으면_생성가능이다() { Organization org = withApplicant(); org.setMjContactId(null); org.setLawyerContactId(null); assertThat(org.getStatus()).isEqualTo(OrgStatus.READY); } @Test void 채널이_한쪽만_있으면_부분생성이다() { Organization org = withApplicant(); org.setChannelIdMj("chan-mj"); assertThat(org.getStatus()).isEqualTo(OrgStatus.PARTIAL); } @Test void 채널이_둘_다_있으면_운영중이다() { Organization org = withApplicant(); 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 hasApplicantAssigned은_배정된_담당자ID_유무만_본다() { Organization org = withApplicant(); assertThat(org.hasApplicantAssigned()).isTrue(); org.setApplicantContactId(null); assertThat(org.hasApplicantAssigned()).isFalse(); } }