libikarus 0.1.14

The core functionality of Ikarus wrapped neatly in a rust library
Documentation
#[cfg(test)]
pub mod tests {
    use crate::objects::blueprint::Blueprint;
    use crate::objects::object::{Object, ObjectTypes};
    use crate::persistence::project::Project;
    use crate::types::location::FolderPosition;

    #[test]
    fn open_project_on_filesystem() {
        let project = Project::open("open_project_on_filesystem.db");
        assert!(project.is_ok());

        let project = project.unwrap();

        std::fs::remove_file(project.get_path().unwrap()).unwrap();

        std::mem::forget(project);
    }

    #[test]
    fn open_project_in_memory() -> Result<(), Box<dyn std::error::Error>> {
        Project::open_in_memory()?;

        Ok(())
    }

    #[test]
    fn close_project() -> Result<(), Box<dyn std::error::Error>> {
        let project = Project::open_in_memory()?;

        project.close()?;

        Ok(())
    }

    #[test]
    fn delete_project() -> Result<(), Box<dyn std::error::Error>> {
        let project = Project::open("delete_project.db")?;

        let path = project.get_path().cloned();

        project.delete()?;

        assert!(path.is_some_and(|v| !v.exists()));

        Ok(())
    }

    #[test]
    fn delete_project_in_memory() -> Result<(), Box<dyn std::error::Error>> {
        let project = Project::open_in_memory()?;

        project.delete()?;

        Ok(())
    }

    #[test]
    fn project_get_objects() -> Result<(), Box<dyn std::error::Error>> {
        let project = Project::open_in_memory()?;

        assert_eq!(
            project.get_objects(ObjectTypes::all())?,
            Vec::<Object>::new()
        );

        let blueprint = Blueprint::new(
            project.db.clone(),
            None,
            FolderPosition::StartOfFolder,
            "test",
            "test",
        )?;

        assert_eq!(project.get_objects(ObjectTypes::all())?, vec![blueprint]);

        Ok(())
    }
}