v / vlib / orm / orm_fn_calls_test.v
49 lines · 38 sloc · 860 bytes · 99be39cbd15d4bbb5ab14d2f870199908c00bc8d
Raw
1// vtest retry: 3
2import db.sqlite
3
4struct User {
5 id int @[primary; sql: serial]
6 name string
7 age int
8}
9
10fn get_acceptable_age() int {
11 return 21
12}
13
14fn test_fn_calls() {
15 mut db := sqlite.connect(':memory:') or { panic(err) }
16
17 sql db {
18 create table User
19 }!
20
21 first_user := User{
22 name: 'first'
23 age: 25
24 }
25
26 second_user := User{
27 name: 'second'
28 age: 14
29 }
30
31 sql db {
32 insert first_user into User
33 insert second_user into User
34 }!
35
36 users_with_acceptable_age := sql db {
37 select from User where age >= get_acceptable_age()
38 }!
39
40 assert users_with_acceptable_age.len == 1
41 assert users_with_acceptable_age.first().name == 'first'
42
43 users_with_non_acceptable_age := sql db {
44 select from User where age < get_acceptable_age()
45 }!
46
47 assert users_with_non_acceptable_age.len == 1
48 assert users_with_non_acceptable_age.first().name == 'second'
49}
50