v / vlib / orm / orm_where_in_test.v
52 lines · 40 sloc · 952 bytes · 867a5892bdc0af2d0b124bd504bf6897a6a989fc
Raw
1// vtest build: present_sqlite3? && !sanitize-memory-clang
2// vtest flaky: true
3// vtest retry: 3
4import db.sqlite
5
6struct User {
7 id int @[primary; sql: serial]
8 name string
9}
10
11fn get_users_in(mut db sqlite.DB, names []string) ![]User {
12 return sql db {
13 select from User where name in names
14 }!
15}
16
17fn get_users_not_in(mut db sqlite.DB, names []string) ![]User {
18 return sql db {
19 select from User where name !in names
20 }!
21}
22
23fn test_orm_mut_db() {
24 mut db := sqlite.connect(':memory:') or { panic(err) }
25
26 sql db {
27 create table User
28 }!
29
30 first_user := User{
31 name: 'first'
32 }
33 second_user := User{
34 name: 'second'
35 }
36
37 sql db {
38 insert first_user into User
39 insert second_user into User
40 }!
41
42 in_users := get_users_in(mut db, ['first'])!
43
44 assert in_users.len == 1
45
46 not_in_users := get_users_not_in(mut db, ['second'])!
47
48 assert not_in_users.len == 1
49
50 all_users := get_users_in(mut db, ['first', 'second'])!
51 assert all_users.len == 2
52}
53