toBeTrue(); expect(CactiValidator::isValid('', $constraints))->toBeFalse(); expect(CactiValidator::isValid(null, $constraints))->toBeFalse(); }); it('validates host template version (NotBlank)', function () { $constraints = [new Assert\NotBlank()]; expect(CactiValidator::isValid('1.2.0', $constraints))->toBeTrue(); expect(CactiValidator::isValid('', $constraints))->toBeFalse(); }); it('validates host template class (NotBlank)', function () { $constraints = [new Assert\NotBlank()]; expect(CactiValidator::isValid('Device', $constraints))->toBeTrue(); expect(CactiValidator::isValid('', $constraints))->toBeFalse(); }); it('validates host template copyright (NotBlank)', function () { $constraints = [new Assert\NotBlank()]; expect(CactiValidator::isValid('2024 The Cacti Group', $constraints))->toBeTrue(); expect(CactiValidator::isValid('', $constraints))->toBeFalse(); }); it('validates optional fields (no NotBlank)', function () { $constraints = []; // Optional fields in legacy were just form_input_validate(..., true) expect(CactiValidator::isValid('something', $constraints))->toBeTrue(); expect(CactiValidator::isValid('', $constraints))->toBeTrue(); });