From e72541e585a1c4ee51a0819261b3c6becc77b7d0 Mon Sep 17 00:00:00 2001
From: Thomas Steur <tsteur@users.noreply.github.com>
Date: Wed, 14 Dec 2016 15:33:35 +1300
Subject: [PATCH] Add possibility to set (overwrite) the widgets in a container
 (#11005)

* add possible to set container widgets

* update php doc
---
 core/Widget/WidgetContainerConfig.php          | 10 ++++++++++
 .../Unit/Widget/WidgetContainerConfigTest.php  | 18 ++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/core/Widget/WidgetContainerConfig.php b/core/Widget/WidgetContainerConfig.php
index 258d182ab4..ffbb028cd7 100644
--- a/core/Widget/WidgetContainerConfig.php
+++ b/core/Widget/WidgetContainerConfig.php
@@ -95,6 +95,16 @@ class WidgetContainerConfig extends WidgetConfig
         return $this;
     }
 
+    /**
+     * Set (overwrite) widget configs.
+     *
+     * @param WidgetConfig[] $configs
+     */
+    public function setWidgetConfigs($configs)
+    {
+        $this->widgets = $configs;
+    }
+
     /**
      * Get all added widget configs.
      *
diff --git a/tests/PHPUnit/Unit/Widget/WidgetContainerConfigTest.php b/tests/PHPUnit/Unit/Widget/WidgetContainerConfigTest.php
index 7a2d3fedae..8e834934d6 100644
--- a/tests/PHPUnit/Unit/Widget/WidgetContainerConfigTest.php
+++ b/tests/PHPUnit/Unit/Widget/WidgetContainerConfigTest.php
@@ -270,6 +270,24 @@ class WidgetContainerConfigTest extends \PHPUnit_Framework_TestCase
         ), $this->config->getWidgetConfigs());
     }
 
+    public function test_setWidgetConfigs_canOverwriteWidgets()
+    {
+        $this->assertSame(array(), $this->config->getWidgetConfigs());
+
+        $this->config->addWidgetConfig($widget1 = $this->createWidgetConfig('widget1'));
+        $this->config->addWidgetConfig($widget2 = $this->createWidgetConfig('widget2'));
+        $this->assertSame(array($widget1,$widget2), $this->config->getWidgetConfigs());
+
+        $widget3 = $this->createWidgetConfig('widget3');
+        $widget4 = new WidgetContainerConfig();
+        $this->config->setWidgetConfigs(array($widget2, $widget3, $widget4));
+        $this->assertSame(array(
+            $widget2,
+            $widget3,
+            $widget4
+        ), $this->config->getWidgetConfigs());
+    }
+
     private function createWidgetConfig($widgetName)
     {
         $config = new WidgetConfig();
-- 
GitLab