/*
 * 文 件 名:  InDoorEnergyTest
 * 版    权:  华设设计集团股份有限公司
 * 描    述:  <描述>
 * 修 改 人:  lvwenbin
 * 修改时间:  2025/8/15
 * 跟踪单号:  <跟踪单号>
 * 修改单号:  <修改单号>
 * 修改内容:  <修改内容>
 */
package com.huashe.test;

import com.ruoyi.ems.EmsDevAdpApplication;
import com.ruoyi.ems.config.BaCtlConfig;
import com.ruoyi.ems.core.BaCtlEnergyTemplate;
import com.ruoyi.ems.model.CallData;
import com.ruoyi.ems.model.idenergy.CodesVal;
import com.ruoyi.ems.model.idenergy.CodesValReq;
import com.ruoyi.ems.model.idenergy.CodesValSetReq;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;

/**
 * 室内能耗采集单元测试
 * <功能详细描述>
 *
 * @author lvwenbin
 * @version [版本号, 2025/8/15]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = EmsDevAdpApplication.class)
public class BaCtlTest {
    @Resource
    private BaCtlConfig config;

    /**
     * 测试-获取权限
     */
    @Test
    public void testGetToken() {
        BaCtlEnergyTemplate template = new BaCtlEnergyTemplate(config.getUrl());
        String token = template.getToken();
        Assert.assertNotNull(token);
        log.info("Token: {}", token);
    }

    @Test
    public void testRefreshToken() {
        BaCtlEnergyTemplate template = new BaCtlEnergyTemplate(config.getUrl());
        String token = template.refreshToken();
        Assert.assertNotNull(token);
        log.info("Token: {}", token);
    }

    @Test
    public void testGetCodesVal() {
        BaCtlEnergyTemplate template = new BaCtlEnergyTemplate(config.getUrl());
        CallData<String> ret = template.getCodesVal(new CodesValReq("C_1009_BO_0000"));
        log.info("ret:{}", ret.getResPayload());
        Assert.assertNotNull(ret.getResPayload());
    }

    @Test
    public void testSetCodesVal() {
        CodesVal codesVal = new CodesVal();
        codesVal.setPointId("C_999_DO_999");
        codesVal.setValue("1");
        CodesValSetReq req = new CodesValSetReq(codesVal);

        BaCtlEnergyTemplate template = new BaCtlEnergyTemplate(config.getUrl());
        CallData<String> ret = template.setCodesVal(req);
        log.info("ret:{}", ret.getResPayload());

        Assert.assertNotNull(ret.getResPayload());
    }
}