You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let parser = Parser::new(Arc::new(make_layout(TEST_GQL)),BLOCK_NUMBER_MAX);
101
76
102
77
parser.parse_and_validate(sql)
103
78
}
104
79
105
-
#[test]
106
-
fnparse_sql(){
107
-
let query = parse_and_validate(SQL_QUERY).unwrap();
80
+
#[derive(Debug,Serialize,Deserialize)]
81
+
structTestCase{
82
+
name:Option<String>,
83
+
sql:String,
84
+
ok:Option<String>,
85
+
err:Option<String>,
86
+
}
108
87
109
-
assert_eq!(
110
-
query,
111
-
r#"WITH "swap_multi" AS (SELECT concat('0x', encode("id", 'hex')) AS "id", concat('0x', encode("sender", 'hex')) AS "sender", "amounts_in", "tokens_in", "amounts_out", "tokens_out", "referral_code", "block_number", "block_timestamp", concat('0x', encode("transaction_hash", 'hex')) AS "transaction_hash", "block$" FROM "sgd0815"."swap_multi"),
112
-
"token" AS (SELECT "id", concat('0x', encode("address", 'hex')) AS "address", "symbol", "name", "decimals", "block_range" FROM "sgd0815"."token" WHERE "block_range" @> 2147483647) SELECT to_jsonb(sub.*) AS data FROM ( WITH tokens AS (SELECT * FROM (VALUES ('0x0000000000000000000000000000000000000000', 'ETH', 'Ethereum', 18), ('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', 'USDC', 'USD Coin', 6)) AS t (address, symbol, name, decimals)) SELECT date, t.symbol, SUM(amount) / pow(10, t.decimals) AS amount FROM (SELECT date(to_timestamp(block_timestamp) AT TIME ZONE 'utc') AS date, token, amount FROM "swap_multi" AS sm, UNNEST(sm.amounts_in, sm.tokens_in) AS smi (amount, token) UNION ALL SELECT date(to_timestamp(block_timestamp) AT TIME ZONE 'utc') AS date, token, amount FROM "swap_multi" AS sm, UNNEST(sm.amounts_out, sm.tokens_out) AS smo (amount, token)) AS tp JOIN tokens AS t ON t.address = '0x' || encode(tp.token, 'hex') GROUP BY tp.date, t.symbol, t.decimals ORDER BY tp.date DESC, amount DESC ) AS sub"#
parse_and_validate("select symbol, address from token where decimals > 10").unwrap();
144
+
lazy_static!{
145
+
static ref TESTS:Vec<TestCase> = {
146
+
let file = std::path::PathBuf::from_iter([
147
+
env!("CARGO_MANIFEST_DIR"),
148
+
"src",
149
+
"sql",
150
+
"parser_tests.yaml",
151
+
]);
152
+
let tests = std::fs::read_to_string(file).unwrap();
153
+
serde_yaml::from_str(&tests).unwrap()
154
+
};
155
+
}
120
156
121
-
assert_eq!(
122
-
query,
123
-
r#"select to_jsonb(sub.*) as data from ( SELECT symbol, address FROM (SELECT * FROM "sgd0815"."token" WHERE block_range @> 2147483647) AS token WHERE decimals > 10 ) as sub"#
0 commit comments