MCPcopy
hub / github.com/tailscale/golink / Test_SQLiteDB_SaveLoadDeleteStats

Function Test_SQLiteDB_SaveLoadDeleteStats

db_test.go:69–127  ·  view source on GitHub ↗

Test saving, loading, and deleting stats for SQLiteDB.

(t *testing.T)

Source from the content-addressed store, hash-verified

67
68// Test saving, loading, and deleting stats for SQLiteDB.
69func Test_SQLiteDB_SaveLoadDeleteStats(t *testing.T) {
70 db, err := NewSQLiteDB(path.Join(t.TempDir(), "links.db"))
71 if err != nil {
72 t.Error(err)
73 }
74
75 // preload some links
76 links := []*Link{
77 {Short: "a"},
78 {Short: "B-c"},
79 }
80 for _, link := range links {
81 if err := db.Save(link); err != nil {
82 t.Error(err)
83 }
84 }
85
86 // Stats to record and then retrieve.
87 // Stats to store do not need to be their canonical short name,
88 // but returned stats always should be.
89 stats := []ClickStats{
90 {"a": 1},
91 {"b-c": 1},
92 {"a": 1, "bc": 2},
93 }
94 want := ClickStats{
95 "a": 2,
96 "B-c": 3,
97 }
98
99 for _, s := range stats {
100 if err := db.SaveStats(s); err != nil {
101 t.Error(err)
102 }
103 }
104
105 got, err := db.LoadStats()
106 if err != nil {
107 t.Error(err)
108 }
109 if !cmp.Equal(got, want) {
110 t.Errorf("db.LoadStats got %v, want %v", got, want)
111 }
112
113 for k := range want {
114 if err := db.DeleteStats(k); err != nil {
115 t.Error(err)
116 }
117 }
118
119 got, err = db.LoadStats()
120 if err != nil {
121 t.Error(err)
122 }
123 want = ClickStats{}
124 if !cmp.Equal(got, want) {
125 t.Errorf("db.LoadStats got %v, want %v", got, want)
126 }

Callers

nothing calls this directly

Calls 5

SaveMethod · 0.95
SaveStatsMethod · 0.95
LoadStatsMethod · 0.95
DeleteStatsMethod · 0.95
NewSQLiteDBFunction · 0.85

Tested by

no test coverage detected