init
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TestMigrateIdempotent بررسی میکند باز کردن مکرر یک دیتابیس (مثل ریاستارت سرور)
|
||||
// migrationها را دوباره اجرا نکرده و خطای «duplicate column» ندهد.
|
||||
func TestMigrateIdempotent(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "mig.db")
|
||||
for i := 1; i <= 3; i++ {
|
||||
s, err := Open(path)
|
||||
if err != nil {
|
||||
t.Fatalf("open #%d: %v", i, err)
|
||||
}
|
||||
s.Close()
|
||||
}
|
||||
}
|
||||
|
||||
// TestMigrateLegacyDB سناریوی دیتابیسِ از قبل migrateشده ولی بدون جدول ردیابی
|
||||
// (مثل DB فعلیِ توسعه) را شبیهسازی میکند: نباید خطای duplicate column بدهد.
|
||||
func TestMigrateLegacyDB(t *testing.T) {
|
||||
path := filepath.Join(t.TempDir(), "legacy.db")
|
||||
s, err := Open(path)
|
||||
if err != nil {
|
||||
t.Fatalf("first open: %v", err)
|
||||
}
|
||||
// حذف جدول ردیابی ⇒ سرور فکر میکند هیچ migration اجرا نشده، در حالی که ستونها هستند.
|
||||
if _, err := s.DB.Exec(`DROP TABLE schema_migrations`); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
s.Close()
|
||||
|
||||
s2, err := Open(path)
|
||||
if err != nil {
|
||||
t.Fatalf("reopen legacy db: %v", err)
|
||||
}
|
||||
s2.Close()
|
||||
}
|
||||
Reference in New Issue
Block a user