gluesql_test_suite/ast_builder/
values.rs

1use {
2    crate::*,
3    gluesql_core::{ast_builder::*, prelude::Value::*},
4};
5
6test_case!(values, {
7    use gluesql_core::ast_builder::values;
8    let glue = get_glue!();
9
10    let actual = values(vec!["1, 'Glue'", "2, 'SQL'", "3, 'Rust'"])
11        .execute(glue)
12        .await;
13    let expected = Ok(select!(
14        column1 | column2
15        I64     | Str;
16        1         "Glue".to_owned();
17        2         "SQL".to_owned();
18        3         "Rust".to_owned()
19
20    ));
21    assert_eq!(actual, expected, "values - row as string");
22
23    let actual = values(vec![
24        vec!["1", "'Glue'"],
25        vec!["2", "'SQL'"],
26        vec!["3", "'Rust'"],
27    ])
28    .execute(glue)
29    .await;
30    let expected = Ok(select!(
31        column1 | column2
32        I64     | Str;
33        1         "Glue".to_owned();
34        2         "SQL".to_owned();
35        3         "Rust".to_owned()
36
37    ));
38    assert_eq!(actual, expected, "values - row as vec");
39
40    let actual = values(vec!["1, 'Glue'", "2, 'SQL'", "3, 'Rust'"])
41        .order_by("column2 desc")
42        .execute(glue)
43        .await;
44    let expected = Ok(select!(
45        column1 | column2
46        I64     | Str;
47        2         "SQL".to_owned();
48        3         "Rust".to_owned();
49        1         "Glue".to_owned()
50    ));
51    assert_eq!(actual, expected, "values - order by");
52
53    let actual = values(vec!["1, 'Glue'", "2, 'SQL'", "3, 'Rust'"])
54        .offset(1)
55        .execute(glue)
56        .await;
57    let expected = Ok(select!(
58        column1 | column2
59        I64     | Str;
60        2         "SQL".to_owned();
61        3         "Rust".to_owned()
62    ));
63    assert_eq!(actual, expected, "values - offset");
64
65    let actual = values(vec!["1, 'Glue'", "2, 'SQL'", "3, 'Rust'"])
66        .limit(2)
67        .execute(glue)
68        .await;
69    let expected = Ok(select!(
70        column1 | column2
71        I64     | Str;
72        1         "Glue".to_owned();
73        2         "SQL".to_owned()
74    ));
75    assert_eq!(actual, expected, "values - limit");
76
77    let actual = values(vec!["1, 'Glue'", "2, 'SQL'", "3, 'Rust'"])
78        .alias_as("Sub")
79        .select()
80        .project("column1 AS id")
81        .project("column2 AS name")
82        .execute(glue)
83        .await;
84    let expected = Ok(select!(
85        id  | name
86        I64 | Str;
87        1     "Glue".to_owned();
88        2     "SQL".to_owned();
89        3     "Rust".to_owned()
90    ));
91    assert_eq!(actual, expected, "values - alias as");
92});