mod database; mod library; mod testlib; use musichoard::MusicHoard; use crate::testlib::COLLECTION; #[cfg(feature = "database-json")] use musichoard::database::json::{backend::JsonDatabaseFileBackend, JsonDatabase}; #[cfg(feature = "library-beets")] use musichoard::library::beets::{executor::BeetsLibraryProcessExecutor, BeetsLibrary}; #[test] #[cfg(feature = "database-json")] #[cfg(feature = "library-beets")] fn merge_library_then_database() { // Acquired the lock on the beets config file. We need to own the underlying object so later we // create a new one. This is okay as the purpose of the lock is to prevent other tests to access // the same Beets library at the same time. let _arc = library::beets::BEETS_TEST_CONFIG.clone(); let _ = &mut _arc.lock().unwrap(); let executor = BeetsLibraryProcessExecutor::default() .config(Some(&*library::beets::BEETS_TEST_CONFIG_PATH)); let library = BeetsLibrary::new(executor); let backend = JsonDatabaseFileBackend::new(&*database::json::DATABASE_TEST_FILE); let database = JsonDatabase::new(backend); let mut music_hoard = MusicHoard::new(Some(Box::new(library)), Some(Box::new(database))); music_hoard.rescan_library().unwrap(); music_hoard.load_from_database().unwrap(); assert_eq!(music_hoard.get_collection(), &*COLLECTION); } #[test] #[cfg(feature = "database-json")] #[cfg(feature = "library-beets")] fn merge_database_then_library() { // Acquired the lock on the beets config file. We need to own the underlying object so later we // create a new one. This is okay as the purpose of the lock is to prevent other tests to access // the same Beets library at the same time. let _arc = library::beets::BEETS_TEST_CONFIG.clone(); let _ = &mut _arc.lock().unwrap(); let executor = BeetsLibraryProcessExecutor::default() .config(Some(&*library::beets::BEETS_TEST_CONFIG_PATH)); let library = BeetsLibrary::new(executor); let backend = JsonDatabaseFileBackend::new(&*database::json::DATABASE_TEST_FILE); let database = JsonDatabase::new(backend); let mut music_hoard = MusicHoard::new(Some(Box::new(library)), Some(Box::new(database))); music_hoard.load_from_database().unwrap(); music_hoard.rescan_library().unwrap(); assert_eq!(music_hoard.get_collection(), &*COLLECTION); }