#[test]
fn it_can_parse_a_simple_function() {
let result = pg_parse::parse_plpgsql(
" \
CREATE OR REPLACE FUNCTION cs_fmt_browser_version(v_name varchar, v_version varchar) \
RETURNS varchar AS $$ \
BEGIN \
IF v_version IS NULL THEN \
RETURN v_name; \
END IF; \
RETURN v_name || '/' || v_version; \
END; \
$$ LANGUAGE plpgsql;",
);
assert!(result.is_ok());
let result = result.unwrap();
let expected = include_str!("data/tree/simple_plpgsql.json");
assert_eq!(serde_json::to_string_pretty(&result).unwrap(), expected);
}
#[test]
fn it_will_error_on_invalid_input() {
let result = pg_parse::parse_plpgsql("CREATE RANDOM ix_test ON contacts.person;");
assert!(result.is_err());
assert_eq!(
result.err().unwrap(),
pg_parse::Error::ParseError("syntax error at or near \"RANDOM\"".into())
);
}