gluesql_test_suite/
delete.rs

1use {
2    crate::*,
3    gluesql_core::prelude::{Payload, Value::*},
4};
5
6test_case!(delete, {
7    let g = get_tester!();
8
9    g.run(
10        "
11        CREATE TABLE Foo (
12            id INTEGER PRIMARY KEY,
13            score INTEGER,
14            flag BOOLEAN
15        );
16    ",
17    )
18    .await;
19
20    g.run(
21        "
22        INSERT INTO Foo VALUES
23            (1, 100, TRUE),
24            (2, 300, FALSE),
25            (3, 700, TRUE);
26    ",
27    )
28    .await;
29
30    g.test(
31        "SELECT * FROM Foo",
32        Ok(select!(
33            id  | score | flag
34            I64 | I64   | Bool;
35            1     100     true;
36            2     300     false;
37            3     700     true
38        )),
39    )
40    .await;
41
42    g.named_test(
43        "delete using WHERE",
44        "DELETE FROM Foo WHERE flag = FALSE",
45        Ok(Payload::Delete(1)),
46    )
47    .await;
48
49    g.test(
50        "SELECT * FROM Foo",
51        Ok(select!(
52            id  | score | flag
53            I64 | I64   | Bool;
54            1     100     true;
55            3     700     true
56        )),
57    )
58    .await;
59
60    g.named_test("delete all", "DELETE FROM Foo;", Ok(Payload::Delete(2)))
61        .await;
62
63    g.test(
64        "SELECT * FROM Foo",
65        Ok(Payload::Select {
66            labels: vec!["id".to_owned(), "score".to_owned(), "flag".to_owned()],
67            rows: vec![],
68        }),
69    )
70    .await;
71});