feat(backend): implement task creation and admin web
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net"
|
||||
"net/http"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"cmroubao/backend-api/internal/platform/migration"
|
||||
)
|
||||
|
||||
func TestShutdownServerForceClosesAfterGracefulTimeout(t *testing.T) {
|
||||
@@ -73,3 +76,51 @@ func TestShutdownServerAcceptsNormalServerClose(t *testing.T) {
|
||||
t.Fatalf("shutdownServer() error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequireCurrentMigrationsAcceptsAppliedVersions(t *testing.T) {
|
||||
reader := stubMigrationStatusReader{
|
||||
statuses: []migration.Status{
|
||||
{Version: 1, Applied: true},
|
||||
{Version: 2, Applied: true},
|
||||
},
|
||||
}
|
||||
|
||||
if err := requireCurrentMigrations(context.Background(), reader); err != nil {
|
||||
t.Fatalf("requireCurrentMigrations() error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequireCurrentMigrationsRejectsPendingVersion(t *testing.T) {
|
||||
reader := stubMigrationStatusReader{
|
||||
statuses: []migration.Status{
|
||||
{Version: 1, Applied: true},
|
||||
{Version: 2, Applied: false},
|
||||
},
|
||||
}
|
||||
|
||||
err := requireCurrentMigrations(context.Background(), reader)
|
||||
if err == nil || err.Error() !=
|
||||
"database migrations are pending; run migrate up" {
|
||||
t.Fatalf("requireCurrentMigrations() error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequireCurrentMigrationsHidesStatusFailure(t *testing.T) {
|
||||
reader := stubMigrationStatusReader{err: errors.New("database details")}
|
||||
|
||||
err := requireCurrentMigrations(context.Background(), reader)
|
||||
if err == nil || err.Error() != "database migration status failed" {
|
||||
t.Fatalf("requireCurrentMigrations() error = %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
type stubMigrationStatusReader struct {
|
||||
statuses []migration.Status
|
||||
err error
|
||||
}
|
||||
|
||||
func (reader stubMigrationStatusReader) Status(
|
||||
context.Context,
|
||||
) ([]migration.Status, error) {
|
||||
return reader.statuses, reader.err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user