dto_derive 0.1.1

Derive for automatic mapping DTOs to Entities and vice versa.
Documentation
use dto_derive::Dto;

#[derive(Debug, PartialEq)]
struct Entity {
    pub a: String,
    pub b: i32,
    pub c: bool,
}

#[derive(Debug, PartialEq, Dto)]
#[dto(entity = "Entity")]
#[dto(skip = "d")]
struct DtoSkipRequest {
    a: String,
    b: i32,
    c: bool,
    d: String,
}

#[derive(Debug, PartialEq, Dto)]
#[dto(entity = "Entity")]
#[dto(skip = "d,e,f")]
struct DtoMultiSkipOnceRequest {
    a: String,
    b: i32,
    c: bool,
    d: i32,
    e: i32,
    f: i32,
}

#[derive(Debug, PartialEq, Dto)]
#[dto(entity = "Entity")]
#[dto(skip = "d")]
#[dto(skip = "e")]
#[dto(skip = "f")]
struct DtoMultiSkipRequest {
    a: String,
    b: i32,
    c: bool,
    d: i32,
    e: i32,
    f: i32,
}

#[test]
fn dto_request_one_skip_attr() {
    let request = DtoSkipRequest {
        a: "test_simple".to_string(),
        b: 123i32,
        c: true,
        d: "skipped".to_string(),
    };

    let expected = Entity {
        a: "test_simple".to_string(),
        b: 123i32,
        c: true,
    };

    let actual: Entity = request.into();
    assert_eq!(expected, actual);
}

#[test]
fn dto_request_multi_skip_once_attr() {
    let request = DtoMultiSkipOnceRequest {
        a: "test_simple".to_string(),
        b: 123i32,
        c: true,
        d: 10i32,
        e: 10i32,
        f: 10i32,
    };

    let expected = Entity {
        a: "test_simple".to_string(),
        b: 123i32,
        c: true,
    };

    let actual: Entity = request.into();
    assert_eq!(expected, actual);
}

#[test]
fn dto_request_multi_skip_attr() {
    let request = DtoMultiSkipRequest {
        a: "test_simple".to_string(),
        b: 123i32,
        c: true,
        d: 10i32,
        e: 10i32,
        f: 10i32,
    };

    let expected = Entity {
        a: "test_simple".to_string(),
        b: 123i32,
        c: true,
    };

    let actual: Entity = request.into();
    assert_eq!(expected, actual);
}