edgedb-query 0.2.2

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

#[cfg(test)]
mod conflict_test {
    use edgedb_protocol::value::Value;
    use edgedb_query::queries::conflict::{UnlessConflict, UnlessConflictElse, parse_conflict};
    use edgedb_query::{EdgeQl, QueryType, ToEdgeQl, ToEdgeQuery, ToEdgeValue};

    #[derive(Clone)]
    pub struct FindUser {}

    impl ToEdgeQl for FindUser {
        fn to_edgeql(&self) -> EdgeQl {
            EdgeQl {
                query_type: QueryType::Select,
                table_name: "users".to_string(),
                content: String::default(),
                has_result: false
            }
        }
    }

    impl ToEdgeValue for FindUser {
        fn to_edge_value(&self) -> Value {
            Value::Nothing
        }
    }

    impl ToEdgeQuery for FindUser  {}



    #[test]
    fn parse_conflict_with_on_and_else_fn() {

        let insert_conflict = UnlessConflictElse {
            else_query: FindUser{},
        };

        let stmt = parse_conflict(&insert_conflict, vec!["name", "age"]);

        assert_eq!(stmt, " unless conflict on ( .name, .age ) else ( select users ) ");
    }

    #[test]
    fn parse_conflict_with_one_on_and_else_fn() {

        let insert_conflict = UnlessConflictElse {
            else_query: FindUser{},
        };

        let stmt = parse_conflict(&insert_conflict, vec!["name"]);

        assert_eq!(stmt, " unless conflict on .name else ( select users ) ");
    }

    #[test]
    fn parse_conflict_with_on() {

        let insert_conflict = UnlessConflict {};

        let stmt = parse_conflict(&insert_conflict, vec!["name", "age"]);

        assert_eq!(stmt, " unless conflict on ( .name, .age ) ");
    }


    #[test]
    fn parse_conflict_with_else_fn() {

        let insert_conflict = UnlessConflictElse {
            else_query: FindUser{},
        };

        let stmt = parse_conflict(&insert_conflict, vec![]);

        assert_eq!(stmt, " unless conflict else ( select users ) ");
    }
    #[test]
    fn parse_conflict_with_no_on_no_else_fn() {

        let insert_conflict: UnlessConflict = UnlessConflict{};

        let stmt = parse_conflict(&insert_conflict, vec![]);

        assert_eq!(stmt, " unless conflict ");
    }
}