music-player-scanner 0.1.9

The music library scanner for the music player
Documentation
use futures::future::FutureExt;
use music_player_entity::{album, artist, artist_tracks, track};
use music_player_storage::{searcher::Searcher, Database};
use sea_orm::{ActiveModelTrait, EntityTrait, PaginatorTrait};
use std::env;

#[tokio::test]
async fn scan_directory() {
    env::set_var("MUSIC_PLAYER_APPLICATION_DIRECTORY", "/tmp");
    env::set_var("MUSIC_PLAYER_MUSIC_DIRECTORY", "/tmp/audio");
    env::set_var(
        "MUSIC_PLAYER_DATABASE_URL",
        "sqlite:///tmp/music-player.sqlite3",
    );
    env::set_var("DATABASE_URL", "sqlite:///tmp/music-player.sqlite3");
    migration::run().await;
    let db = Database::new().await;
    super::scan_directory(
        move |song, db| {
            async move {
                let item: artist::ActiveModel = song.try_into().unwrap();
                match item.insert(db.get_connection()).await {
                    Ok(_) => (),
                    Err(_) => (),
                }

                let item: album::ActiveModel = song.try_into().unwrap();
                match item.insert(db.get_connection()).await {
                    Ok(_) => (),
                    Err(_) => (),
                }

                let item: track::ActiveModel = song.try_into().unwrap();

                match item.insert(db.get_connection()).await {
                    Ok(_) => (),
                    Err(_) => (),
                }

                let item: artist_tracks::ActiveModel = song.try_into().unwrap();
                match item.insert(db.get_connection()).await {
                    Ok(_) => (),
                    Err(_) => (),
                }
            }
            .boxed()
        },
        &db,
        &Searcher::new(),
    )
    .await
    .unwrap_or_default();

    let conn = db.get_connection();
    assert_eq!(artist::Entity::find().count(conn).await.unwrap(), 1);
    assert_eq!(album::Entity::find().count(conn).await.unwrap(), 1);
    assert_eq!(track::Entity::find().count(conn).await.unwrap(), 2);
}