public function generate(Request $request, WidgetHandler $widgetHandler) { $data = $request->getContent(); $data = json_decode($data); $inputs = []; foreach ($data as $item) { if (is_array($item->value)) { $value = []; foreach ($item->value as $sub) { $value[$sub->name] = e($sub->value); } $inputs[$item->name] = $value; } else { $inputs[$item->name] = e($item->value); } } $widget = $inputs['@id']; $code = $widgetHandler->generateCode($widget, $inputs); return XePresenter::makeApi(['code' => $code]); }
/** * testGetGeneratedCode * * @return void */ public function testGetGeneratedCode() { $widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false); $id = 'fakeWidgetId'; $inputs = ['args1' => 'value1', 'args2' => 'value2', 'args3' => 'value3']; $this->register->shouldReceive('get')->with('widget/' . $id)->andReturn($this->fakeWidgetClassName); $resultString = $widgetHandler->generateCode($id, $inputs); $expected = "<xewidget>\n <args1>value1</args1>\n <args2>value2</args2>\n <args3>value3</args3>\n</xewidget>\n"; $this->assertEquals($expected, $resultString); }