ENH Refactor the way selected options are returned for read only tag fields.

This commit is contained in:
adunn49 2024-10-01 16:30:54 +13:00
parent 845794fb99
commit efc9f45962
2 changed files with 18 additions and 1 deletions

View File

@ -27,7 +27,8 @@ class ReadonlyTagField extends TagField
{
$options = array();
foreach ($this->getOptions()->filter('Selected', true) as $option) {
// only get the selected options
foreach ($this->getOptions(true) as $option) {
$options[] = $option->Title;
}

View File

@ -408,6 +408,22 @@ class TagFieldTest extends SapphireTest
$field->setTitleField('Name');
$readOnlyField = $field->performReadonlyTransformation();
$this->assertEquals('Name', $readOnlyField->getTitleField());
// Also check Field options
$field = new TagField('Tags', '', TagFieldTestBlogTag::get());
$field->setTitleField('Title');
$field->setValue(['Tag1']);
// When not read only (and not lazy-loading) all source options are returned
$htmlText = $field->Field();
$this->assertStringContainsString('Tag1', $htmlText);
$this->assertStringContainsString('222', $htmlText);
// When read only mode, only selected options are returned
$readOnlyField = $field->performReadonlyTransformation();
$htmlText = $readOnlyField->Field();
$this->assertStringContainsString('Tag1', $htmlText);
$this->assertStringNotContainsString('222', $htmlText);
}
public function testItDisplaysWithSelectedValuesFromDataList()