mirror of
https://github.com/wahyd4/golink.git
synced 2026-08-09 05:05:56 +10:00
96 lines
1.7 KiB
Go
96 lines
1.7 KiB
Go
// Copyright 2022 Tailscale Inc & Contributors
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package golink
|
|
|
|
import (
|
|
"path"
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/google/go-cmp/cmp/cmpopts"
|
|
)
|
|
|
|
// Test saving and loading links for SQLiteDB
|
|
func Test_SQLiteDB_SaveLoadLinks(t *testing.T) {
|
|
db, err := NewSQLiteDB(path.Join(t.TempDir(), "links.db"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
links := []*Link{
|
|
{Short: "short", Long: "long"},
|
|
{Short: "Foo.Bar", Long: "long"},
|
|
}
|
|
|
|
for _, link := range links {
|
|
if err := db.Save(link); err != nil {
|
|
t.Error(err)
|
|
}
|
|
got, err := db.Load(link.Short)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
if !cmp.Equal(got, link) {
|
|
t.Errorf("db save and load got %v, want %v", *got, *link)
|
|
}
|
|
}
|
|
|
|
got, err := db.LoadAll()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
sortLinks := cmpopts.SortSlices(func(a, b *Link) bool {
|
|
return a.Short < b.Short
|
|
})
|
|
if !cmp.Equal(got, links, sortLinks) {
|
|
t.Errorf("db.LoadAll got %v, want %v", got, links)
|
|
}
|
|
}
|
|
|
|
// Test saving and loading stats for SQLiteDB
|
|
func Test_SQLiteDB_SaveLoadStats(t *testing.T) {
|
|
db, err := NewSQLiteDB(path.Join(t.TempDir(), "links.db"))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
// preload some links
|
|
links := []*Link{
|
|
{Short: "a"},
|
|
{Short: "b"},
|
|
}
|
|
for _, link := range links {
|
|
if err := db.Save(link); err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
// stats to record and then retrieve
|
|
stats := []ClickStats{
|
|
{"a": 1},
|
|
{"b": 1},
|
|
{"a": 1, "b": 2},
|
|
}
|
|
want := ClickStats{
|
|
"a": 2,
|
|
"b": 3,
|
|
}
|
|
|
|
for _, s := range stats {
|
|
if err := db.SaveStats(s); err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
got, err := db.LoadStats()
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
if !cmp.Equal(got, want) {
|
|
t.Errorf("db.LoadStats got %v, want %v", got, want)
|
|
}
|
|
}
|