(t *testing.T)
| 2609 | } |
| 2610 | |
| 2611 | func TestGroupAIBudget(t *testing.T) { |
| 2612 | t.Parallel() |
| 2613 | |
| 2614 | t.Run("Upsert", func(t *testing.T) { |
| 2615 | t.Parallel() |
| 2616 | |
| 2617 | adminClient, group := setupGroupAIBudgetTest(t) |
| 2618 | ctx := testutil.Context(t, testutil.WaitLong) |
| 2619 | |
| 2620 | // First upsert creates the budget. |
| 2621 | newBudget, err := adminClient.UpsertGroupAIBudget(ctx, group.ID, codersdk.UpsertGroupAIBudgetRequest{ |
| 2622 | SpendLimitMicros: 500_000_000, |
| 2623 | }) |
| 2624 | require.NoError(t, err) |
| 2625 | require.Equal(t, group.ID, newBudget.GroupID) |
| 2626 | require.EqualValues(t, 500_000_000, newBudget.SpendLimitMicros) |
| 2627 | |
| 2628 | // Second upsert updates the existing budget. |
| 2629 | updatedBudget, err := adminClient.UpsertGroupAIBudget(ctx, group.ID, codersdk.UpsertGroupAIBudgetRequest{ |
| 2630 | SpendLimitMicros: 1_000_000_000, |
| 2631 | }) |
| 2632 | require.NoError(t, err) |
| 2633 | require.EqualValues(t, 1_000_000_000, updatedBudget.SpendLimitMicros) |
| 2634 | |
| 2635 | // GET returns the latest value. |
| 2636 | currentBudget, err := adminClient.GroupAIBudget(ctx, group.ID) |
| 2637 | require.NoError(t, err) |
| 2638 | require.EqualValues(t, 1_000_000_000, currentBudget.SpendLimitMicros) |
| 2639 | }) |
| 2640 | |
| 2641 | t.Run("GetWhenAbsent_404", func(t *testing.T) { |
| 2642 | t.Parallel() |
| 2643 | |
| 2644 | adminClient, group := setupGroupAIBudgetTest(t) |
| 2645 | ctx := testutil.Context(t, testutil.WaitLong) |
| 2646 | |
| 2647 | _, err := adminClient.GroupAIBudget(ctx, group.ID) |
| 2648 | var sdkErr *codersdk.Error |
| 2649 | require.ErrorAs(t, err, &sdkErr) |
| 2650 | require.Equal(t, http.StatusNotFound, sdkErr.StatusCode()) |
| 2651 | }) |
| 2652 | |
| 2653 | t.Run("DeleteWhenAbsent_404", func(t *testing.T) { |
| 2654 | t.Parallel() |
| 2655 | |
| 2656 | adminClient, group := setupGroupAIBudgetTest(t) |
| 2657 | ctx := testutil.Context(t, testutil.WaitLong) |
| 2658 | |
| 2659 | err := adminClient.DeleteGroupAIBudget(ctx, group.ID) |
| 2660 | var sdkErr *codersdk.Error |
| 2661 | require.ErrorAs(t, err, &sdkErr) |
| 2662 | require.Equal(t, http.StatusNotFound, sdkErr.StatusCode()) |
| 2663 | }) |
| 2664 | |
| 2665 | t.Run("DeleteWhenPresent", func(t *testing.T) { |
| 2666 | t.Parallel() |
| 2667 | |
| 2668 | adminClient, group := setupGroupAIBudgetTest(t) |
nothing calls this directly
no test coverage detected