Ctrl K
ComunidadGuías…

internal/budget/notify_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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)
}