1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use crate::*;

test_case!(generate_uuid, async move {
    use gluesql_core::{ast::DataType, prelude::Payload, translate::TranslateError};

    let test_cases = vec![
        ("CREATE TABLE SingleItem (id UUID)", Ok(Payload::Create)),
        (
            r#"INSERT INTO SingleItem VALUES (GENERATE_UUID())"#,
            Ok(Payload::Insert(1)),
        ),
        (
            "SELECT generate_uuid(0) as uuid FROM SingleItem",
            Err(TranslateError::FunctionArgsLengthNotMatching {
                name: "GENERATE_UUID".to_owned(),
                expected: 0,
                found: 1,
            }
            .into()),
        ),
    ];

    for (sql, expected) in test_cases {
        test!(expected, sql);
    }

    count!(1, "SELECT GENERATE_UUID() FROM SingleItem");
    type_match!(
        &[DataType::Uuid],
        "SELECT GENERATE_UUID() as uuid FROM SingleItem"
    );
});