edgedb-query 0.2.2

Crate that provide a bunch of traits and structs used by edgedb-query-derive crate
Documentation

#[cfg(test)]
mod select_tests {
    use edgedb_query::queries::select::{OrderDir, OrderOptions, PageOptions, parse_options, SelectOptions};

    #[test]
    fn parse_with_no_options() {

        let options = SelectOptions {
            order_options: None,
            page_options: None
        };

        let stmt = parse_options(&options, "default::User",vec![]);

        assert_eq!(String::default(), stmt);
    }

    #[test]
    fn parse_with_no_module_specified_and_order_by_options() {

        let options = SelectOptions {
            order_options: Some(OrderOptions {
                order_by: "name".to_string(),
                order_direction: None
            }),
            page_options: None
        };

        let stmt = parse_options(&options, "default::User",vec!["name"]);

        assert_eq!(String::from(" order by default::User.name asc"), stmt);
    }

    #[test]
    fn parse_with_no_module_specified_and_order_options() {

        let options = SelectOptions {
            order_options: Some(OrderOptions {
                order_by: "name".to_string(),
                order_direction: Some(OrderDir::Desc)
            }),
            page_options: None
        };

        let stmt = parse_options(&options, "default::User", vec!["name"]);

        assert_eq!(String::from(" order by default::User.name desc"), stmt);
    }

    #[test]
    fn parse_with_module_specified_and_order_options() {

        let options = SelectOptions {
            order_options: Some(OrderOptions {
                order_by: "name".to_string(),
                order_direction: Some(OrderDir::Desc)
            }),
            page_options: None
        };

        let stmt = parse_options(&options, "users::User",vec!["name"]);

        assert_eq!(String::from(" order by users::User.name desc"), stmt);
    }

    #[test]
    fn parse_with_module_specified_and_order_options_and_limit_options() {

        let options = SelectOptions {
            order_options: Some(OrderOptions {
                order_by: "name".to_string(),
                order_direction: Some(OrderDir::Desc)
            }),
            page_options: Some(PageOptions {
                limit: 10,
                offset: None
            })
        };

        let stmt = parse_options(&options, "users::User", vec!["name"]);

        assert_eq!(String::from(" order by users::User.name desc limit 10"), stmt);
    }

    #[test]
    fn parse_with_module_specified_and_order_options_and_page_options() {

        let options = SelectOptions {
            order_options: Some(OrderOptions {
                order_by: "name".to_string(),
                order_direction: Some(OrderDir::Desc)
            }),
            page_options: Some(PageOptions {
                limit: 10,
                offset: Some(1)
            })
        };

        let stmt = parse_options(&options, "users::User", vec!["name"]);

        assert_eq!(String::from(" order by users::User.name desc limit 10 offset 1"), stmt);
    }
}