From 1ff36bc5be60412a1ca436c6c5c2631f4bbbfa4a Mon Sep 17 00:00:00 2001 From: elvill <elias.villiger@uzh.ch> Date: Thu, 8 Feb 2018 09:30:45 +0100 Subject: [PATCH] Feature #5064 - Add unit tests for doDateTime --- extension/qfq/qfq/store/FillStoreForm.php | 4 +- .../qfq/tests/phpunit/FillStoreFormTest.php | 51 +++++++++++++------ 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/extension/qfq/qfq/store/FillStoreForm.php b/extension/qfq/qfq/store/FillStoreForm.php index bd36ddc28..87331cf7b 100644 --- a/extension/qfq/qfq/store/FillStoreForm.php +++ b/extension/qfq/qfq/store/FillStoreForm.php @@ -302,7 +302,7 @@ class FillStoreForm { } /** - * Check $value as date/datime/time value and convert it to FORMAT_DATE_INTERNATIONAL. + * Check $value as date/datetime/time value and convert it to FORMAT_DATE_INTERNATIONAL. * * @param array $formElement - if not set, set $formElement[FE_DATE_FORMAT] * @param string $value - date/datetime/time value in format FORMAT_DATE_INTERNATIONAL or FORMAT_DATE_GERMAN @@ -310,7 +310,7 @@ class FillStoreForm { * @return string - checked datetime string * @throws UserFormException */ - private function doDateTime(array &$formElement, $value) { + public function doDateTime(array &$formElement, $value) { $regexp = Support::dateTimeRegexp($formElement[FE_TYPE], $formElement[FE_DATE_FORMAT]); diff --git a/extension/qfq/tests/phpunit/FillStoreFormTest.php b/extension/qfq/tests/phpunit/FillStoreFormTest.php index d9a471bbb..1cbf87943 100644 --- a/extension/qfq/tests/phpunit/FillStoreFormTest.php +++ b/extension/qfq/tests/phpunit/FillStoreFormTest.php @@ -19,23 +19,44 @@ class FillStoreFormTest extends \PHPUnit_Framework_TestCase { * @throws CodeException * @throws UserFormException */ - public function testFake() { - - # Violates SANITIZE class: SANITIZE string is always an empty string. - # Access are cached: use new variables for every test. + public function testDoDateTime() { + $formElement = [ FE_TYPE => FE_TYPE_DATE, + FE_DATE_FORMAT => FORMAT_DATE_INTERNATIONAL, + FE_SHOW_SECONDS => 0 ]; + + $msg = 'doDateTime fails'; + $val = '2010-03-31'; + $this->assertEquals($val, FillStoreForm::doDateTime($formElement, $val), $msg); + $val = '2010-02-28'; + $this->assertEquals($val, FillStoreForm::doDateTime($formElement, $val), $msg); + $val = '2012-02-29'; + $this->assertEquals($val, FillStoreForm::doDateTime($formElement, $val), $msg); + + $formElement[FE_DATE_FORMAT] = FORMAT_DATE_GERMAN; + $this->assertEquals($val, FillStoreForm::doDateTime($formElement, '29.02.2012'), $msg); + } - # Check '' -// $this->assertEquals('', Sanitize::sanitize('', SANITIZE_ALLOW_ALNUMX), "SANITIZE_ALNUMX fails"); - $this->assertEquals('', ''); + /** + * @expectedException \qfq\UserFormException + */ + public function testDoDateTimeInvalidDate() { + $formElement = [ FE_TYPE => FE_TYPE_DATE, + FE_DATE_FORMAT => FORMAT_DATE_INTERNATIONAL, + FE_SHOW_SECONDS => 0 ]; + $val = '2010-02-29'; + $this->assertEquals($val, FillStoreForm::doDateTime($formElement, $val), "doDateTime is passing when it shouldn't"); + } + /** + * @expectedException \qfq\UserFormException + */ + public function testDoDateTimeInvalidDateWithTime() { + $formElement = [ FE_TYPE => FE_TYPE_DATE, + FE_DATE_FORMAT => FORMAT_DATE_INTERNATIONAL, + FE_SHOW_SECONDS => 0 ]; + $val = '2010-02-31 23:25'; + $this->assertEquals($val, FillStoreForm::doDateTime($formElement, $val), "doDateTime is passing when it shouldn't"); } -// -// /** -// * @expectedException \qfq\UserFormException -// */ -// public function testSanitizeExceptionMinMaxMissingMin() { -// Sanitize::sanitize(56, SANITIZE_ALLOW_MIN_MAX, '|45'); -// } -// + } -- GitLab