Skip to content

Commit 27f22ae

Browse files
Add support for allowDynamicListValues parameter in MetadataField
1 parent 5c5967a commit 27f22ae

File tree

3 files changed

+41
-16
lines changed

3 files changed

+41
-16
lines changed

src/Api/Metadata/MetadataFieldList.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
abstract class MetadataFieldList extends MetadataField
2121
{
2222
protected MetadataDataSource $datasource;
23+
protected bool $allowDynamicListValues;
2324

2425
/**
2526
* The MetadataFieldList constructor.
@@ -41,7 +42,7 @@ public function __construct(string $label, array|MetadataDataSource $dataSource
4142
*/
4243
public function getPropertyKeys(): array
4344
{
44-
return array_merge(parent::getPropertyKeys(), ['datasource']);
45+
return array_merge(parent::getPropertyKeys(), ['datasource', 'allowDynamicListValues']);
4546
}
4647

4748
/**
@@ -71,4 +72,22 @@ public function setDataSource(array|MetadataDataSource $metadataDataSource): voi
7172
throw new InvalidArgumentException('The specified MetadataFieldList datasource is not valid.');
7273
}
7374
}
75+
76+
/**
77+
* Gets the value indicating whether the field should allow dynamic list values.
78+
*/
79+
public function isAllowDynamicListValues(): bool
80+
{
81+
return $this->allowDynamicListValues;
82+
}
83+
84+
/**
85+
* Sets the value indicating whether the field should allow dynamic list values.
86+
*
87+
* @param bool $allowDynamicListValues The value to set.
88+
*/
89+
public function setAllowDynamicListValues(bool $allowDynamicListValues = true): void
90+
{
91+
$this->allowDynamicListValues = $allowDynamicListValues;
92+
}
7493
}

tests/Integration/Admin/MetadataFieldsTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ public function testCreateSetMetadataField()
246246
$setMetadataField = new SetMetadataField(self::$EXTERNAL_ID_SET, self::$DATASOURCE_MULTIPLE);
247247
$setMetadataField->setExternalId(self::$EXTERNAL_ID_SET);
248248
$setMetadataField->setDefaultValue([self::$DATASOURCE_ENTRY_EXTERNAL_ID, 'v4']);
249+
$setMetadataField->setAllowDynamicListValues(false);
249250

250251
$result = self::$adminApi->addMetadataField($setMetadataField);
251252

@@ -256,7 +257,8 @@ public function testCreateSetMetadataField()
256257
'label' => self::$EXTERNAL_ID_SET,
257258
'external_id' => self::$EXTERNAL_ID_SET,
258259
'mandatory' => false,
259-
'default_value' => [self::$DATASOURCE_ENTRY_EXTERNAL_ID, 'v4']
260+
'default_value' => [self::$DATASOURCE_ENTRY_EXTERNAL_ID, 'v4'],
261+
'allow_dynamic_list_values' => false,
260262
]
261263
);
262264
}

tests/Unit/Admin/MetadataFieldsTest.php

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,13 @@ class MetadataFieldsTest extends UnitTestCase
3030
const EXTERNAL_ID_INT = 'metadata_external_id_int';
3131
const EXTERNAL_ID_ENUM = 'metadata_external_id_enum';
3232
const EXTERNAL_ID_DELETE = 'metadata_deletion_test';
33-
const DATASOURCE_SINGLE = [
34-
[
35-
'value' => 'v1',
36-
'external_id' => 'metadata_datasource_entry_external_id'
37-
]
38-
];
33+
const DATASOURCE_SINGLE
34+
= [
35+
[
36+
'value' => 'v1',
37+
'external_id' => 'metadata_datasource_entry_external_id',
38+
],
39+
];
3940

4041
/**
4142
* Test getting a list of all metadata fields.
@@ -65,7 +66,7 @@ public function testCreateStringMetadataField()
6566

6667
$stringMetadataField = new StringMetadataField(self::EXTERNAL_ID_STRING);
6768
$stringMetadataField->setExternalId(self::EXTERNAL_ID_STRING);
68-
$stringMetadataField->setRestrictions(["readonly_ui" => true]);
69+
$stringMetadataField->setRestrictions(['readonly_ui' => true]);
6970
$stringMetadataField->setMandatory(false);
7071
$stringMetadataField->setDefaultDisabled();
7172

@@ -81,7 +82,7 @@ public function testCreateStringMetadataField()
8182
'external_id' => self::EXTERNAL_ID_STRING,
8283
'label' => self::EXTERNAL_ID_STRING,
8384
'mandatory' => false,
84-
'restrictions' => ["readonly_ui" => true],
85+
'restrictions' => ['readonly_ui' => true],
8586
'default_disabled' => true,
8687
]
8788
);
@@ -109,7 +110,7 @@ public function testCreateIntMetadataField()
109110
[
110111
'type' => MetadataFieldType::INTEGER,
111112
'external_id' => self::EXTERNAL_ID_INT,
112-
'label' => self::EXTERNAL_ID_INT
113+
'label' => self::EXTERNAL_ID_INT,
113114
]
114115
);
115116
}
@@ -126,6 +127,7 @@ public function testCreateEnumMetadataField()
126127
$enumMetadataField = new EnumMetadataField(self::EXTERNAL_ID_ENUM, self::DATASOURCE_SINGLE);
127128
$enumMetadataField->setDataSource(self::DATASOURCE_SINGLE);
128129
$enumMetadataField->setExternalId(self::EXTERNAL_ID_ENUM);
130+
$enumMetadataField->setAllowDynamicListValues();
129131

130132
$mockAdminApi->addMetadataField($enumMetadataField);
131133
$lastRequest = $mockAdminApi->getMockHandler()->getLastRequest();
@@ -135,12 +137,14 @@ public function testCreateEnumMetadataField()
135137
self::assertRequestFields(
136138
$lastRequest,
137139
[
138-
'datasource' => [
139-
'values' => self::DATASOURCE_SINGLE
140+
'datasource' => [
141+
'values' => self::DATASOURCE_SINGLE,
140142
],
141-
'external_id' => self::EXTERNAL_ID_ENUM,
142-
'label' => self::EXTERNAL_ID_ENUM,
143-
'type' => MetadataFieldType::ENUM
143+
'external_id' => self::EXTERNAL_ID_ENUM,
144+
'label' => self::EXTERNAL_ID_ENUM,
145+
'type' => MetadataFieldType::ENUM,
146+
'allow_dynamic_list_values' => true,
147+
144148
]
145149
);
146150
}

0 commit comments

Comments
 (0)