diff --git a/src/Inputs/ColorPicker.php b/src/Inputs/ColorPicker.php index 9a3ea44..9e40274 100644 --- a/src/Inputs/ColorPicker.php +++ b/src/Inputs/ColorPicker.php @@ -6,7 +6,7 @@ use Contributte\FormsBootstrap\Traits\StandardValidationTrait; use Nette\Utils\Html; -class ColorPicker extends \Nette\Forms\Controls\ColorPicker +class ColorPicker extends \Nette\Forms\Controls\ColorPicker implements IValidationInput { use StandardValidationTrait; diff --git a/src/Inputs/DateTimeControl.php b/src/Inputs/DateTimeControl.php index ea7e01c..e53ff20 100644 --- a/src/Inputs/DateTimeControl.php +++ b/src/Inputs/DateTimeControl.php @@ -6,7 +6,7 @@ use Contributte\FormsBootstrap\Traits\StandardValidationTrait; use Nette\Utils\Html; -class DateTimeControl extends \Nette\Forms\Controls\DateTimeControl +class DateTimeControl extends \Nette\Forms\Controls\DateTimeControl implements IValidationInput { use StandardValidationTrait; diff --git a/tests/Inputs/ColorPickerTest.php b/tests/Inputs/ColorPickerTest.php index e2e0b80..d4503b7 100644 --- a/tests/Inputs/ColorPickerTest.php +++ b/tests/Inputs/ColorPickerTest.php @@ -3,6 +3,8 @@ namespace Tests\Inputs; use Contributte\FormsBootstrap\BootstrapForm; +use Contributte\FormsBootstrap\Inputs\IValidationInput; +use Nette\Application\UI\Presenter; use Tests\BaseTestCase; class ColorPickerTest extends BaseTestCase @@ -16,4 +18,21 @@ public function testDefaultTextInput(): void $this->assertEquals('', (string) $input->getLabel()); } + public function testShowsValidationState(): void + { + $form = new BootstrapForm(); + // Rendering a form requires a presenter with a non-empty action; see BaseTestCase users. + $form->setParent($this->createMock(Presenter::class)); + $form->setAction('/'); + + $input = $form->addColor('color', 'Choose color'); + $this->assertInstanceOf(IValidationInput::class, $input); + + $input->addError('Foobar error message'); + + $html = (string) $form; + $this->assertStringContainsString('class="form-control is-invalid"', $html); + $this->assertStringContainsString('
Foobar error message
', $html); + } + } diff --git a/tests/Inputs/DateTimeControlTest.php b/tests/Inputs/DateTimeControlTest.php index 56605c3..4f1d31e 100644 --- a/tests/Inputs/DateTimeControlTest.php +++ b/tests/Inputs/DateTimeControlTest.php @@ -3,6 +3,8 @@ namespace Tests\Inputs; use Contributte\FormsBootstrap\BootstrapForm; +use Contributte\FormsBootstrap\Inputs\IValidationInput; +use Nette\Application\UI\Presenter; use Tests\BaseTestCase; class DateTimeControlTest extends BaseTestCase @@ -15,4 +17,21 @@ public function testDefaultDate(): void $this->assertEquals('', $dt->getControl()->render()); } + public function testShowsValidationState(): void + { + $form = new BootstrapForm(); + // Rendering a form requires a presenter with a non-empty action; see BaseTestCase users. + $form->setParent($this->createMock(Presenter::class)); + $form->setAction('/'); + + $dt = $form->addDate('date', 'Date'); + $this->assertInstanceOf(IValidationInput::class, $dt); + + $dt->addError('Foobar error message'); + + $html = (string) $form; + $this->assertStringContainsString('class="form-control is-invalid"', $html); + $this->assertStringContainsString('
Foobar error message
', $html); + } + }