package com.talentcard.server.business.merchant; import static org.assertj.core.api.Assertions.assertThat; import java.util.Map; import org.junit.jupiter.api.Test; class MerchantTypeCatalogTests { @Test void resolvesDisplayNamesCodesAndLegacyAliasesToOneCode() { assertThat(MerchantTypeCatalog.canonicalCode("免费体检")).isEqualTo("medical"); assertThat(MerchantTypeCatalog.canonicalCode("medical")).isEqualTo("medical"); assertThat(MerchantTypeCatalog.canonicalCode("healthCheck")).isEqualTo("medical"); assertThat(MerchantTypeCatalog.canonicalCode("影院")).isEqualTo("cinema"); assertThat(MerchantTypeCatalog.canonicalCode("公寓租赁服务")).isEqualTo("apartment"); } @Test void exposesRoutingMetadataFromTheSameCatalog() { MerchantTypeCatalog.MerchantType medical = MerchantTypeCatalog.find("免费体检").orElseThrow(); assertThat(medical.topicName()).isEqualTo("臻享礼遇"); assertThat(medical.detailType()).isEqualTo("MEDICAL"); assertThat(medical.premiumCategoryKey()).isEqualTo("medical"); assertThat(medical.premiumBusinessType()).isEqualTo("MEDICAL"); assertThat(MerchantTypeCatalog.codesForShoppingCategory("book")).containsExactly("culture"); assertThat(MerchantTypeCatalog.codesForShoppingCategory("telecom")).containsExactly("telecom"); assertThat(MerchantTypeCatalog.codesForShoppingCategory("dental")).containsExactly("dental"); assertThat(MerchantTypeCatalog.find("口腔治疗保健").orElseThrow().topicName()).isEqualTo("惠享好物"); assertThat(MerchantTypeCatalog.find("口腔治疗保健").orElseThrow().detailType()).isEqualTo("MERCHANT"); assertThat(MerchantTypeCatalog.find("酒店服务").orElseThrow().supportsMerchantAppLogin()).isTrue(); } @Test void unknownTypesHaveAnExplicitFallbackCode() { assertThat(MerchantTypeCatalog.canonicalCode("未知类型")).isEqualTo("other"); assertThat(MerchantTypeCatalog.find("未知类型")).isEmpty(); } @Test void coversEveryMerchantTypeOfferedByTheAdmin() { Map adminTypes = Map.ofEntries( Map.entry("免费体检", "medical"), Map.entry("配偶推荐就业", "employment"), Map.entry("金融服务", "finance"), Map.entry("行政审批", "approval"), Map.entry("子女托管", "children"), Map.entry("餐饮服务", "food"), Map.entry("酒店服务", "hotel"), Map.entry("公寓租赁", "apartment"), Map.entry("加油服务", "fuel"), Map.entry("停车服务", "parking"), Map.entry("自助洗车", "carWash"), Map.entry("景区服务", "scenic"), Map.entry("购房优惠", "housing"), Map.entry("购车服务", "car"), Map.entry("家电服务", "appliance"), Map.entry("数码服务", "digital"), Map.entry("文化服务", "culture"), Map.entry("电信服务", "telecom"), Map.entry("口腔治疗保健", "dental"), Map.entry("观影服务", "cinema") ); adminTypes.forEach((displayName, code) -> assertThat(MerchantTypeCatalog.canonicalCode(displayName)).isEqualTo(code)); } }