openlark-workflow 0.17.0

OpenLark 工作流模块 - 提供飞书任务/审批/看板 API
Documentation
//! 子任务模块

pub mod create;
/// 列表接口。
pub mod list;

use openlark_core::config::Config;
use std::sync::Arc;

/// Subtask:子任务资源
#[derive(Clone)]
pub struct Subtask {
    config: Arc<Config>,
    task_guid: String,
}

impl Subtask {
    /// 创建新的实例。
    pub fn new(config: Arc<Config>, task_guid: impl Into<String>) -> Self {
        Self {
            config,
            task_guid: task_guid.into(),
        }
    }

    /// 创建子任务
    pub fn create(&self) -> create::CreateSubtaskRequest {
        create::CreateSubtaskRequest::new(self.config.clone(), self.task_guid.clone())
    }

    /// 获取子任务列表
    pub fn list(&self) -> list::ListSubtasksRequest {
        list::ListSubtasksRequest::new(self.config.clone(), self.task_guid.clone())
    }
}

// 重新导出请求类型
pub use create::CreateSubtaskRequest;
pub use list::ListSubtasksRequest;

// 重新导出响应类型
pub use create::CreateSubtaskResponse;
pub use list::ListSubtasksResponse;

#[cfg(test)]
#[allow(unused_imports)]
mod tests {
    use super::*;
    use std::sync::Arc;

    fn create_test_config() -> Arc<Config> {
        Arc::new(
            Config::builder()
                .app_id("test_app")
                .app_secret("test_secret")
                .build(),
        )
    }

    #[test]
    fn test_subtask_new() {
        let config = create_test_config();
        let subtask = Subtask::new(config, "task_guid_123");
        assert_eq!(subtask.task_guid, "task_guid_123");
    }

    #[test]
    fn test_subtask_create() {
        let config = create_test_config();
        let subtask = Subtask::new(config, "task_guid_123");
        let _request = subtask.create();
    }

    #[test]
    fn test_subtask_list() {
        let config = create_test_config();
        let subtask = Subtask::new(config, "task_guid_123");
        let _request = subtask.list();
    }
}