thot-cli 0.10.0-intermediate

Command line interface (CLI) for Thot data management and analysis software.
Documentation
use super::*;
use uuid::Uuid;
use thot_core::system::users;
use fake::faker::internet::raw::FreeEmail;
use fake::locales::EN;
use fake::Fake;
use settings_manager::prelude::SystemSettings;
use thot_core::system::settings::user_settings::UserSettings;
use thot_core::system::resources::{user::User, user_id::UserId};

#[test]
fn set_user_should_work_with_email() {
    let email: String = FreeEmail(EN).fake();
    let e_id = UserId::Email(email.clone());
    let user = User::new(email.clone(), None);
    let uid = Into::<Uuid>::into(user.rid.clone());
    users::add_user(user);
    set_active_user(&e_id);

    let settings = UserSettings::load().expect("user settings should load");
    
    assert_eq!(
        Some(uid), settings.active_user,
        "user should be set as active"
    );
}

#[test]
fn set_user_should_work_with_id() {
    let email: String = FreeEmail(EN).fake();
    let e_id = UserId::Email(email.clone());
    let user = User::new(email.clone(), None);
    let uid = UserId::Id(user.rid.clone());
    let uuid = Into::<Uuid>::into(user.rid.clone());

    users::add_user(user);
    set_active_user(&uid);

    let settings = UserSettings::load().expect("user settings should load");
    
    assert_eq!(
        Some(uuid), settings.active_user,
        "user should be set as active"
    );
}

#[test]
#[should_panic(expected = "DoesNotExist")]
fn set_user_with_id_should_error_if_the_user_does_not_exist() {
    let email: String = FreeEmail(EN).fake();
    let user = User::new(email, None);
    let uid = UserId::Id(user.rid.clone());
    match set_active_user(&uid) {
        Err(err) => panic!("{:?}", err),
        _ => (),
    };
}


#[test]
#[should_panic(expected = "DoesNotExist")]
fn set_user_with_email_should_error_if_the_user_does_not_exist() {
    let email: String = FreeEmail(EN).fake();
    let e_id = UserId::Email(email.clone());
    let user = User::new(email.clone(), None);
    match set_active_user(&e_id) {
        Err(err) => panic!("{:?}", err),
        _ => (),
    };
}

#[test]
fn set_user_should_error_if_the_user_is_invalid() {
    todo!();
}