add unit tests

This commit is contained in:
Arkadiy Kukarkin
2025-12-23 12:24:59 +01:00
parent 331218b7f7
commit 3e56154ec7
3 changed files with 185 additions and 0 deletions

75
linkgen/linkgen_test.go Normal file
View File

@@ -0,0 +1,75 @@
package linkgen
import (
"context"
"testing"
"time"
"github.com/parkan/go-hauk/config"
)
type mockStore struct{}
func (m *mockStore) Get(_ context.Context, _ string, _ any) error { return nil }
func (m *mockStore) Set(_ context.Context, _ string, _ any, _ time.Time) error { return nil }
func (m *mockStore) SetTTL(_ context.Context, _ string, _ any, _ time.Duration) error { return nil }
func (m *mockStore) Delete(_ context.Context, _ string) error { return nil }
func (m *mockStore) Exists(_ context.Context, _ string) (bool, error) { return false, nil }
func TestGenerate4Plus4Upper(t *testing.T) {
g := New(&mockStore{}, config.Link4Plus4Upper)
id, err := g.Generate(context.Background())
if err != nil {
t.Fatal(err)
}
if len(id) != 9 {
t.Errorf("expected 9 chars, got %d: %s", len(id), id)
}
if id[4] != '-' {
t.Errorf("expected dash at position 4: %s", id)
}
}
func TestGenerate4Plus4Lower(t *testing.T) {
g := New(&mockStore{}, config.Link4Plus4Lower)
id, err := g.Generate(context.Background())
if err != nil {
t.Fatal(err)
}
if len(id) != 9 {
t.Errorf("expected 9 chars, got %d: %s", len(id), id)
}
}
func TestGenerateUUID(t *testing.T) {
g := New(&mockStore{}, config.LinkUUIDv4)
id, err := g.Generate(context.Background())
if err != nil {
t.Fatal(err)
}
if len(id) != 36 {
t.Errorf("expected 36 chars, got %d: %s", len(id), id)
}
}
func TestGenerate16Hex(t *testing.T) {
g := New(&mockStore{}, config.Link16Hex)
id, err := g.Generate(context.Background())
if err != nil {
t.Fatal(err)
}
if len(id) != 16 {
t.Errorf("expected 16 chars, got %d: %s", len(id), id)
}
}
func TestGenerate32Hex(t *testing.T) {
g := New(&mockStore{}, config.Link32Hex)
id, err := g.Generate(context.Background())
if err != nil {
t.Fatal(err)
}
if len(id) != 32 {
t.Errorf("expected 32 chars, got %d: %s", len(id), id)
}
}