Files
sub2api/backend/migrations/auth_identity_payment_migrations_regression_test.go
2026-04-22 11:17:45 +08:00

62 lines
2.2 KiB
Go

package migrations
import (
"strings"
"testing"
"github.com/stretchr/testify/require"
)
func TestMigration112UsesIdempotentAddColumn(t *testing.T) {
content, err := FS.ReadFile("112_add_payment_order_provider_key_snapshot.sql")
require.NoError(t, err)
sql := string(content)
require.Contains(t, sql, "ADD COLUMN IF NOT EXISTS provider_key VARCHAR(30)")
require.NotContains(t, sql, "ADD COLUMN provider_key VARCHAR(30);")
}
func TestMigration118DoesNotForceOverwriteAuthSourceGrantDefaults(t *testing.T) {
content, err := FS.ReadFile("118_wechat_dual_mode_and_auth_source_defaults.sql")
require.NoError(t, err)
sql := string(content)
require.NotContains(t, sql, "UPDATE settings")
require.NotContains(t, sql, "SET value = 'false'")
require.True(t, strings.Contains(sql, "ON CONFLICT (key) DO NOTHING"))
}
func TestMigration109KeepsPublishedBackfillBodyAndDefersReportTypeWidening(t *testing.T) {
content, err := FS.ReadFile("109_auth_identity_compat_backfill.sql")
require.NoError(t, err)
sql := string(content)
require.NotContains(t, sql, "ALTER TABLE auth_identity_migration_reports")
followupContent, err := FS.ReadFile("121_auth_identity_migration_report_type_widen.sql")
require.NoError(t, err)
followupSQL := string(followupContent)
require.Contains(t, followupSQL, "ALTER TABLE auth_identity_migration_reports")
require.Contains(t, followupSQL, "ALTER COLUMN report_type TYPE VARCHAR(80)")
}
func TestMigration119DefersPaymentIndexRolloutToOnlineFollowup(t *testing.T) {
content, err := FS.ReadFile("119_enforce_payment_orders_out_trade_no_unique.sql")
require.NoError(t, err)
sql := string(content)
require.Contains(t, sql, "120_enforce_payment_orders_out_trade_no_unique_notx.sql")
require.Contains(t, sql, "NULL;")
require.NotContains(t, sql, "CREATE UNIQUE INDEX")
require.NotContains(t, sql, "DROP INDEX")
followupContent, err := FS.ReadFile("120_enforce_payment_orders_out_trade_no_unique_notx.sql")
require.NoError(t, err)
followupSQL := string(followupContent)
require.Contains(t, followupSQL, "CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS paymentorder_out_trade_no_unique")
require.Contains(t, followupSQL, "DROP INDEX CONCURRENTLY IF EXISTS paymentorder_out_trade_no")
require.Contains(t, followupSQL, "WHERE out_trade_no <> ''")
}