diff --git a/frontend/src/components/SyncProgress/index.ts b/frontend/src/components/SyncProgress/index.ts index 6f6036c..fa68ac8 100644 --- a/frontend/src/components/SyncProgress/index.ts +++ b/frontend/src/components/SyncProgress/index.ts @@ -1,4 +1,4 @@ export { SyncProgressDisplay } from './SyncProgressDisplay'; export { ConnectionStatusIndicator } from './ConnectionStatusIndicator'; export { ProgressStatistics } from './ProgressStatistics'; -export default SyncProgressDisplay; \ No newline at end of file +export { SyncProgressDisplay as default } from './SyncProgressDisplay'; \ No newline at end of file diff --git a/frontend/src/pages/SettingsPage.tsx b/frontend/src/pages/SettingsPage.tsx index 531706b..eb232df 100644 --- a/frontend/src/pages/SettingsPage.tsx +++ b/frontend/src/pages/SettingsPage.tsx @@ -35,7 +35,6 @@ import { LinearProgress, CircularProgress, Tooltip, - Divider, } from '@mui/material'; import Grid from '@mui/material/GridLegacy'; import { Edit as EditIcon, Delete as DeleteIcon, Add as AddIcon, diff --git a/frontend/src/services/syncProgress/MockSyncProgressManager.ts b/frontend/src/services/syncProgress/MockSyncProgressManager.ts index c7b1a60..3872c03 100644 --- a/frontend/src/services/syncProgress/MockSyncProgressManager.ts +++ b/frontend/src/services/syncProgress/MockSyncProgressManager.ts @@ -1,4 +1,4 @@ -import { SyncProgressManager } from './SyncProgressManager'; +import { SyncProgressManager, ConnectionStatus } from './SyncProgressManager'; import { SyncProgressInfo } from '../api'; /** diff --git a/frontend/src/services/syncProgress/index.ts b/frontend/src/services/syncProgress/index.ts index 8f71d1c..57eff03 100644 --- a/frontend/src/services/syncProgress/index.ts +++ b/frontend/src/services/syncProgress/index.ts @@ -1,3 +1,4 @@ -export { SyncProgressManager, ConnectionStatus, SyncProgressState, SyncProgressEvents } from './SyncProgressManager'; +export { SyncProgressManager } from './SyncProgressManager'; +export type { ConnectionStatus, SyncProgressState, SyncProgressEvents } from './SyncProgressManager'; export { WebSocketSyncProgressManager } from './WebSocketSyncProgressManager'; export { MockSyncProgressManager } from './MockSyncProgressManager'; \ No newline at end of file diff --git a/src/scheduling/user_watch_manager.rs b/src/scheduling/user_watch_manager.rs index f3652f7..11b2708 100644 --- a/src/scheduling/user_watch_manager.rs +++ b/src/scheduling/user_watch_manager.rs @@ -342,71 +342,3 @@ impl UserWatchManager { } } -#[cfg(test)] -mod tests { - use super::*; - use tempfile::TempDir; - use uuid::Uuid; - use crate::models::{UserRole, AuthProvider}; - use chrono::Utc; - - fn create_test_user(username: &str) -> User { - User { - id: Uuid::new_v4(), - username: username.to_string(), - email: format!("{}@example.com", username), - password_hash: Some("test_hash".to_string()), - role: UserRole::User, - created_at: Utc::now(), - updated_at: Utc::now(), - oidc_subject: None, - oidc_issuer: None, - oidc_email: None, - auth_provider: AuthProvider::Local, - } - } - - // Note: These tests would need a mock database implementation - // For now, they serve as documentation of the intended API - - #[tokio::test] - async fn test_user_watch_manager_creation() { - let temp_dir = TempDir::new().unwrap(); - let user_watch_service = UserWatchService::new(temp_dir.path()); - - // Would need mock database here - // let db = create_mock_database(); - // let manager = UserWatchManager::new(db, user_watch_service); - // assert!(manager.initialize().await.is_ok()); - } - - #[tokio::test] - async fn test_extract_username_from_path() { - let temp_dir = TempDir::new().unwrap(); - let user_watch_service = UserWatchService::new(temp_dir.path()); - user_watch_service.initialize().await.unwrap(); - - let user = create_test_user("testuser"); - let user_dir = user_watch_service.ensure_user_directory(&user).await.unwrap(); - let test_file = user_dir.join("document.pdf"); - - let username = user_watch_service.extract_username_from_path(&test_file); - assert_eq!(username, Some("testuser".to_string())); - } - - #[tokio::test] - async fn test_is_user_watch_path() { - let temp_dir = TempDir::new().unwrap(); - let user_watch_service = UserWatchService::new(temp_dir.path()); - user_watch_service.initialize().await.unwrap(); - - let user = create_test_user("testuser"); - let user_dir = user_watch_service.ensure_user_directory(&user).await.unwrap(); - let test_file = user_dir.join("document.pdf"); - - assert!(user_watch_service.is_within_user_watch(&test_file)); - - let outside_file = temp_dir.path().parent().unwrap().join("outside.pdf"); - assert!(!user_watch_service.is_within_user_watch(&outside_file)); - } -} \ No newline at end of file diff --git a/tests/unit_user_watch_manager_tests.rs b/tests/unit_user_watch_manager_tests.rs new file mode 100644 index 0000000..b4880e4 --- /dev/null +++ b/tests/unit_user_watch_manager_tests.rs @@ -0,0 +1,42 @@ +use tempfile::TempDir; +use uuid::Uuid; +use chrono::Utc; + +use readur::{ + models::{User, UserRole, AuthProvider}, + services::user_watch_service::UserWatchService, + scheduling::user_watch_manager::UserWatchManager, +}; + +fn create_test_user(username: &str) -> User { + User { + id: Uuid::new_v4(), + username: username.to_string(), + email: format!("{}@example.com", username), + password_hash: Some("test_hash".to_string()), + role: UserRole::User, + created_at: Utc::now(), + updated_at: Utc::now(), + oidc_subject: None, + oidc_issuer: None, + oidc_email: None, + auth_provider: AuthProvider::Local, + } +} + +/// Test placeholder for UserWatchManager creation +/// This would need a mock database implementation to be fully functional +#[tokio::test] +async fn test_user_watch_manager_creation() { + let temp_dir = TempDir::new().unwrap(); + let user_watch_service = UserWatchService::new(temp_dir.path()); + + // TODO: Would need mock database here + // let db = create_mock_database(); + // let manager = UserWatchManager::new(db, user_watch_service); + // assert!(manager.initialize().await.is_ok()); + + // For now, just test that we can create the service component + user_watch_service.initialize().await.unwrap(); + assert!(temp_dir.path().exists()); +} \ No newline at end of file