pub mod app_recommend;
pub mod models;
pub mod workplace_access_data;
use crate::{
core::config::Config,
service::workplace::{
app_recommend::AppRecommendService, workplace_access_data::WorkplaceAccessDataService,
},
};
pub struct WorkplaceService {
pub workplace_access_data: WorkplaceAccessDataService,
pub app_recommend: AppRecommendService,
}
impl WorkplaceService {
pub fn new(config: Config) -> Self {
Self {
workplace_access_data: WorkplaceAccessDataService::new(config.clone()),
app_recommend: AppRecommendService::new(config),
}
}
}
#[cfg(test)]
#[allow(unused_variables, unused_unsafe)]
mod tests {
use super::*;
use crate::core::config::Config;
fn create_test_config() -> Config {
Config::default()
}
#[test]
fn test_workplace_service_creation() {
let config = create_test_config();
let workplace_service = WorkplaceService::new(config);
}
#[test]
fn test_workplace_service_debug_trait() {
let config = create_test_config();
let workplace_service = WorkplaceService::new(config);
}
#[test]
fn test_workplace_service_modules_independence() {
let config = create_test_config();
let workplace_service = WorkplaceService::new(config);
let access_data_ptr =
std::ptr::addr_of!(workplace_service.workplace_access_data) as *const _;
let app_recommend_ptr = std::ptr::addr_of!(workplace_service.app_recommend) as *const _;
assert_ne!(
access_data_ptr, app_recommend_ptr,
"Sub-services should be independent"
);
}
#[test]
fn test_workplace_service_with_different_configs() {
let configs = vec![
Config::builder()
.app_id("workplace1")
.app_secret("secret1")
.build(),
Config::builder()
.app_id("workplace2")
.app_secret("secret2")
.req_timeout(std::time::Duration::from_millis(12000))
.build(),
Config::builder()
.app_id("workplace3")
.app_secret("secret3")
.base_url("https://workplace.custom.com")
.build(),
];
for config in configs {
let workplace_service = WorkplaceService::new(config);
}
}
#[test]
fn test_workplace_service_config_cloning() {
let config = create_test_config();
let workplace_service1 = WorkplaceService::new(config.clone());
let workplace_service2 = WorkplaceService::new(config);
let service1_ptr = std::ptr::addr_of!(workplace_service1) as *const _;
let service2_ptr = std::ptr::addr_of!(workplace_service2) as *const _;
assert_ne!(
service1_ptr, service2_ptr,
"Services should be independent instances"
);
}
}