v2 / vlib / v / tests / orm_enum_test.v
86 lines · 70 sloc · 1.28 KB · ded14406a946c5db39f0c944a2c5c2ae161c9a01
Raw
1import db.sqlite
2
3enum Number {
4 zero
5 one
6 two
7 four = 4
8 five
9}
10
11enum RecordStatus as u8 {
12 created
13 running
14 finished
15}
16
17struct Counter {
18 id int @[primary; sql: serial]
19 number Number
20}
21
22struct Recording {
23 id string @[primary]
24 status RecordStatus
25}
26
27fn test_orm_enum() {
28 db := sqlite.connect(':memory:') or { panic(err) }
29 sql db {
30 create table Counter
31 }!
32
33 counter1 := Counter{
34 number: .two
35 }
36 sql db {
37 insert counter1 into Counter
38 }!
39
40 mut counters := sql db {
41 select from Counter
42 }!
43
44 assert counters.first().number == counter1.number
45
46 // test short enum syntax
47 sql db {
48 update Counter set number = .five where number == .two
49 }!
50
51 counters = sql db {
52 select from Counter
53 }!
54
55 assert counters.first().number == .five
56}
57
58fn test_orm_u8_enum_update_from_selector_expr() {
59 db := sqlite.connect(':memory:') or { panic(err) }
60 sql db {
61 create table Recording
62 }!
63
64 initial := Recording{
65 id: 'record-1'
66 status: .created
67 }
68 sql db {
69 insert initial into Recording
70 }!
71
72 update_data := Recording{
73 id: initial.id
74 status: .finished
75 }
76 sql db {
77 update Recording set status = update_data.status where id == update_data.id
78 }!
79
80 rows := sql db {
81 select from Recording where id == update_data.id
82 }!
83
84 assert rows.len == 1
85 assert rows[0].status == .finished
86}
87