package kr.itn.itnhub.provision;

import org.junit.jupiter.api.Test;

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

class ChannelNamingTest {

    @Test
    void 표시명은_연번_기관명_라벨을_조합한다() {
        assertThat(ChannelNaming.displayName("001", "국제방송교류재단", "문정원"))
                .isEqualTo("001_국제방송교류재단 (문정원)");

        assertThat(ChannelNaming.displayName("001", "국제방송교류재단", "법률검토"))
                .isEqualTo("001_국제방송교류재단 (법률검토)");
    }

    @Test
    void 내부명은_org_연번_구분_형식이다() {
        assertThat(ChannelNaming.internalName("001", "국제방송교류재단", ChannelKind.MJ))
                .isEqualTo("org-001-mj");

        assertThat(ChannelNaming.internalName("001", "국제방송교류재단", ChannelKind.LAW))
                .isEqualTo("org-001-law");
    }

    @Test
    void 치안정책연구소는_policy_구분자가_들어간다() {
        assertThat(ChannelNaming.internalName("008", "경찰청_치안정책연구소", ChannelKind.MJ))
                .isEqualTo("org-008-policy-mj");

        assertThat(ChannelNaming.internalName("008", "경찰청_치안정책연구소", ChannelKind.LAW))
                .isEqualTo("org-008-policy-law");
    }

    @Test
    void 같은_연번의_대표기관은_policy가_붙지_않는다() {
        assertThat(ChannelNaming.internalName("008", "경찰청", ChannelKind.MJ))
                .isEqualTo("org-008-mj");
    }

    @Test
    void 연번의_밑줄과_공백은_하이픈으로_바뀌고_소문자가_된다() {
        assertThat(ChannelNaming.internalName("00_A", "기관", ChannelKind.MJ))
                .isEqualTo("org-00-a-mj");

        assertThat(ChannelNaming.internalName(" 00 B ", "기관", ChannelKind.MJ))
                .isEqualTo("org-00-b-mj");
    }

    @Test
    void 연번의_앞자리_영은_보존된다() {
        assertThat(ChannelNaming.internalName("001", "기관", ChannelKind.MJ))
                .startsWith("org-001-");
    }
}
