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}