channel_pricing_multipliers_migration_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package migrations
  2. import (
  3. "strings"
  4. "testing"
  5. "github.com/stretchr/testify/require"
  6. )
  7. func TestChannelPricingMultipliersMigration(t *testing.T) {
  8. content, err := FS.ReadFile("228_channel_pricing_multipliers.sql")
  9. require.NoError(t, err)
  10. sql := strings.Join(strings.Fields(string(content)), " ")
  11. for _, column := range []string{
  12. "fast_multiplier NUMERIC(12,6)",
  13. "flex_multiplier NUMERIC(12,6)",
  14. "input_multiplier NUMERIC(12,6)",
  15. "output_multiplier NUMERIC(12,6)",
  16. "cache_write_multiplier NUMERIC(12,6)",
  17. "cache_read_multiplier NUMERIC(12,6)",
  18. } {
  19. require.Contains(t, sql, "ADD COLUMN IF NOT EXISTS "+column)
  20. }
  21. constraints := []struct {
  22. table string
  23. name string
  24. column string
  25. }{
  26. {"channel_model_pricing", "channel_model_pricing_fast_multiplier_positive", "fast_multiplier"},
  27. {"channel_model_pricing", "channel_model_pricing_flex_multiplier_positive", "flex_multiplier"},
  28. {"channel_pricing_intervals", "channel_pricing_intervals_input_multiplier_positive", "input_multiplier"},
  29. {"channel_pricing_intervals", "channel_pricing_intervals_output_multiplier_positive", "output_multiplier"},
  30. {"channel_pricing_intervals", "channel_pricing_intervals_cache_write_multiplier_positive", "cache_write_multiplier"},
  31. {"channel_pricing_intervals", "channel_pricing_intervals_cache_read_multiplier_positive", "cache_read_multiplier"},
  32. }
  33. for _, constraint := range constraints {
  34. require.Contains(t, sql, "conname = '"+constraint.name+"' AND conrelid = '"+constraint.table+"'::regclass")
  35. require.Contains(t, sql, "ALTER TABLE "+constraint.table+" ADD CONSTRAINT "+constraint.name+
  36. " CHECK ("+constraint.column+" IS NULL OR "+constraint.column+" > 0)")
  37. }
  38. }