Skip to content

Commit a54a180

Browse files
authored
Merge pull request #27 from maltehuebner/fix/trim-int-conversion
Fix convertToInt() rejecting integers with whitespace
2 parents 3e511eb + 358d308 commit a54a180

2 files changed

Lines changed: 39 additions & 0 deletions

File tree

src/Factory/ValueAssigner/ValueAssigner.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,8 @@ protected function assignEntityValueFromRepository(RequestParameterList $request
134134

135135
protected function convertToInt(string $stringValue, string $parameterName): int
136136
{
137+
$stringValue = trim($stringValue);
138+
137139
if (!preg_match('/^-?\d+$/', $stringValue)) {
138140
throw new \InvalidArgumentException(sprintf('Parameter "%s" is not a valid integer: "%s"', $parameterName, $stringValue));
139141
}

tests/Factory/ValueAssigner/ValueAssignerTest.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,4 +272,41 @@ public function testConvertToIntAcceptsNegativeNumber(): void
272272

273273
$this->assertTrue(true);
274274
}
275+
276+
public function testConvertToIntTrimsWhitespace(): void
277+
{
278+
$list = new RequestParameterList();
279+
$list->add('fromDateTime', ' 1711922400');
280+
281+
$query = new \MalteHuebner\DataQueryBundle\Query\FromDateTimeQuery();
282+
283+
$queryField = new QueryField();
284+
$queryField
285+
->setMethodName('setFromDateTime')
286+
->setParameterName('fromDateTime')
287+
->setType(ValueType::INT);
288+
289+
$this->valueAssigner->assignQueryPropertyValueFromRequest($list, $query, $queryField);
290+
291+
$this->assertTrue(true);
292+
}
293+
294+
public function testConvertToIntTrimsWhitespaceForParameter(): void
295+
{
296+
$list = new RequestParameterList();
297+
$list->add('size', ' 25 ');
298+
299+
$parameter = new SizeParameter();
300+
$parameter->setEntityFqcn('App\\Entity\\Test');
301+
302+
$parameterField = new ParameterField();
303+
$parameterField
304+
->setMethodName('setSize')
305+
->setParameterName('size')
306+
->setType(ValueType::INT);
307+
308+
$this->valueAssigner->assignParameterPropertyValueFromRequest($list, $parameter, $parameterField);
309+
310+
$this->assertTrue(true);
311+
}
275312
}

0 commit comments

Comments
 (0)