ray-debug 0.0.4

Rust adapter for the Spatie Ray debugging tool (https://spatie.be/products/ray)
Documentation
use crate::payloads::payload::Payload;
use crate::ray_request::RayRequest;
use crate::rayable::Rayable;
use crate::tests::TestUser;
use std::any::{Any, TypeId};

#[test]
fn it_can_convert_string_to_ray_request() {
    let string_value = String::from("foo");

    let request = assert_it_can_convert_value(string_value);

    match request.payloads.first().unwrap() {
        Payload::Html(_) => {}
        _ => panic!("Payload is not HTML type!"),
    };
}

#[test]
fn it_can_convert_string_slice_to_ray_request() {
    let request = assert_it_can_convert_value("foo");

    match request.payloads.first().unwrap() {
        Payload::Log(_) => {}
        _ => panic!("Payload is not Log type!"),
    };
}

#[test]
fn it_can_convert_number_to_ray_request() {
    let request = assert_it_can_convert_value(123);

    match request.payloads.first().unwrap() {
        Payload::Html(_) => {}
        _ => panic!("Payload is not HTML type!"),
    };
}

#[test]
fn it_can_convert_serializable_struct_to_ray_request() {
    let user = TestUser::default();

    let request = assert_it_can_convert_value(&user);

    match request.payloads.first().unwrap() {
        Payload::Html(_) => {}
        _ => panic!("Payload is not HTML type!"),
    };
}

#[test]
fn it_can_convert_vec_of_serializable_structs_to_ray_request() {
    let user = TestUser::default();
    let user2 = TestUser::default();

    let vec = vec![user, user2];

    let request = assert_it_can_convert_value(&vec);

    match request.payloads.first().unwrap() {
        Payload::Html(_) => {}
        _ => panic!("Payload is not HTML type!"),
    };
}

fn assert_it_can_convert_value<T: Rayable>(value: T) -> RayRequest {
    let request = rayable(value);

    assert_eq!(request.type_id(), TypeId::of::<RayRequest>());

    request
}

fn rayable<T: Rayable>(value: T) -> RayRequest {
    value.into_ray_request()
}