datastore_test.gno
1.38 Kb ยท 78 lines
1package datastore
2
3import (
4 "testing"
5
6 "gno.land/p/demo/uassert"
7 "gno.land/p/demo/urequire"
8)
9
10func TestDatastoreCreateStorage(t *testing.T) {
11 cases := []struct {
12 name string
13 storageName string
14 mustFail bool
15 setup func(*Datastore)
16 }{
17 {
18 name: "success",
19 storageName: "users",
20 },
21 {
22 name: "storage exists",
23 storageName: "users",
24 mustFail: true,
25 setup: func(db *Datastore) {
26 db.CreateStorage("users")
27 },
28 },
29 }
30
31 for _, tc := range cases {
32 t.Run(tc.name, func(t *testing.T) {
33 var db Datastore
34 if tc.setup != nil {
35 tc.setup(&db)
36 }
37
38 storage := db.CreateStorage(tc.storageName)
39
40 if tc.mustFail {
41 uassert.Equal(t, nil, storage)
42 return
43 }
44
45 urequire.NotEqual(t, nil, storage, "storage created")
46 uassert.Equal(t, tc.storageName, storage.Name())
47 uassert.True(t, db.HasStorage(tc.storageName))
48 })
49 }
50}
51
52func TestDatastoreHasStorage(t *testing.T) {
53 var (
54 db Datastore
55 name = "users"
56 )
57
58 uassert.False(t, db.HasStorage(name))
59
60 db.CreateStorage(name)
61 uassert.True(t, db.HasStorage(name))
62}
63
64func TestDatastoreGetStorage(t *testing.T) {
65 var (
66 db Datastore
67 name = "users"
68 )
69
70 storage := db.GetStorage(name)
71 uassert.Equal(t, nil, storage)
72
73 db.CreateStorage(name)
74
75 storage = db.GetStorage(name)
76 urequire.NotEqual(t, nil, storage, "storage found")
77 uassert.Equal(t, name, storage.Name())
78}