package com.ycwl.basic.pricing.mapper;

import com.ycwl.basic.pricing.entity.PriceBundleConfig;
import com.ycwl.basic.pricing.entity.PriceProductConfig;
import com.ycwl.basic.pricing.enums.ProductType;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;
import java.time.LocalDateTime;

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

/**
 * 优惠券开关字段映射测试
 * 验证新添加的canUseCoupon和canUseVoucher字段是否正确映射
 */
class CouponSwitchFieldsMappingTest {

    @Test
    void testProductConfigSwitchFields() {
        // 测试商品配置的优惠券开关字段
        PriceProductConfig config = new PriceProductConfig();
        config.setProductType(ProductType.PHOTO_PRINT.getCode());
        config.setProductId("test_001");
        config.setProductName("测试商品");
        config.setBasePrice(new BigDecimal("10.00"));
        config.setOriginalPrice(new BigDecimal("15.00"));
        config.setUnit("元/个");
        config.setIsActive(true);
        
        // 测试新增的优惠券开关字段
        config.setCanUseCoupon(true);
        config.setCanUseVoucher(false);
        
        // 验证字段设置
        assertTrue(config.getCanUseCoupon());
        assertFalse(config.getCanUseVoucher());
        
        System.out.println("商品配置开关字段测试通过:");
        System.out.println("- canUseCoupon: " + config.getCanUseCoupon());
        System.out.println("- canUseVoucher: " + config.getCanUseVoucher());
    }
    
    @Test
    void testBundleConfigSwitchFields() {
        // 测试打包配置的优惠券开关字段
        PriceBundleConfig config = new PriceBundleConfig();
        config.setBundleName("测试套餐");
        config.setScenicId("1");
        config.setBundlePrice(new BigDecimal("99.00"));
        config.setDescription("测试描述");
        config.setIsActive(true);
        
        // 测试新增的优惠券开关字段
        config.setCanUseCoupon(false);
        config.setCanUseVoucher(true);
        
        // 验证字段设置
        assertFalse(config.getCanUseCoupon());
        assertTrue(config.getCanUseVoucher());
        
        System.out.println("打包配置开关字段测试通过:");
        System.out.println("- canUseCoupon: " + config.getCanUseCoupon());
        System.out.println("- canUseVoucher: " + config.getCanUseVoucher());
    }
    
    @Test
    void testDefaultBooleanValues() {
        // 测试默认值逻辑
        PriceProductConfig config = new PriceProductConfig();
        
        // 未设置时应为null
        assertNull(config.getCanUseCoupon());
        assertNull(config.getCanUseVoucher());
        
        // 测试Boolean.TRUE.equals的逻辑
        assertFalse(Boolean.TRUE.equals(config.getCanUseCoupon())); // null case
        assertFalse(Boolean.TRUE.equals(config.getCanUseVoucher())); // null case
        
        // 设置为false
        config.setCanUseCoupon(false);
        config.setCanUseVoucher(false);
        assertFalse(Boolean.TRUE.equals(config.getCanUseCoupon())); // false case
        assertFalse(Boolean.TRUE.equals(config.getCanUseVoucher())); // false case
        
        // 设置为true
        config.setCanUseCoupon(true);
        config.setCanUseVoucher(true);
        assertTrue(Boolean.TRUE.equals(config.getCanUseCoupon())); // true case
        assertTrue(Boolean.TRUE.equals(config.getCanUseVoucher())); // true case
        
        System.out.println("布尔值判断逻辑测试通过");
    }
}
