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) }