PlanValidateTest.java 4.54 KB
package com.bsth.service.schedule;

import com.bsth.BaseTest_junit4;
import com.bsth.TestApplication;
import com.bsth.control_v2.plan_module.common.service.schedule.validate.ValidateRuleResult;
import com.bsth.service.schedule.plan.process._1_validate._1_timetable.PlanProcessValidateTimetableService;
import com.bsth.service.schedule.plan.process._1_validate._1_timetable.PlanProcessValidateTimetableServiceDroolsImpl;
import com.bsth.service.schedule.plan.process._1_validate._1_timetable.drools.KBaseValidateTimeTable_Result;
import com.bsth.service.schedule.plan.process._1_validate._2_rule.PlanProcessValidateRuleService;
import com.bsth.service.schedule.plan.process._1_validate._2_rule.PlanProcessValidateRuleServiceDroolsImpl;
import org.joda.time.format.DateTimeFormat;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.kie.api.KieBase;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.HashMap;
import java.util.Map;

/**
 * 排班计划,前置验证测试。
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = {TestApplication.class})
public class PlanValidateTest extends BaseTest_junit4 {
    @Override
    public Map<String, String> getDbunitTestDbFileClassPathMap() {
        Map<String, String> dbFileMap = new HashMap<>();
        dbFileMap.put("_0_validate_timetable_test_case1", "testdata/_0_validate_timetable.xml");
        dbFileMap.put("_1_validate_rule_test_case1", "testdata/_1_validate_rule.xml");
        return dbFileMap;
    }

    @Autowired
    @Qualifier("kBaseValidateTimetable")
    private KieBase kBaseValidateTimetable;

    @Autowired
    @Qualifier("kBaseValidateRule")
    private KieBase kBaseValidateRule;

    @Autowired
    private JdbcTemplate jdbcTemplate;


    @Test
    public void _0_validate_timetable_test_case1() {
        LOG.info("---------------时刻表验证测试--------------");

        // 使用builder创建服务
        PlanProcessValidateTimetableService planProcessValidateTimetableService =
                PlanProcessValidateTimetableServiceDroolsImpl.getBuilder()
                        .setkBaseValidateTimetable(kBaseValidateTimetable)
                        .setJdbcTemplate(jdbcTemplate)
                        .build();

        /*
            验证时刻表信息服务:
            计算指定时间范围内所有的匹配时刻表,并计算时刻表的详细信息

         */
        KBaseValidateTimeTable_Result result = planProcessValidateTimetableService.validateTTInfovalidateTTInfo(
                1,
                DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2019-01-01").toDate(),
                DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2019-01-14").toDate()
        );

        Assert.assertArrayEquals(
                "时刻表数量不一致",
                new Object[] {4},
                new Object[] {result.getInfos().size()});
    }

    @Test
    public void _1_validate_rule_test_case1() {
        LOG.info("---------------规则验证测试--------------");

        // 使用builder创建服务
        PlanProcessValidateRuleService planProcessValidateRuleService =
                PlanProcessValidateRuleServiceDroolsImpl.getBuilder()
                        .setkBaseValidateRule(kBaseValidateRule)
                        .setJdbcTemplate(jdbcTemplate)
                        .build();

        PlanProcessValidateRuleService.Result validateRuleResult = planProcessValidateRuleService.validateRule(
                1,
                DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2019-01-01").toDate(),
                DateTimeFormat.forPattern("yyyy-MM-dd").parseDateTime("2019-01-14").toDate()
        );

        Assert.assertArrayEquals(
                "验证结果不一致!",
                new Object[] {
                        1,
                        3,
                        3,
                        0,
                        0
                },
                new Object[] {
                        validateRuleResult.getXlId(),
                        validateRuleResult.getCount(),
                        validateRuleResult.getQyCount(),
                        validateRuleResult.getQyErrorCount(),
                        validateRuleResult.getErrorInfos().size()
                });
    }
}