You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.1 KiB
Go

package handler
import (
"testing"
"time"
"github.com/denisovdennis/autohero/internal/model"
)
func TestConsumeFreeBuffCharge_SubscriberConsumesCharge(t *testing.T) {
now := time.Now()
pe := now.Add(time.Hour)
h := &model.Hero{
SubscriptionActive: true,
BuffFreeChargesRemaining: 10,
BuffCharges: map[string]model.BuffChargeState{
string(model.BuffRush): {Remaining: 2, PeriodEnd: &pe},
},
}
if err := consumeFreeBuffCharge(h, model.BuffRush, now); err != nil {
t.Fatal(err)
}
st := h.BuffCharges[string(model.BuffRush)]
if st.Remaining != 1 {
t.Fatalf("subscriber should consume charge, want remaining 1, got %d", st.Remaining)
}
}
func TestConsumeFreeBuffCharge_Exhausted(t *testing.T) {
end := time.Now().Add(time.Hour)
h := &model.Hero{
BuffFreeChargesRemaining: 0,
BuffQuotaPeriodEnd: &end,
BuffCharges: map[string]model.BuffChargeState{
string(model.BuffRush): {Remaining: 0, PeriodEnd: &end},
},
}
if err := consumeFreeBuffCharge(h, model.BuffRush, time.Now()); err == nil {
t.Fatal("expected error when exhausted")
}
}