package logic import ( "context" "errors" "testing" "time" "spark-server/internal/infrastructure/id" "spark-server/internal/module/user/entity" usermodel "spark-server/internal/module/user/model" "spark-server/internal/pkg/errs" ) func TestAssertCanSendMuted(t *testing.T) { ids, err := id.New(1) if err != nil { t.Fatal(err) } repo := usermodel.NewMemoryRepo() users := NewService(repo, nil, ids, nil) ctx := context.Background() u, err := users.AuthenticateEmail(ctx, "test11@spark.com", "1", &entity.LoginDevice{DeviceID: 11, DeviceType: entity.DeviceWeb}) if err != nil { t.Fatal(err) } until := time.Now().Add(time.Hour) if err := repo.ExtendSendMutedUntil(ctx, u.ID, until); err != nil { t.Fatal(err) } if err := users.AssertCanSend(ctx, u.ID); !errors.Is(err, errs.ErrSendMuted) { t.Fatalf("muted %v", err) } } func TestDisableAccount(t *testing.T) { ids, err := id.New(2) if err != nil { t.Fatal(err) } repo := usermodel.NewMemoryRepo() users := NewService(repo, nil, ids, nil) ctx := context.Background() u, err := users.AuthenticateEmail(ctx, "test12@spark.com", "1", &entity.LoginDevice{DeviceID: 12, DeviceType: entity.DeviceWeb}) if err != nil { t.Fatal(err) } if err := users.DisableAccount(ctx, u.ID); err != nil { t.Fatal(err) } got, err := repo.GetByID(ctx, u.ID) if err != nil || got.Status != entity.StatusDisabled { t.Fatalf("status %+v %v", got, err) } }