Ctrl K
ComunidadGuías…

internal/app/moderation/cases_test.go

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

Archivo original ↗Preguntar a KiBot
package moderation

import (
	"errors"
	"testing"

	"telesrv/internal/domain"
)

func TestValidateAppealRemedyActionsMatchesOnlyAppliedReversibleState(t *testing.T) {
	detail := domain.ModerationCaseDetail{Actions: []domain.ModerationAction{
		{ID: 2, Kind: domain.ModerationActionFreezeAccount, Status: domain.ModerationActionSucceeded},
		{ID: 1, Kind: domain.ModerationActionMarkScam, Status: domain.ModerationActionSucceeded},
		{ID: 3, Kind: domain.ModerationActionDeletePrivateMessage, Status: domain.ModerationActionFailed},
	}}
	remedies := []domain.ModerationActionDraft{
		{Kind: domain.ModerationActionClearPeerFlags},
		{Kind: domain.ModerationActionUnfreezeAccount},
	}
	if err := validateAppealRemedyActions(detail, remedies); err != nil {
		t.Fatalf("valid remedies err=%v", err)
	}
	if err := validateAppealRemedyActions(
		detail, remedies[:1],
	); !errors.Is(err, domain.ErrModerationActionInvalid) {
		t.Fatalf("missing unfreeze err=%v", err)
	}
	if err := validateAppealRemedyActions(detail, []domain.ModerationActionDraft{
		{Kind: domain.ModerationActionMarkFake},
		{Kind: domain.ModerationActionUnfreezeAccount},
	}); !errors.Is(err, domain.ErrModerationActionInvalid) {
		t.Fatalf("new punishment in appeal err=%v", err)
	}
	detail.Actions = append(detail.Actions, domain.ModerationAction{
		ID: 4, Kind: domain.ModerationActionDeletePrivateMessage,
		Status: domain.ModerationActionSucceeded,
	})
	if err := validateAppealRemedyActions(
		detail, remedies,
	); !errors.Is(err, domain.ErrModerationActionInvalid) {
		t.Fatalf("irreversible grant err=%v", err)
	}
}