65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
package repository
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.mchus.pro/mchus/quoteforge/internal/models"
|
|
"github.com/glebarez/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func TestGenerateVersion_FirstOfDay(t *testing.T) {
|
|
repo := newTestPricelistRepository(t)
|
|
|
|
version, err := repo.GenerateVersion()
|
|
if err != nil {
|
|
t.Fatalf("GenerateVersion returned error: %v", err)
|
|
}
|
|
|
|
today := time.Now().Format("2006-01-02")
|
|
want := fmt.Sprintf("%s-001", today)
|
|
if version != want {
|
|
t.Fatalf("expected %s, got %s", want, version)
|
|
}
|
|
}
|
|
|
|
func TestGenerateVersion_UsesMaxSuffixNotCount(t *testing.T) {
|
|
repo := newTestPricelistRepository(t)
|
|
today := time.Now().Format("2006-01-02")
|
|
|
|
seed := []models.Pricelist{
|
|
{Version: fmt.Sprintf("%s-001", today), CreatedBy: "test", IsActive: true},
|
|
{Version: fmt.Sprintf("%s-003", today), CreatedBy: "test", IsActive: true},
|
|
}
|
|
for _, pl := range seed {
|
|
if err := repo.Create(&pl); err != nil {
|
|
t.Fatalf("seed insert failed: %v", err)
|
|
}
|
|
}
|
|
|
|
version, err := repo.GenerateVersion()
|
|
if err != nil {
|
|
t.Fatalf("GenerateVersion returned error: %v", err)
|
|
}
|
|
|
|
want := fmt.Sprintf("%s-004", today)
|
|
if version != want {
|
|
t.Fatalf("expected %s, got %s", want, version)
|
|
}
|
|
}
|
|
|
|
func newTestPricelistRepository(t *testing.T) *PricelistRepository {
|
|
t.Helper()
|
|
|
|
db, err := gorm.Open(sqlite.Open("file::memory:?cache=shared"), &gorm.Config{})
|
|
if err != nil {
|
|
t.Fatalf("open sqlite: %v", err)
|
|
}
|
|
if err := db.AutoMigrate(&models.Pricelist{}); err != nil {
|
|
t.Fatalf("migrate: %v", err)
|
|
}
|
|
return NewPricelistRepository(db)
|
|
}
|