Przejdź do głównej zawartości

Wyniki walidacji

Metody isValid() i validate() są dostępne na każdej klasie identyfikatora i nigdy nie rzucają wyjątku.

validate() zwraca instancję ValidationResult.

WłaściwośćTypOpis
isValidbooleantrue jeśli walidacja zakończyła się sukcesem.
failuresreadonly ValidationFailure[]Pusta tablica przy poprawnym numerze; jeden lub więcej błędów przy nieprawidłowym.
MetodaTyp zwracanyOpis
isFailed()booleanNegacja isValid.
getFailures()readonly ValidationFailure[]Zwraca tablicę błędów.
getFirstFailure()ValidationFailure | nullPierwszy błąd lub null przy poprawnym wejściu.
hasFailureReason(reason: ValidationFailureReason)booleantrue jeśli którykolwiek błąd pasuje do podanego powodu.
import { Numerik, ValidationFailureReason } from '@slashlab/numerik-js'
// Wynik pozytywny
const result = Numerik.pesel().validate('92060512186')
result.isValid // true
result.isFailed() // false
result.failures // []
result.getFirstFailure() // null
// Wynik negatywny
const failed = Numerik.nip().validate('0000000000')
failed.isValid // false
failed.isFailed() // true
// Sprawdź pierwszy (i zazwyczaj jedyny) błąd
const failure = failed.getFirstFailure()
failure?.reason // ValidationFailureReason.InvalidFormat
failure?.message // 'NIP tax office code cannot be 000.'
// Sprawdź konkretny powód
failed.hasFailureReason(ValidationFailureReason.InvalidChecksum) // false
failed.hasFailureReason(ValidationFailureReason.InvalidFormat) // true

Każdy element w failures to instancja ValidationFailure.

WłaściwośćTypOpis
reasonValidationFailureReasonWartość enum identyfikująca kategorię błędu.
messagestringOpis błędu przeznaczony do logowania i debugowania.

ValidationFailureReason to enum, którego wartości są ciągami znaków.

PrzypadekWartośćOpis
InvalidLengthinvalid_lengthNumer ma nieprawidłową liczbę cyfr.
InvalidCharactersinvalid_charactersPo usunięciu dozwolonych separatorów pozostały niedozwolone znaki.
InvalidFormatinvalid_formatDługość i znaki są poprawne, ale numer narusza regułę strukturalną (np. kod urzędu skarbowego NIP 000).
PrzypadekWartośćOpis
InvalidChecksuminvalid_checksumObliczona suma kontrolna nie zgadza się z cyfrą kontrolną.
PrzypadekWartośćOpis
InvalidDateinvalid_dateData zakodowana w identyfikatorze nie istnieje w kalendarzu.
FutureDatefuture_dateZakodowana data urodzenia jest w przyszłości.
InvalidMonthinvalid_monthKodowanie miesiąca nie odpowiada żadnemu ze znanych zakresów stulecia.
PrzypadekWartośćOpis
AllZerosall_zerosWszystkie cyfry są zerami — strukturalnie możliwe, ale semantycznie nieprawidłowe.
AllSameDigitall_same_digitWszystkie cyfry są takie same i niezerowe.

ValidationResult udostępnia trzy statyczne konstruktory przydatne przy pisaniu testów:

import { ValidationResult, ValidationFailure, ValidationFailureReason } from '@slashlab/numerik-js'
// Sukces
ValidationResult.pass()
// Niepowodzenie z listą błędów
ValidationResult.fail([
new ValidationFailure(ValidationFailureReason.InvalidChecksum, 'Checksum mismatch.'),
])
// Niepowodzenie z jednym powodem — skrócona forma
ValidationResult.failWithReason(
ValidationFailureReason.InvalidLength,
'Expected 11 digits, got 10.',
)