package com.mortals;



import com.power.common.enums.HttpCodeEnum;
import com.power.common.util.DateTimeUtil;
import com.power.doc.builder.ApiDocBuilder;
import com.power.doc.builder.HtmlApiDocBuilder;
import com.power.doc.constants.DocGlobalConstants;
import com.power.doc.model.ApiConfig;
import com.power.doc.model.ApiErrorCode;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * @author: zxfei
 * @date: 2021/8/24 16:22
 * @description:
 **/
public class TestDoc {
    /**
     * 包括设置请求头，缺失注释的字段批量在文档生成期使用定义好的注释
     */
    @Test
    public void testBuilderControllersApi() {
        ApiConfig config = new ApiConfig();
        config.setServerUrl("http://localhost:28080");
        config.setAllInOne(true);
        config.setOutPath(DocGlobalConstants.HTML_DOC_OUT_PATH);
        //com/mortals/xhx/daemon/demo/RequestDispatchController.java
        config.setPackageFilters("com.mortals.xhx.busiz.WxOneThingApiController");
        //config.setPackageFilters("com.mortals.xhx.daemon.demo.RequestDispatchController");


        config.setShowAuthor(false);
        config.setCoverOld(true);
        config.setStrict(false);
        config.setDisplayActualType(false);
        //config.setOutPath("E:\\");
        //config.setSourceCodePaths();
        //不指定SourcePaths默认加载代码为项目src/main/java下的,如果项目的某一些实体来自外部代码可以一起加载
//        config.setSourcePaths(
//                SourcePath.path().setDesc("本项目代码").setPath("src/main/java")
//
//                //  SourcePath.path().setPath("E:\\Test\\Mybatis-PageHelper-master\\src\\main\\java"),
//                // SourcePath.path().setDesc("加载项目外代码").setPath("E:\\ApplicationPower\\ApplicationPower\\Common-util\\src\\main\\java")
//        );

        long start = System.currentTimeMillis();

        //ApiDocBuilder.buildSingleApiDoc(config);


        List<ApiErrorCode> errorCodeList = new ArrayList<>();
        for (HttpCodeEnum codeEnum : HttpCodeEnum.values()) {
            ApiErrorCode errorCode = new ApiErrorCode();
            errorCode.setValue(codeEnum.getCode()).setDesc(codeEnum.getMessage());
            errorCodeList.add(errorCode);
        }

        //不需要显示错误码,则可以不用设置错误码。
        config.setErrorCodes(errorCodeList);
        //生成Markdown文件
        HtmlApiDocBuilder.buildApiDoc(config);



        ApiDocBuilder.buildApiDoc(config);


        //ApiDocBuilder.buildApiDoc(config);
        //ApiDocBuilder.builderControllersApi(config);
        long end = System.currentTimeMillis();
        DateTimeUtil.printRunTime(end, start);
    }
}
