znotify 0.2.0

Notify SDK for Rust
Documentation
use znotify::{Client, MessageOptions};
use znotify::entity::{Channel, Priority};

#[tokio::test]
async fn test_client_create_err() {
    let client = Client::create("error".to_string(), None).await;
    assert!(client.is_err());
    assert_eq!("User secret not valid", client
        .err()
        .unwrap()
        .to_string())
}

#[tokio::test]
async fn test_client_create_ok() {
    let client = Client::create("test".to_string(), None).await;
    assert!(client.is_ok());
}

#[tokio::test]
async fn client_send() {
    let content = "test".to_string();
    let title = Some("test_title".to_string());
    let long = Some("test_long".to_string());
    let client = Client::create("test".to_string(), None).await.unwrap();
    let message = client
        .send(MessageOptions {
            content: content.clone(),
            title: title.clone(),
            long: long.clone(),
            priority: Some(Priority::High),
        })
        .await;
    assert!(message.is_ok());
    let message = message.unwrap();
    assert_eq!(message.content, content);
    assert_eq!(message.title, title.unwrap());
    assert_eq!(message.long, long.unwrap());
    assert_eq!(message.priority, Priority::High);
}

#[tokio::test]
async fn client_send_failed() {
    let content = "".to_string();
    let title = Some("test_title".to_string());
    let long = Some("test_long".to_string());
    let client = Client::create("test".to_string(), None).await.unwrap();
    let message = client
        .send(MessageOptions {
            content: content.clone(),
            title: title.clone(),
            long: long.clone(),
            priority: None,
        })
        .await;
    assert!(message.is_err());
    assert!(message
        .err()
        .unwrap()
        .to_string()
        .contains("Content is required"));
}

#[tokio::test]
async fn client_delete() {
    let content = "test".to_string();
    let title = Some("test_title".to_string());
    let long = Some("test_long".to_string());
    let client = Client::create("test".to_string(), None).await.unwrap();
    let message = client
        .send(MessageOptions {
            content: content.clone(),
            title: title.clone(),
            long: long.clone(),
            priority: Some(Priority::High),
        })
        .await;
    assert!(message.is_ok());
    let message = message.unwrap();
    let id = message.id;

    let ret = client.delete_message(id).await;
    assert!(ret.is_ok());
    assert!(ret.unwrap());
}

#[tokio::test]
async fn client_create_device() {
    let client = Client::create("test".to_string(), None).await.unwrap();
    let ret = client.create_device(
        Channel::FCM,
        "test".to_string(),
        Some("test".to_string()),
        Some("test".to_string()),
        Some("test".to_string()),
    ).await;
    assert!(ret.is_err());
    assert_eq!(ret.unwrap_err().to_string(), "Device ID not valid, should be a UUID");

    let ret2 = client.create_device(
        Channel::FCM,
        "9a31666d-1b9e-4d9b-ba63-53c9f381e52b".to_string(),
        Some("test".to_string()),
        Some("test".to_string()),
        Some("test".to_string()),
    ).await;
    assert!(ret2.is_ok());
    assert!(ret2.unwrap());
}