dialtone_sqlx 0.1.0

Dialtone SQLx Back-End
Documentation
use dialtone_common::ap::ap_object::{ApObject, ApObjectType};
use dialtone_sqlx::db::ap_object::fetch_owned::fetch_owned_ap_object;
use dialtone_sqlx::db::ap_object::insert::insert_ap_object;
use dialtone_sqlx::db::ap_object::{ApObjectDbType, ApObjectVisibilityDbType};
use dialtone_test_util::create_site::create_site_tst_utl;
use dialtone_test_util::{test_action, test_pg};

#[tokio::test]
async fn fetch_owned_ap_object_test() {
    test_pg::test_pg(move |pool| async move {
        let host_name = "example.net";
        create_site_tst_utl(&pool, host_name).await;
        let ap_object = ApObject {
            name: None,
            id: Some("https://example.net/pub/bar/this_is_a_post".to_string()),
            url: None,
            media_type: None,
            ap_type: Option::from(ApObjectType::Article),
            content: Some("<p>this is a post</p>".to_string()),
            summary: None,
            actor: None,
            attributed_to: None,
            to: None,
            cc: None,
            bto: None,
            bcc: None,
        };
        let action = insert_ap_object(
            &pool,
            host_name,
            &ap_object,
            None,
            ApObjectDbType::Article,
            None,
            ApObjectVisibilityDbType::Visible,
        )
        .await;
        test_action!(action);

        let action = fetch_owned_ap_object(&pool, ap_object.id.as_ref().unwrap().as_str()).await;
        test_action!(action);

        let fetched_result = action.unwrap();
        assert!(fetched_result.is_some());
        let fetched_ap_object = fetched_result.unwrap();
        assert_eq!(&ap_object.id, &fetched_ap_object.ap.id);
        assert_eq!(ap_object.ap_type, fetched_ap_object.ap.ap_type);
        assert_eq!(ap_object.content, fetched_ap_object.ap.content);
    })
    .await;
}