Merge pull request #179 from creative-commoners/pulls/1/nested-gridfield-behat-tests

MNT Object for Nested GridField testing
This commit is contained in:
Guy Sartorelli 2024-05-28 09:52:57 +12:00 committed by GitHub
commit 0c704a2095
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 176 additions and 0 deletions

View File

@ -15,6 +15,19 @@ SilverStripe\FrameworkTest\Model\Employee:
extensions:
- SilverStripe\FrameworkTest\Extension\TestDataObjectExtension
SilverStripe\FrameworkTest\Fields\NestedGridField\RootNode:
extensions:
- SilverStripe\FrameworkTest\Extension\TestDataObjectExtension
SilverStripe\FrameworkTest\Fields\NestedGridField\BranchNode:
extensions:
- SilverStripe\FrameworkTest\Extension\TestDataObjectExtension
SilverStripe\FrameworkTest\Fields\NestedGridField\LeafNode:
extensions:
- SilverStripe\FrameworkTest\Extension\TestDataObjectExtension
SilverStripe\FrameworkTest\Fields\NestedGridField\NonRelationalData:
extensions:
- SilverStripe\FrameworkTest\Extension\TestDataObjectExtension
SilverStripe\ORM\DatabaseAdmin:
extensions:
- SilverStripe\FrameworkTest\GridFieldArbitraryData\DatabaseBuildExtension

View File

@ -0,0 +1,38 @@
<?php
namespace SilverStripe\FrameworkTest\Fields\NestedGridField;
use SilverStripe\Forms\GridField\GridFieldConfig;
use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor;
use SilverStripe\ORM\DataObject;
use Symbiote\GridFieldExtensions\GridFieldNestedForm;
class BranchNode extends DataObject
{
private static $table_name = 'NestedGridField_BranchNode';
private static $db = [
'Name' => 'Varchar(50)',
'Category' => 'Varchar(50)',
];
private static $has_one = [
'RootNode' => RootNode::class,
];
private static $has_many = [
'LeafNodes' => LeafNode::class,
];
private static $summary_fields = [
'Name',
'Category',
];
public function getNestedConfig(): GridFieldConfig
{
$config = new GridFieldConfig_RecordEditor();
$config->addComponent(GridFieldNestedForm::create()->setRelationName('LeafNodes'));
return $config;
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace SilverStripe\FrameworkTest\Fields\NestedGridField;
use SilverStripe\ORM\DataObject;
class LeafNode extends DataObject
{
private static $table_name = 'NestedGridField_LeafNode';
private static $db = [
'Name' => 'Varchar(50)',
'Category'=>'Varchar(255)',
];
private static $has_one = [
'BranchNode' => BranchNode::class,
];
private static $summary_fields = [
'Name',
'Category',
];
}

View File

@ -0,0 +1,40 @@
<?php
namespace SilverStripe\FrameworkTest\Fields\NestedGridField;
use RuntimeException;
use SilverStripe\Admin\ModelAdmin;
use SilverStripe\Forms\GridField\GridFieldConfig;
use Symbiote\GridFieldExtensions\GridFieldNestedForm;
class NestedGridFieldAdmin extends ModelAdmin
{
private static string $url_segment = 'nested-gridfield-section';
private static string $menu_title = 'Nested GridField Section';
private static string $menu_icon_class = 'font-icon-block-banner';
private static array $managed_models = [
'root-nodes' => [
'title' => 'Root Nodes',
'dataClass' => RootNode::class,
],
'non-relational-data' => [
'title' => 'Non-Relational Data',
'dataClass' => NonRelationalData::class,
],
];
protected function getGridFieldConfig(): GridFieldConfig
{
$config = parent::getGridFieldConfig();
if ($this->modelClass === RootNode::class) {
$config->addComponent(GridFieldNestedForm::create()->setRelationName('BranchNodes'));
} else if ($this->modelClass === NonRelationalData::class) {
$config->addComponent(GridFieldNestedForm::create()->setRelationName('getList'));
} else {
throw new RuntimeException("Unexpected Model name: {$this->tab}");
}
return $config;
}
}

View File

@ -0,0 +1,26 @@
<?php
namespace SilverStripe\FrameworkTest\Fields\NestedGridField;
use SilverStripe\FrameworkTest\Model\Company;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
class NonRelationalData extends DataObject
{
private static $table_name = 'NestedGridField_NonRelationalData';
private static $db = [
'Name' => 'Varchar(50)',
];
public function getList() {
$list = ArrayList::create();
$data = Company::get()->byIDs([1,2,3,4,5]);
foreach ($data as $value) {
$list->push($value);
}
return $list;
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace SilverStripe\FrameworkTest\Fields\NestedGridField;
use SilverStripe\ORM\DataObject;
class RootNode extends DataObject
{
private static $table_name = 'NestedGridField_RootNode';
private static $db = [
'Name' => 'Varchar(50)',
];
private static $has_many = [
'BranchNodes' => BranchNode::class,
];
}

View File

@ -0,0 +1,17 @@
<?php
namespace SilverStripe\FrameworkTest\Fields\NestedGridField;
use SilverStripe\Core\Extension;
use SilverStripe\Security\Group;
use Symbiote\GridFieldExtensions\GridFieldNestedForm;
class SecurityAdminExtension extends Extension
{
public function updateGridFieldConfig($config)
{
if ($this->owner->getModelClass() === Group::class) {
$config->addComponent(GridFieldNestedForm::create()->setRelationName('Members'));
}
}
}