(t *testing.T)
| 39 | ]` |
| 40 | |
| 41 | func TestSeedFromBytes(t *testing.T) { |
| 42 | t.Parallel() |
| 43 | |
| 44 | t.Run("SeedsFreshDatabase", func(t *testing.T) { |
| 45 | t.Parallel() |
| 46 | ctx := testutil.Context(t, testutil.WaitShort) |
| 47 | db, _ := dbtestutil.NewDB(t) |
| 48 | |
| 49 | require.NoError(t, prices.SeedFromBytes(ctx, db, []byte(testSeedJSON))) |
| 50 | |
| 51 | // Spot-check a fully-populated row. |
| 52 | opus, err := db.GetAIModelPriceByProviderModel(ctx, database.GetAIModelPriceByProviderModelParams{ |
| 53 | Provider: "anthropic", |
| 54 | Model: "claude-opus-4-7", |
| 55 | }) |
| 56 | require.NoError(t, err) |
| 57 | require.Equal(t, int64(5_000_000), opus.InputPrice.Int64) |
| 58 | require.Equal(t, int64(25_000_000), opus.OutputPrice.Int64) |
| 59 | require.Equal(t, int64(500_000), opus.CacheReadPrice.Int64) |
| 60 | require.Equal(t, int64(6_250_000), opus.CacheWritePrice.Int64) |
| 61 | |
| 62 | // Spot-check a row where the seed has a NULL price (OpenAI does not |
| 63 | // publish a cache_write_price). The column should land as SQL NULL. |
| 64 | gpt, err := db.GetAIModelPriceByProviderModel(ctx, database.GetAIModelPriceByProviderModelParams{ |
| 65 | Provider: "openai", |
| 66 | Model: "gpt-4o", |
| 67 | }) |
| 68 | require.NoError(t, err) |
| 69 | require.Equal(t, int64(2_500_000), gpt.InputPrice.Int64) |
| 70 | require.Equal(t, int64(10_000_000), gpt.OutputPrice.Int64) |
| 71 | require.Equal(t, int64(1_250_000), gpt.CacheReadPrice.Int64) |
| 72 | require.False(t, gpt.CacheWritePrice.Valid) |
| 73 | require.Zero(t, gpt.CacheWritePrice.Int64) |
| 74 | }) |
| 75 | |
| 76 | t.Run("Idempotent", func(t *testing.T) { |
| 77 | t.Parallel() |
| 78 | ctx := testutil.Context(t, testutil.WaitShort) |
| 79 | db, _ := dbtestutil.NewDB(t) |
| 80 | |
| 81 | require.NoError(t, prices.SeedFromBytes(ctx, db, []byte(testSeedJSON))) |
| 82 | first, err := db.GetAIModelPriceByProviderModel(ctx, database.GetAIModelPriceByProviderModelParams{ |
| 83 | Provider: "openai", Model: "gpt-4o", |
| 84 | }) |
| 85 | require.NoError(t, err) |
| 86 | |
| 87 | require.NoError(t, prices.SeedFromBytes(ctx, db, []byte(testSeedJSON))) |
| 88 | second, err := db.GetAIModelPriceByProviderModel(ctx, database.GetAIModelPriceByProviderModelParams{ |
| 89 | Provider: "openai", Model: "gpt-4o", |
| 90 | }) |
| 91 | require.NoError(t, err) |
| 92 | |
| 93 | // Prices must be identical across runs and CreatedAt must be |
| 94 | // preserved (only updated_at moves on a no-op upsert). |
| 95 | require.Equal(t, first.InputPrice, second.InputPrice) |
| 96 | require.Equal(t, first.OutputPrice, second.OutputPrice) |
| 97 | require.Equal(t, first.CreatedAt, second.CreatedAt) |
| 98 | }) |
nothing calls this directly
no test coverage detected