fish-lib 0.2.3

A work-in-progress fishing game library containing the game/storage logic for a discord fishing game I'm working on.
Documentation
use crate::tests::mock::mock_default_service_provider;

#[test]
fn test_find_by_external_id() {
    let sp = mock_default_service_provider();

    let user = sp.user_service().create_and_save_user(1337).unwrap();

    let found_user = sp
        .user_repository()
        .find_by_external_id(1337)
        .unwrap()
        .unwrap();
    assert_eq!(user, found_user);
}

#[test]
fn test_unlock_location() {
    let sp = mock_default_service_provider();

    let user = sp.user_service().create_and_save_user(1337).unwrap();

    let user_location = sp.user_repository().unlock_location(user.id, 68).unwrap();

    let unlocked_locations = sp
        .user_repository()
        .find_unlocked_locations(user.id)
        .unwrap();
    assert_eq!(unlocked_locations.len(), 1);
    assert_eq!(unlocked_locations[0], user_location);
}

#[test]
fn test_unlocked_location_ids() {
    let sp = mock_default_service_provider();

    let user = sp.user_service().create_and_save_user(1337).unwrap();
    let _ = sp.user_repository().unlock_location(user.id, 68).unwrap();

    let unlocked_location_ids = sp
        .user_repository()
        .find_unlocked_location_ids(user.id)
        .unwrap();
    assert_eq!(unlocked_location_ids.len(), 1);
    assert_eq!(unlocked_location_ids[0], 68);
}

#[test]
fn test_find() {
    let sp = mock_default_service_provider();

    let user = sp.user_service().create_and_save_user(1337).unwrap();

    let found_user = sp.user_repository().find(user.id).unwrap().unwrap();
    assert_eq!(user, found_user);
}

#[test]
fn test_save() {
    let sp = mock_default_service_provider();

    let mut user = sp.user_service().create_and_save_user(1337).unwrap();
    user.external_id = 1338;

    sp.user_repository().save(user.clone()).unwrap();
    assert_eq!(
        sp.user_repository().find_by_external_id(1337).unwrap(),
        None
    );
    let found_user = sp
        .user_repository()
        .find_by_external_id(1338)
        .unwrap()
        .unwrap();
    assert_eq!(user.created_at, found_user.created_at);
    assert_eq!(found_user.credits, 0);
}

#[test]
fn test_delete() {
    let sp = mock_default_service_provider();

    let user = sp.user_service().create_and_save_user(1337).unwrap();

    let found_user = sp.user_repository().find(user.id).unwrap().unwrap();
    assert_eq!(user, found_user);

    let found_user_id = found_user.id;
    sp.user_repository().delete(found_user).unwrap();
    assert_eq!(sp.user_repository().find(found_user_id).unwrap(), None);
}