forked from ubuconeurope/present-switch
-
Notifications
You must be signed in to change notification settings - Fork 0
/
persistence_test.go
86 lines (74 loc) · 2.41 KB
/
persistence_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package main
import (
"os"
"testing"
)
// All tests in the same tests because I need state and it is easier
func TestAllPersistence(t *testing.T) {
const dbpath = "foo.db"
var readItems map[int]RoomInfo
var (
readSingleItem RoomInfo
err error
)
// test 0 - init db
db := InitDB(dbpath)
defer db.Close()
defer os.Remove(dbpath)
// // test 1 - create tables
// CreateTables(db)
// t.Log("TestAllPersistence - TEST1 - CreateTables - OK")
// test 2 - insert data
StoreItem(db, RoomInfo{1, "Room1", "CurrTitle", "CurrSpeaker", "CurrTime", "NextTitle", "NextSpeaker", "NextTime", 0})
readItems, err = ReadRoomInfoTable(db)
if err != nil {
t.Error(err)
t.Fail()
}
if 1 != len(readItems) {
t.Errorf("Number of rows did not match the expected number 1")
}
// test 2.1 - insert more data
StoreItem(db, RoomInfo{2, "Room2", "CurrTitle", "CurrSpeaker", "CurrTime", "NextTitle", "NextSpeaker", "NextTime", 0})
StoreItem(db, RoomInfo{3, "Room4", "CurrTitle", "CurrSpeaker", "CurrTime", "NextTitle", "NextSpeaker", "NextTime", 0})
StoreItem(db, RoomInfo{4, "Room4", "CurrTitle", "CurrSpeaker", "CurrTime", "NextTitle", "NextSpeaker", "NextTime", 0})
readItems, err = ReadRoomInfoTable(db)
if err != nil {
t.Error(err)
t.Fail()
}
if 4 != len(readItems) {
t.Errorf("Number of rows did not match the expected number 1")
}
t.Log("TestAllPersistence - TEST2 - insert data - ", len(readItems), "(<-- 4 is expected)")
// test 3 - retrieve single data
readSingleItem, err = ReadRoomInfo(db, 2)
if err != nil {
t.Error(err)
t.Fail()
}
if "Room2" != readSingleItem.RoomName {
t.Errorf("Unexpected RoomName: %s", readSingleItem.RoomName)
}
t.Log("TestAllPersistence - TEST3 - retrieve single data - ", readSingleItem)
// test 4 - retrieve unexisting data
readSingleItem, err = ReadRoomInfo(db, 99)
if err != nil {
// simple error is nice here.
if err.Error() != "unexpected end of JSON input" {
t.Error("Unexpected error: ", err)
}
}
t.Log("TestAllPersistence - TEST4 - retrieve unexisting data - ", err)
// test 5 - update row
StoreItem(db, RoomInfo{2, "Room2", "Another Title Here", "", "", "", "", "", 0})
readSingleItem, err = ReadRoomInfo(db, 2)
if err != nil {
t.Error(err)
t.Fail()
}
if "Another Title Here" != readSingleItem.CurrentTitle {
t.Errorf("Unexpected RoomName: %s", readSingleItem.RoomName)
}
t.Log("TestAllPersistence - TEST5 - update row - ", readSingleItem)
}