internal/budget/notify_test.go
Rama main · réplica de lectura del repositorio original.
package budget
import (
"context"
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestServiceAnnouncesEveryWrite(t *testing.T) {
ctx := context.Background()
service, err := NewService(ctx, &fakeStore{})
require.NoError(t, err)
var announced int
service.SetChangeNotifier(func(context.Context) { announced++ })
item := Budget{Scope: ScopeUserPath, Subject: "/team", PeriodSeconds: 86400, Amount: 5}
require.NoError(t, service.UpsertBudgets(ctx, []Budget{item}))
require.NoError(t, service.ReplaceConfigBudgets(ctx, []Budget{item}))
_, err = service.SaveSettings(ctx, DefaultSettings())
require.NoError(t, err)
require.NoError(t, service.ResetBudget(ctx, ScopeUserPath, "/team", 86400, time.Now()))
require.NoError(t, service.ResetAll(ctx, time.Now()))
require.NoError(t, service.DeleteBudget(ctx, ScopeUserPath, "/team", 86400))
assert.Equal(t, 6, announced)
// A write the service refuses changed nothing.
err = service.DeleteBudget(ctx, ScopeUserPath, "/team", 0)
require.Error(t, err)
assert.Equal(t, 6, announced)
}