$t->is($form->isValid(), true, 'The form is valid');
if (!$form->isValid()) {
    $t->comment($form->getErrorSchema()->getMessage());
}
$t->comment('Save the widget');
$form->updateWidget()->save();
$t->ok($widget->exists(), 'Widget has been saved');
$t->is_deeply($widget->values, array('ulClass' => '', 'liClass' => '', 'items' => array(array('link' => 'page:1', 'text' => 'Home', 'secure' => 0, 'nofollow' => 0, 'depth' => null))), 'Widget values are correct');
$t->comment('Recreate the form from the saved widget');
$form = new $formClass($widget);
$form->removeCsrfProtection();
$t->is($form->getDefault('items'), array(array('link' => 'page:1', 'text' => 'Home', 'depth' => 0, 'secure' => 0, 'nofollow' => 0)), 'The form default items are correct');
$t->comment('Now display the widget');
$widgetArray = $widget->toArrayWithMappedValue();
$expected = array('action' => 'menu', 'css_class' => 'test css_class', 'dm_zone_id' => $widget->Zone->id, 'id' => $widget->id, 'module' => 'dmWidgetNavigation', 'position' => $widget->position, 'value' => json_encode(array('ulClass' => '', 'liClass' => '', 'items' => array(array('link' => 'page:1', 'text' => 'Home', 'secure' => 0, 'nofollow' => 0, 'depth' => null)))), 'updated_at' => $widget->updatedAt);
$t->is_deeply($helper->ksort($widgetArray), $helper->ksort($expected), 'Widget array with mapped value is correct');
$helper->get('service_container')->setParameter('widget_renderer.widget', $widgetArray);
$widgetRenderer = $helper->get('service_container')->getService('widget_renderer');
// gather widget assets to load asynchronously
$t->is($widgetRenderer->getStylesheets(), array(), 'This widget view requires no additional stylesheet');
$t->is($widgetRenderer->getJavascripts(), array(), 'This widget view requires no additional javascript');
$t->ok($widgetRenderer->getHtml(), 'The widget has been rendered');
$widgetView = $widgetRenderer->getWidgetView();
$t->isa_ok($widgetView, $widgetType->getOption('view_class'), 'The widget view is a ' . $widgetType->getOption('view_class'));
$t->ok(!$widgetView->isRequiredVar('mediaId'), 'mediaId is not a view required var');
$t->ok($widgetView->isRequiredVar('items'), 'items is a view required var');
$expected = $helper->get('menu')->ulClass('')->addChild('0-home', 'page:1')->label('Home')->end()->render();
$t->is($widgetView->render(), $expected, 'render : ' . $expected);
$t->is($widgetView->renderForIndex(), '', 'render for index is empty');
$t->comment('Add a page, a non-link, an external link, a mailto, ulClass and liClass');
$form->bind(array('link' => array('page:1', 'page:' . $page1->id, '', 'http://jquery.com', 'mailto:mail@a.com'), 'text' => array('Home', 'Page 1', 'nolink', 'jquery', 'mail'), 'secure' => array(0, 0, 0, 0, 0), 'nofollow' => array(0, 0, 0, 0, 1), 'depth' => array(0, 0, 0, 0, 0), 'ulClass' => 'my_ul_class', 'liClass' => 'my_li_class', 'cssClass' => 'test css_class'), array());