. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace tests\unit\Espo\Tools\DashboardTemplate; use Espo\Classes\FieldDuplicators\DashboardTemplate\Layout as LayoutFieldDuplicator; use Espo\Entities\DashboardTemplate; use PHPUnit\Framework\TestCase; class DuplicateTest extends TestCase { public function testDuplicate(): void { $entity = $this->createMock(DashboardTemplate::class); $original = [ (object) [ 'id' => 'tab-01', 'layout' => [ (object) [ 'id' => 'd-01', ] ], ], ]; $originalOptions = (object) [ 'd-01' => (object) ['k' => 'v'], ]; $entity->method('getLayoutRaw') ->willReturn($original); $entity->method('getDashletsOptionsRaw') ->willReturn($originalOptions); $duplicator = new LayoutFieldDuplicator(); $values = $duplicator->duplicate($entity, DashboardTemplate::FIELD_LAYOUT); $copy = $values->{DashboardTemplate::FIELD_LAYOUT} ?? null; $copyOptions = $values->{DashboardTemplate::FIELD_DASHLETS_OPTIONS} ?? null; $this->assertIsArray($copy); $this->assertIsString($copy[0]->id); $this->assertNotEquals($original[0]->id, $copy[0]->id); $this->assertNotEquals($original[0]->layout[0]->id, $copy[0]->layout[0]->id); $this->assertIsString($copy[0]->layout[0]->id); $this->assertFalse(property_exists($copyOptions, 'd-01')); $this->assertCount(1, get_object_vars($copyOptions)); } }