package com.cf.imes.module.system.enums.pay;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

/**
 * {@link PayChannelCodeEnum} 的单元测试
 */
public class PayChannelCodeEnumTest {

    @Test
    public void testFromType() {
        // 测试正常情况 - 支付宝
        assertEquals(PayChannelCodeEnum.ALIPAY_PC, PayChannelCodeEnum.fromType(0));
        
        // 测试正常情况 - 微信
        assertEquals(PayChannelCodeEnum.WECHAT_NATIVE, PayChannelCodeEnum.fromType(1));
        
        // 测试不存在的类型
        assertNull(PayChannelCodeEnum.fromType(999));
        
        // 测试null值
        assertNull(PayChannelCodeEnum.fromType(null));
    }

    @Test
    public void testIsAlipay() {
        // 测试支付宝类型
        assertTrue(PayChannelCodeEnum.isAlipay(0));
        
        // 测试非支付宝类型
        assertFalse(PayChannelCodeEnum.isAlipay(1));
        
        // 测试null值
        assertFalse(PayChannelCodeEnum.isAlipay(null));
    }

    @Test
    public void testIsWechat() {
        // 测试微信类型
        assertTrue(PayChannelCodeEnum.isWechat(1));
        
        // 测试非微信类型
        assertFalse(PayChannelCodeEnum.isWechat(0));
        
        // 测试null值
        assertFalse(PayChannelCodeEnum.isWechat(null));
    }

    @Test
    public void testDescribe() {
        // 测试支付宝描述
        assertEquals("pay.channel.alipay", PayChannelCodeEnum.describe(0));
        
        // 测试微信描述
        assertEquals("pay.channel.wechat", PayChannelCodeEnum.describe(1));
        
        // 测试不存在的类型
        assertNull(PayChannelCodeEnum.describe(999));
        
        // 测试null值
        assertNull(PayChannelCodeEnum.describe(null));
    }

    @Test
    public void testEnumValues() {
        // 测试枚举值的基本属性
        assertEquals(0, PayChannelCodeEnum.ALIPAY_PC.getCode());
        assertEquals("pay.channel.alipay", PayChannelCodeEnum.ALIPAY_PC.getDesc());
        
        assertEquals(1, PayChannelCodeEnum.WECHAT_NATIVE.getCode());
        assertEquals("pay.channel.wechat", PayChannelCodeEnum.WECHAT_NATIVE.getDesc());
    }
}