public function testGet() { $factory = new WidgetFactory(); $widget1 = \Mockery::mock('CSBill\\DashboardBundle\\Widgets\\WidgetInterface'); $widget2 = \Mockery::mock('CSBill\\DashboardBundle\\Widgets\\WidgetInterface'); $widget3 = \Mockery::mock('CSBill\\DashboardBundle\\Widgets\\WidgetInterface'); $widget4 = \Mockery::mock('CSBill\\DashboardBundle\\Widgets\\WidgetInterface'); $widget5 = \Mockery::mock('CSBill\\DashboardBundle\\Widgets\\WidgetInterface'); $factory->add($widget1, 'top', 100); $factory->add($widget2, 'left_column', 200); $factory->add($widget3, 'right_column', 300); $factory->add($widget4, null, 400); $factory->add($widget5, 'left_column'); $queue1 = $factory->get('top'); $this->assertInstanceOf('SplPriorityQueue', $queue1); $this->assertCount(2, $queue1); $this->assertSame($widget4, $queue1->current()); $queue1->next(); $this->assertSame($widget1, $queue1->current()); $queue2 = $factory->get('left_column'); $this->assertInstanceOf('SplPriorityQueue', $queue2); $this->assertCount(2, $queue2); $this->assertSame($widget2, $queue2->current()); $queue2->next(); $this->assertSame($widget5, $queue2->current()); $queue3 = $factory->get('right_column'); $this->assertInstanceOf('SplPriorityQueue', $queue3); $this->assertCount(1, $queue3); $this->assertSame($widget3, $queue3->current()); $queue4 = $factory->get('bottom'); $this->assertInstanceOf('SplPriorityQueue', $queue4); $this->assertCount(0, $queue4); }
/** * Renders a dashboard widget at a specific location. * * @param \Twig_Environment $environment * @param string $location * * @return string */ public function renderDashboardWidget(\Twig_Environment $environment, $location) { /** @var WidgetInterface[] $widgets */ $widgets = $this->widgetFactory->get($location); $content = ''; foreach ($widgets as $widget) { $content .= $environment->render($widget->getTemplate(), $widget->getData()); } return $content; }