package com.test.test.service;

import com.test.test.domain.TestCase;
import com.test.test.domain.TestPlanCase;
import com.test.test.domain.qo.TestCaseListQO;

import java.util.List;

/**
 * 用例Service接口
 *
 * @author liangdl
 * @date 2025-02-18
 */
public interface ITestCaseService
{
    /**
     * 查询用例
     *
     * @param id 用例主键
     * @return 用例
     */
    public TestCase selectTestCaseById(Long id);

    /**
     * 查询用例列表
     *
     * @param qo 用例
     * @return 用例集合
     */
    public List<TestCase> selectTestCaseList(TestCaseListQO qo);

    /**
     * 查询测试计划可关联的用例列表
     * @param qo 用例
     * @return 用例集合
     */
    public List<TestCase> selectValidTestPlanCaseList(TestCaseListQO qo);

    /**
     * 查询用例列表
     * @param testCase
     * @return
     */
    List<TestCase> selectTestCaseList(TestCase testCase);

    /**
     * 新增用例
     *
     * @param testCase 用例
     * @return 结果
     */
    public int insertTestCase(TestCase testCase);

    /**
     * 修改用例
     *
     * @param testCase 用例
     * @return 结果
     */
    public int updateTestCase(TestCase testCase);

    /**
     * 批量删除用例
     *
     * @param ids 需要删除的用例主键集合
     * @return 结果
     */
    public int deleteTestCaseByIds(Long[] ids);

    /**
     * 删除用例信息
     *
     * @param id 用例主键
     * @return 结果
     */
    public int deleteTestCaseById(Long id);

    /**
     * 执行用例计划
     *
     * @param id 用例主键id
     * @param jmeterHomePath jmeter安装路径
     * @param caseSid 用例执行uuid
     * @return 是否成功
     */
    public String executeTestCaseById(Long id, String jmeterHomePath, String caseSid);

    /**
     * 执行测试计划关联的用例
     *
     * @param testPlanCase   测试计划关联用例查询条件
     * @param jmeterHomePath jmeter安装路径
     * @param caseSid 用例执行uuid
     * @return 是否成功
     */
    public void executeTestCaseByPlanCase(TestPlanCase testPlanCase, String jmeterHomePath, String caseSid);
}
