Skip to content

Commit 2f3961d

Browse files
committed
Generalize ArrayConverter to Autocomplete
1 parent 875d49d commit 2f3961d

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/Form/Fields/Formatters/AutocompleteFormatter.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Code16\Sharp\Form\Fields\Formatters;
44

55
use Code16\Sharp\Form\Fields\SharpFormField;
6+
use Code16\Sharp\Utils\Transformers\ArrayConverter;
67

78
class AutocompleteFormatter extends SharpFieldFormatter
89
{
@@ -14,6 +15,8 @@ class AutocompleteFormatter extends SharpFieldFormatter
1415
*/
1516
function toFront(SharpFormField $field, $value)
1617
{
18+
$value = ArrayConverter::modelToArray($value);
19+
1720
return is_null($value) || is_array($value)
1821
? $value
1922
: [$field->itemIdAttribute() => $value];

tests/Unit/Form/Fields/Formatters/AutocompleteFormatterTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,28 @@ function we_can_format_local_value_to_front()
2525
SharpFormAutocompleteField::make("text", "local")->setItemIdAttribute("num"),
2626
$value
2727
));
28+
29+
$this->assertEquals(["id" => $value], (new AutocompleteFormatter)->toFront(
30+
SharpFormAutocompleteField::make("text", "local"),
31+
["id" => $value]
32+
));
33+
34+
$this->assertEquals(["id" => $value], (new AutocompleteFormatter)->toFront(
35+
SharpFormAutocompleteField::make("text", "local"),
36+
(object)["id" => $value]
37+
));
38+
39+
$this->assertEquals(["id" => $value], (new AutocompleteFormatter)->toFront(
40+
SharpFormAutocompleteField::make("text", "local"),
41+
new class($value) {
42+
function __construct($value) {
43+
$this->value = $value;
44+
}
45+
function toArray() {
46+
return ["id" => $this->value];
47+
}
48+
}
49+
));
2850
}
2951

3052
/** @test */

0 commit comments

Comments
 (0)