dwn 0.4.0

Rust implementation of a Decentralized Web Node.
Documentation
use dwn_core::message::mime::TEXT_PLAIN;
use tracing_test::traced_test;

use crate::utils::init_dwn;

#[tokio::test]
#[traced_test]
async fn test_actor_write_read() {
    let (actor, ..) = init_dwn();

    let data = "Hello, world!".as_bytes().to_owned();

    let record_id = actor
        .write()
        .data(TEXT_PLAIN, data.clone())
        .process()
        .await
        .expect("write");

    let found = actor
        .read(record_id.clone())
        .process()
        .await
        .expect("read")
        .expect("record is found");
    assert_eq!(found.entry().record_id, record_id);

    let found_data = found.data().unwrap();
    assert_eq!(found_data, data)
}

#[tokio::test]
#[traced_test]
async fn test_actor_query() {
    let (actor, ..) = init_dwn();

    let data_1 = "Hello, world!".as_bytes().to_owned();
    let data_2 = "Goodbye, world!".as_bytes().to_owned();

    let id_1 = actor
        .write()
        .data(TEXT_PLAIN, data_1.clone())
        .process()
        .await
        .expect("write");

    let id_2 = actor
        .write()
        .data(TEXT_PLAIN, data_2.clone())
        .process()
        .await
        .expect("write");

    let found = actor.query().process().await.unwrap();
    assert_eq!(found.len(), 2);
    assert!(found.iter().any(|x| x.entry().record_id == id_1));
    assert!(found.iter().any(|x| x.entry().record_id == id_2));
}