use crate::core::config::Config;
pub mod models;
pub mod v4;
use v4::V4;
pub struct ApprovalService {
pub v4: V4,
}
impl ApprovalService {
pub fn new(config: Config) -> Self {
Self {
v4: V4::new(config),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use std::time::Duration;
#[test]
fn test_approval_service_creation() {
let config = Config::default();
let service = ApprovalService::new(config);
let _ = &service.v4;
let _ = &service.v4.approval;
let _ = &service.v4.instance;
let _ = &service.v4.task;
let _ = &service.v4.file;
let _ = &service.v4.instance_comment;
let _ = &service.v4.external_approval;
let _ = &service.v4.external_instance;
let _ = &service.v4.external_task;
let _ = &service.v4.message;
let _ = &service.v4.search;
}
#[test]
fn test_approval_service_with_custom_config() {
let config = Config::builder()
.app_id("approval_test_app")
.app_secret("approval_test_secret")
.req_timeout(Duration::from_secs(320))
.build();
let service = ApprovalService::new(config);
let _ = &service.v4.approval;
let _ = &service.v4.instance;
let _ = &service.v4.task;
let _ = &service.v4.file;
let _ = &service.v4.instance_comment;
let _ = &service.v4.external_approval;
let _ = &service.v4.external_instance;
let _ = &service.v4.external_task;
let _ = &service.v4.message;
let _ = &service.v4.search;
}
#[test]
fn test_approval_service_config_independence() {
let config1 = Config::builder().app_id("approval_app_1").build();
let config2 = Config::builder().app_id("approval_app_2").build();
let service1 = ApprovalService::new(config1);
let service2 = ApprovalService::new(config2);
let _ = &service1.v4.approval;
let _ = &service1.v4.instance;
let _ = &service2.v4.approval;
let _ = &service2.v4.instance;
}
#[test]
fn test_approval_service_sub_services_accessible() {
let config = Config::default();
let service = ApprovalService::new(config);
let _ = &service.v4.approval;
let _ = &service.v4.instance;
let _ = &service.v4.task;
let _ = &service.v4.file;
let _ = &service.v4.instance_comment;
let _ = &service.v4.external_approval;
let _ = &service.v4.external_instance;
let _ = &service.v4.external_task;
let _ = &service.v4.message;
let _ = &service.v4.search;
}
#[test]
fn test_approval_service_config_cloning() {
let config = Config::builder()
.app_id("clone_test_app")
.app_secret("clone_test_secret")
.build();
let service = ApprovalService::new(config.clone());
let _ = &service.v4.approval;
let _ = &service.v4.instance;
let _ = &service.v4.task;
let _ = &service.v4.file;
let _ = &service.v4.instance_comment;
let _ = &service.v4.external_approval;
let _ = &service.v4.external_instance;
let _ = &service.v4.external_task;
let _ = &service.v4.message;
let _ = &service.v4.search;
}
#[test]
fn test_approval_service_timeout_propagation() {
let config = Config::builder()
.req_timeout(Duration::from_secs(330))
.build();
let service = ApprovalService::new(config);
let _ = &service.v4.approval;
let _ = &service.v4.instance;
let _ = &service.v4.task;
let _ = &service.v4.file;
let _ = &service.v4.instance_comment;
let _ = &service.v4.external_approval;
let _ = &service.v4.external_instance;
let _ = &service.v4.external_task;
let _ = &service.v4.message;
let _ = &service.v4.search;
}
#[test]
fn test_approval_service_multiple_instances() {
let config = Config::default();
let service1 = ApprovalService::new(config.clone());
let service2 = ApprovalService::new(config.clone());
let _ = &service1.v4.approval;
let _ = &service1.v4.instance;
let _ = &service2.v4.approval;
let _ = &service2.v4.instance;
}
#[test]
fn test_approval_service_config_consistency() {
let config = Config::builder()
.app_id("consistency_test")
.app_secret("consistency_secret")
.req_timeout(Duration::from_secs(340))
.build();
let service = ApprovalService::new(config);
let _ = &service.v4.approval;
let _ = &service.v4.instance;
let _ = &service.v4.task;
let _ = &service.v4.file;
let _ = &service.v4.instance_comment;
let _ = &service.v4.external_approval;
let _ = &service.v4.external_instance;
let _ = &service.v4.external_task;
let _ = &service.v4.message;
let _ = &service.v4.search;
}
}