Skip to content

Commit

Permalink
Merge branch '6.0' into 6
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Dec 15, 2024
2 parents 53b3af4 + dc973c6 commit c5351c2
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/Forms/SingleSelectField.php
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,13 @@ public function getValueForValidation(): mixed
public function getDefaultValue()
{
$value = $this->Value();
$validValues = $this->getValidValues();
// assign value to field, such as first option available
if ($value === null) {
if ($value === null || !in_array($value, $validValues)) {
if ($this->getHasEmptyDefault()) {
$value = '';
} else {
$values = $this->getValidValues();
$values = $validValues;
$value = array_shift($values);
}
}
Expand Down
58 changes: 58 additions & 0 deletions tests/php/Forms/DropdownFieldTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -600,4 +600,62 @@ public function testEmptySourceDoesntBlockValidation()
$field->setDisabledItems([ 'A', 'B' ]);
$this->assertTrue($field->validate()->isValid());
}

public function provideGetDefaultValue(): array
{
return [
[
'value' => null,
'hasEmptyDefault' => true,
'expected' => '',
],
[
'value' => null,
'hasEmptyDefault' => false,
'expected' => 'one',
],
[
'value' => 'four',
'hasEmptyDefault' => true,
'expected' => '',
],
[
'value' => 'four',
'hasEmptyDefault' => false,
'expected' => 'one',
],
[
'value' => 'two',
'hasEmptyDefault' => true,
'expected' => 'two',
],
[
'value' => 'two',
'hasEmptyDefault' => false,
'expected' => 'two',
],
[
// Note this is an int, but matches against the string key
'value' => 3,
'hasEmptyDefault' => true,
'expected' => 3,
],
[
'value' => 3,
'hasEmptyDefault' => false,
'expected' => 3,
],
];
}

/**
* @dataProvider provideGetDefaultValue
*/
public function testGetDefaultValue(mixed $value, bool $hasEmptyDefault, mixed $expected): void
{
$field = new DropdownField('MyField', source: ['one' => 'one', 'two' => 'two', '3' => 'three']);
$field->setHasEmptyDefault($hasEmptyDefault);
$field->setValue($value);
$this->assertSame($expected, $field->getDefaultValue());
}
}

0 comments on commit c5351c2

Please sign in to comment.