gluesql_test_suite/
delete.rs1use {
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});