Example #1
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(10);
sfConfig::set('dm_backup_enabled', true);
$backup = $helper->get('file_backup');
$rootDir = sfConfig::get('sf_root_dir');
$backupDir = $backup->getDir();
$t->is($backupDir, dmOs::join(sfConfig::get('sf_data_dir'), 'dm/backup/filesystem'), $backupDir);
$t->ok(is_dir($backupDir), $backupDir . ' exists');
$t->ok(is_writable($backupDir), $backupDir . ' is writable');
$t->diag('Change backup dir to cache/backupTest');
$backup->setDir('cache/backupTest');
$t->ok(is_dir($backupDir), $backupDir . ' exists');
$t->ok(is_writable($backupDir), $backupDir . ' is writable');
$t->diag('clear backup');
$backup->clear();
$t->is($backup->getFiles(), array(), 'backup is empty');
$file = dmProject::rootify('config/ProjectConfiguration.class.php');
$t->diag('backup ' . $file);
$backup->save($file);
$backupFile = dmOs::join($backup->getDir(), 'config/ProjectConfiguration.class.php.' . date('Y-m-d_H-i-s'));
$t->is(count($backup->getFiles()), 1, 'backup has one file');
$t->is($backup->getFiles(), array($backupFile), 'backup has ' . $backupFile);
$t->is(file_get_contents($file), file_get_contents($backupFile), 'backup file is same as file');
$t->diag('clear backup');
$backup->clear();
$t->is($backup->getFiles(), array(), 'backup is empty');
Example #2
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test(47);
dm::loadHelpers(array('Dm'));
sfConfig::set('sf_no_script_name', false);
dmDb::table('DmPage')->checkBasicPages();
$sc = $helper->get('service_container');
$sc->mergeParameter('link_tag_record.options', array('current_span' => false))->mergeParameter('link_tag_page.options', array('current_span' => false));
$t->diag('link current_span is false');
$home = dmDb::table('DmPage')->getTree()->fetchRoot();
$helper->get('context')->setPage($home);
$t->diag($home->name . ' is the current page');
$testPage = dmDb::create('DmPage', array('module' => 'main', 'action' => 'test' . dmString::random(12), 'name' => 'I am a root child', 'slug' => dmString::random()));
$testPage->Node->insertAsLastChildOf($home);
$scriptName = $helper->get('request')->getScriptName();
$t->diag('Current cli script name = ' . $scriptName);
$t->is((string) _link('http://c2.com/cgi/wiki?DontRepeatYourself')->text('DRY'), $expected = '<a class="link" href="http://c2.com/cgi/wiki?DontRepeatYourself">DRY</a>', $expected);
$t->like(£link()->render(), '|<a class="link dm_current|', '£link() has class dm_current');
$t->like(£link()->set('current_class', 'my_current')->render(), '|<a class="link my_current|', '£link() has class my_current');
$t->is((string) £link($home), (string) £link(), '£link($home) is £link()');
$t->is((string) £link('@homepage'), (string) £link($home), '£link("@homepage") is £link()');
$t->is((string) £link('main/root'), (string) £link($home), '£link("main/root") is £link()');
$t->is(£link()->getHref(), $scriptName, 'root href is ' . $scriptName);
$t->is(£link()->getText(), $home->name, 'root link text is ' . $home->name);
$expected = $helper->get('controller')->genUrl('dmAuth/signin');
$t->is(£link('+/dmAuth/signin')->getHref(), $expected, '+/dmAuth/signin href is ' . $expected);
$rootLink = sprintf('<a class="%s" href="%s">%s</a>', 'link dm_current', $scriptName, $home->name);
$t->is((string) £link(), $rootLink, 'root link is ' . $rootLink);
Example #3
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test();
$pageHelper = $helper->get('page_helper');
$t->is($pageHelper->getOption('widget_css_class_pattern'), dmArray::get($helper->get('service_container')->getParameter('page_helper.options'), 'widget_css_class_pattern'), 'widget_css_class_pattern : ' . $pageHelper->getOption('widget_css_class_pattern'));
$widget = array('id' => 9999, 'module' => 'dmWidgetContent', 'action' => 'breadCrumb', 'value' => json_encode(array('text' => 'test title', 'tag' => 'h1')), 'css_class' => 'custom_class');
$pageHelper->setOption('widget_css_class_pattern', '');
$expected = array('dm_widget custom_class', 'dm_widget_inner');
$t->is($pageHelper->getWidgetContainerClasses($widget), $expected, 'widgetContainerClasses for breadCrumb : ' . implode(', ', $expected));
$widget['action'] = 'title';
$expected = array('dm_widget custom_class', 'dm_widget_inner');
$t->is($pageHelper->getWidgetContainerClasses($widget), $expected, 'widgetContainerClasses for title : ' . implode(', ', $expected));
$pageHelper->setOption('widget_css_class_pattern', '%module%_%action%');
$expected = array('dm_widget content_title custom_class', 'dm_widget_inner');
$t->is($pageHelper->getWidgetContainerClasses($widget), $expected, 'widgetContainerClasses for title : ' . implode(', ', $expected));
$pageHelper->setOption('widget_css_class_pattern', 'module_%module% action_%action%');
$expected = array('dm_widget module_content action_title custom_class', 'dm_widget_inner');
$t->is($pageHelper->getWidgetContainerClasses($widget), $expected, 'widgetContainerClasses for title : ' . implode(', ', $expected));
Example #4
0
<?php

require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$pager = $helper->get('service_container')->setParameter('doctrine_pager.model', 'DmTestPost')->getService('doctrine_pager')->setMaxPerPage(5)->setQuery($query = dmDb::query('DmTestPost t'))->setPage(1)->init();
$t = new lime_test(16);
$t->isa_ok($pager, 'dmDoctrinePager', 'Got a dmDoctrinePager instance');
$t->is($pager->getNbResults(), 20, 'Pager has 20 results');
$pager = $helper->get('front_pager_view')->setPager($pager)->setOption('navigation_top', true)->setOption('navigation_bottom', true);
$t->isa_ok($pager, 'dmFrontPagerView', 'Got a dmFrontPagerView instance');
$t->is($pager->getNbResults(), 20, 'Pager has 20 results');
// Countable interface
$t->diag('Countable interface');
$t->is(count($pager), 20, 'Pager has 20 results');
// Iterator interface
$t->diag('Iterator interface');
$pager->init();
$normal = 0;
$iterated = 0;
foreach ($pager->getResults() as $object) {
    $normal++;
}
foreach ($pager as $object) {
    $iterated++;
}
$t->is($iterated, $normal, '"Iterator" interface loops over objects in the current pager');
$t->is($pager->getCurrent(), $query->fetchOne(), 'Found the first post');
$t->comment('Render navigation top');
$pattern = '<div class="pager"><ul class="clearfix"><li class="page current"><span class="link">1</span></li><li class="page">.+</li></ul></div>';
$t->like($navigation = $pager->renderNavigationTop(), '|^' . $pattern . '$|', 'navigation top: ' . $navigation);
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(3);
$user = $helper->get('user');
$defaultCulture = sfConfig::get('sf_default_culture');
$user->setCulture($defaultCulture);
$widget = dmDb::create('DmWidget', array('module' => 'dmWidgetContent', 'action' => 'title', 'dm_zone_id' => dmDb::table('DmZone')->findOne()->id, 'value' => $defaultCulture . ' value'))->saveGet();
$widgetId = $widget->id;
$wanted = array_merge($widget->toArray());
/*
 * Add fancy translations
 */
foreach (array('z1', 'c2', 'c3') as $culture) {
    $user->setCulture($culture);
    $widget->value = $culture . ' value';
    $widget->save();
}
$user->setCulture($defaultCulture);
$widgetArray = dmDb::query('DmWidget w')->leftJoin('w.Translation t WITH t.lang = ?', $defaultCulture)->where('w.id = ?', $widgetId)->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
$t->is($widgetArray, $wanted, 'Fetched widget array for existing culture');
$query = dmDb::query('DmWidget w')->leftJoin('w.Translation t WITH t.lang = ? OR t.lang = ?', array('__', $defaultCulture))->where('w.id = ?', $widgetId);
$t->diag($query->getSqlQuery());
$widgetArray = $query->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
$t->is($widgetArray, $wanted, 'Fetched widget array with i18n fallback for non existing culture');
$widgetArray = dmDb::query('DmWidget w')->leftJoin('w.Translation t WITH t.lang = ? OR t.lang = ?', array('z1', $defaultCulture))->where('w.id = ?', $widgetId)->fetchOne(array(), Doctrine_Core::HYDRATE_ARRAY);
$wanted2 = $wanted;
$wanted2['Translation']['z1'] = array('id' => $widget->id, 'value' => 'z1 value', 'lang' => 'z1');
$t->is($widgetArray, $wanted2, 'Fetched widget array for existing, non-default culture');
Example #6
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$sc = $helper->getServiceContainer();
// Configuration
// -- this script is needed for some tests. It is located in plugin's test/unit/utils folder
$dump_headers_url = 'http://diem-project.org/misc/dmWebBrowserTestDumpHeaders.php';
// tests
$nb_test_orig = 63;
$adapter_list = array('sfCurlAdapter', 'sfFopenAdapter', 'sfSocketsAdapter');
// -- sites used for testing requests
$example_site_url = 'http://www.google.com';
$askeet_params = array('url' => 'http://www.askeet.com', 'login' => 'francois', 'password' => 'llactnevda2');
// -- cookies, file and directory automatically created
$cookies_dir = dirname(__FILE__) . '/../data/sfCurlAdapter';
$cookies_file = $cookies_dir . '/cookies.txt';
/**
 * stub class
 *
 **/
class myTestWebBrowser extends dmWebBrowser
{
    protected $requestMethod;
    public function call($uri, $method = 'GET', $parameters = array(), $headers = array(), $changeStack = true)
    {
        parent::call($uri, $method, $parameters, $headers, $changeStack);
        $this->requestMethod = $this->stack[$this->stackPosition]['method'];
    }
    public function getRequestMethod()
Example #7
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test(14);
$user = $helper->get('user');
$t->ok($helper->get('i18n')->cultureExists($user->getCulture()), 'The user\'s culture exists');
$browser = $user->getBrowser();
$t->is($browser->isUnknown(), true, 'Cli browser is unknown');
$t->is($user->isAuthenticated(), false, 'User is not authenticated');
$t->is($user->can('admin'), false, 'User can not admin');
$randomCredential = dmString::random();
$t->is($user->can($randomCredential), false, 'User can not ' . $randomCredential);
$t->diag('grant ' . $randomCredential . ' credential');
$user->addCredential($randomCredential);
$t->is($user->can($randomCredential), false, 'User can still not ' . $randomCredential . ' because it\'s not authenticated');
$userRecord = dmDb::table('DmUser')->findOne();
$user->signin($userRecord);
$t->is($user->isAuthenticated(), true, 'User is authenticated');
$t->diag('grant ' . $randomCredential . ' credential');
$user->addCredential($randomCredential);
$t->is($user->can($randomCredential), true, 'Now user can ' . $randomCredential);
$user->signout();
$t->is($user->isAuthenticated(), false, 'User is no more authenticated');
$t->is($user->can($randomCredential), false, 'user can no more ' . $randomCredential);
// Testing DmUser records
$username = dmString::random(8);
$t->diag('Create user ' . $username);
$userRecord = dmDb::create('DmUser', array('username' => $username, 'password' => 'changeme', 'email' => $username . '@diem-project.org'))->saveGet();
$t->ok($userRecord->exists(), 'User has been created');
Example #8
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test();
$values = array('name' => 'Jo', 'email' => '*****@*****.**');
/**
 * @var dmMail
 */
$mail = $helper->get('mail')->setTemplate('test')->addValues($values);
$template = $mail->getTemplate();
/**
 * @var Swift_Message
 */
$message = $mail->getMessage();
$t->ok(!$mail->isRendered(), 'Mail is not rendered');
$t->is_deeply($mail->getValues(), $values, 'Mail values are ' . print_r($values, true));
$t->ok(!$template->exists(), 'The mail template does not exist');
$mail->render();
$t->ok($mail->isRendered(), 'Mail is rendered');
$t->ok($template->exists(), 'The mail template exists');
$expected = array('*****@*****.**' => null);
$t->is($message->getFrom(), $expected, 'Message from is ' . print_r($expected, true));
$template->from_email = '*****@*****.**';
$template->save();
/**
 * @var dmMail
 */
$mail = $helper->get('mail')->setTemplate('test')->addValues($values)->render();
/**
Example #9
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$isFront = sfConfig::get('dm_context_type') == 'front';
$sc = $helper->get('service_container');
$t = new lime_test();
$user = $helper->get('user');
$theme = $user->getTheme();
$t->is($sc->getParameter('user.culture'), $user->getCulture(), 'culture is synchronized to ' . $user->getCulture());
$t->is($sc->getParameter('user.theme'), $user->getTheme(), 'theme is synchronized to ' . $user->getTheme());
foreach (sfConfig::get('dm_i18n_cultures') as $culture) {
    $user->setCulture($culture);
    $t->is($sc->getParameter('user.culture'), $user->getCulture(), 'culture is synchronized to ' . $user->getCulture());
}
if ($isFront) {
    $themeManager = $sc->get('theme_manager');
    foreach ($themeManager->getThemes() as $theme) {
        $user->setTheme($theme);
        $t->is($sc->getParameter('user.theme'), $user->getTheme(), 'theme is synchronized to ' . $user->getTheme());
    }
}
class dmOtherBrowser extends dmBrowser
{
}
$defaultBrowserClass = $sc->getParameter('browser.class');
$t->isa_ok($sc->get('browser'), $defaultBrowserClass, 'browser service is a ' . $defaultBrowserClass);
$t->isa_ok($sc->get('browser', 'dmOtherBrowser'), 'dmOtherBrowser', 'browser service is a dmOtherBrowser');
$t->isa_ok($sc->get('browser'), $defaultBrowserClass, 'browser service is a ' . $defaultBrowserClass);
Example #10
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(12);
$sc = $helper->get('service_container');
$user = $helper->get('user');
$theme = $user->getTheme();
$user->setCulture('en');
$imageFullPath = $theme->getFullPath('images/testImage.jpg');
$sc->get('filesystem')->mkdir(dirname($imageFullPath));
copy(dmOs::join(sfConfig::get('dm_core_dir'), 'data/image/defaultMedia.jpg'), $imageFullPath);
$t->ok(file_exists($imageFullPath), 'image copied : ' . $imageFullPath);
$imageI18nFullPath = $theme->getFullPath('images/en/testImage.jpg');
$helper->get('filesystem')->mkdir(dirname($imageI18nFullPath));
copy(dmOs::join(sfConfig::get('dm_core_dir'), 'data/image/defaultMedia.jpg'), $imageI18nFullPath);
$t->ok(file_exists($imageI18nFullPath), 'image copied : ' . $imageI18nFullPath);
$res = $sc->getService('media_resource')->initialize('images/testImage.jpg');
$t->is($res->getPathFromWebDir(), $theme->getPath('images/testImage.jpg'), 'images/testImage.jpg : ' . $res->getPathFromWebDir());
$res = $sc->getService('media_resource')->initialize('images/en/testImage.jpg');
$t->is($res->getPathFromWebDir(), $theme->getPath('images/en/testImage.jpg'), 'images/en/testImage.jpg : ' . $res->getPathFromWebDir());
$res = $sc->getService('media_resource')->initialize('images/%culture%/testImage.jpg');
$t->is($res->getPathFromWebDir(), $theme->getPath('images/en/testImage.jpg'), 'images/%culture%/testImage.jpg : ' . $res->getPathFromWebDir());
$res = $sc->getService('media_resource')->initialize('testImage.jpg');
$t->is($res->getPathFromWebDir(), $theme->getPath('images/testImage.jpg'), 'testImage.jpg : ' . $res->getPathFromWebDir());
$res = $sc->getService('media_resource')->initialize('%culture%/testImage.jpg');
$t->is($res->getPathFromWebDir(), $theme->getPath('images/en/testImage.jpg'), '%culture%/testImage.jpg : ' . $res->getPathFromWebDir());
$res = $sc->getService('media_resource')->initialize($imageI18nFullPath);
$t->is($res->getPathFromWebDir(), $theme->getPath('images/en/testImage.jpg'), '$imageI18nFullPath : ' . $res->getPathFromWebDir());
$user->setCulture('fr');
Example #11
0
<?php

require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('admin');
$t = new lime_test(1);
$t->comment('Check config files order');
$configPath = 'config/dm/modules.yml';
$t->is($helper->getConfiguration()->getConfigPaths($configPath), array(dmOs::join(sfConfig::get('dm_core_dir'), $configPath), dmOs::join(sfConfig::get('dm_admin_dir'), $configPath), dmOs::join(sfConfig::get('dm_core_dir'), 'plugins/dmUserPlugin', $configPath), dmOs::join(sfConfig::get('sf_plugins_dir'), 'dmTagPlugin', $configPath), dmOs::join(sfConfig::get('sf_plugins_dir'), 'dmContactPlugin', $configPath), dmOs::join(sfConfig::get('sf_root_dir'), $configPath), dmOs::join(sfConfig::get('sf_apps_dir'), 'admin', $configPath)), 'config files are well ordered');
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test();
$helper->get('user')->setCulture('fr');
$msgs = $helper->get('markdown_translator')->execute();
$t->ok(isset($msgs['Link']), 'Link is translated');
$t->is($msgs['Link'], 'Lien', 'Link is translated to Lien');
$t->ok(isset($msgs['Heading 3']), 'Heading 3 is translated');
$t->is($msgs['Heading 3'], 'Titre 3', 'Heading 3 is translated to Titre 3');
Example #13
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test();
$mtr = $helper->get('mime_type_resolver');
$t->is($mtr->getByFilename($file = __FILE__), $mt = 'application/x-httpd-php', $file . ' : ' . $mt);
$t->is($mtr->getGroupByFilename($file = __FILE__), $mt = 'application', $file . ' : ' . $mt);
$t->is($mtr->getByExtension($ext = 'php'), $mt = 'application/x-httpd-php', $ext . ' : ' . $mt);
$t->is($mtr->getGroupByExtension($ext = 'php'), $mt = 'application', $ext . ' : ' . $mt);
Example #14
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('admin');
$t = new lime_test(16);
dm::loadHelpers(array('Dm'));
$t->is((string) _link('http://c2.com/cgi/wiki?DontRepeatYourself')->text('DRY'), $expected = '<a class="link" href="http://c2.com/cgi/wiki?DontRepeatYourself">DRY</a>', $expected);
$scriptName = $helper->get('request')->getRelativeUrlRoot();
$t->diag('Current cli script name = ' . $scriptName);
$expected = $helper->get('controller')->genUrl('@homepage');
$t->is(_link()->getHref(), $expected, 'empty source is ' . $expected);
$t->is(_link()->getHref('@homepage'), $expected, 'homepage href is ' . $expected);
$expected = $helper->get('controller')->genUrl('dmAuthAdmin/signin');
$t->is(_link('+/dmAuthAdmin/signin')->getHref(), $expected, '+/dmAuthAdmin/signin href is ' . $expected);
$expected = $helper->get('controller')->genUrl('dmAuthAdmin/signin');
$t->is($helper->get('helper')->link('+/dmAuthAdmin/signin')->getHref(), $expected, 'with helper service, +/dmAuthAdmin/signin href is ' . $expected);
$frontScriptName = $helper->get('script_name_resolver')->get('front');
$t->is(_link('app:front')->getHref(), $frontScriptName, $frontScriptName);
$t->is(_link('app:front/test')->getHref(), $expected = $frontScriptName . '/test', $expected);
$t->is(_link('app:front/test?var1=val1&var2=val2')->getHref(), $expected = $frontScriptName . '/test?var1=val1&var2=val2', $expected);
$t->comment('Create a test page');
$page = dmDb::create('DmPage', array('module' => dmString::random(), 'action' => dmString::random(), 'name' => dmString::random(), 'slug' => dmString::random()));
$page->Node->insertAsFirstChildOf(dmDb::table('DmPage')->getTree()->fetchRoot());
$expected = $helper->get('script_name_resolver')->get('front');
$t->is(_link($page)->getHref(), $expected = $frontScriptName . '/' . $page->slug, $expected);
$t->is(_link('page:' . $page->id)->getHref(), $expected = $frontScriptName . '/' . $page->slug, $expected);
$t->is(_link('page:' . $page->id . '?var1=val1&var2=val2')->getHref(), $expected = $frontScriptName . '/' . $page->slug . '?var1=val1&var2=val2', $expected);
$t->is(_link('page:' . $page->id . '?var1=val1&var2=val2#anchor')->getHref(), $expected = $frontScriptName . '/' . $page->slug . '?var1=val1&var2=val2#anchor', $expected);
sfConfig::set('sf_debug', true);
$badSource = 'page:9999999999999';
Example #15
0
<?php

require_once realpath(dirname(__FILE__) . '/../../../../..') . '/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(4);
$module = $helper->get('module_manager')->getModule('dmContact');
$t->ok($module->isProject(), 'project module');
$t->ok($module->isPlugin(), 'plugin module');
$t->is($module->getPluginName(), 'dmContactPlugin', 'dmContact plugin is dmContactPlugin');
$t->ok(!$module->isOverridden(), 'dmContactPlugin is not overridden');
Example #16
0
<?php

require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(120);
$helper->loremizeDatabase(15, $t);
$fruit = dmDb::table('DmTestFruit')->findOne();
$domain = dmDb::table('DmTestDomain')->findOne();
$categ = dmDb::table('DmTestCateg')->findOne();
$post = dmDb::table('DmTestPost')->findOne();
$comment = dmDb::table('DmTestComment')->findOne();
$tag = dmDb::table('DmTestTag')->findOne();
$t->comment('Add more associations');
if (!$categ->Domains->count()) {
    $categ->Domains[] = dmDb::table('DmTestDomain')->findOne();
    $categ->save();
    $domain->refreshRelated('Categs');
}
if (!$tag->Posts->count()) {
    dmDb::table('DmTestPostTag')->create(array('post_id' => $post->id, 'tag_id' => $tag->id))->save();
    $tag->refreshRelated('Posts');
    $post->refreshRelated('Tags');
}
$t->diag('Related record tests with record hydration');
try {
    $fruit->getRelatedRecord('DmTestPost');
    $ok = false;
} catch (dmRecordException $e) {
    $ok = true;
}
Example #17
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->bootFast();
$t = new lime_test();
$nbAreas = dmDb::table('DmArea')->count();
$t->comment($nbAreas . ' areas');
$pageView = dmDb::table('DmPageView')->create(array('module' => dmString::random(), 'action' => dmString::random()))->saveGet();
$area = $pageView->Area;
$t->ok($pageView->exists(), 'Created a pageView');
$t->ok($area->exists(), 'Created an area');
$t->is(dmDb::table('DmArea')->count(), $nbAreas + 1, $nbAreas . '+1 in db');
$pageView->delete();
$t->ok(!$pageView->exists(), 'Deleted the pageView');
$t->ok(!$area->exists(), 'Deleted the area by cascade');
$t->is(dmDb::table('DmArea')->count(), $nbAreas, $nbAreas . ' in db');
$layout = dmDb::table('DmLayout')->create(array('name' => dmString::random()))->saveGet();
$area = $layout->getArea('top');
$t->ok($layout->exists(), 'Created a layout');
$t->ok($area->exists(), 'Created a top area');
$t->is(dmDb::table('DmArea')->count(), $nbAreas + 1, $nbAreas . '+1 in db');
$layout->delete();
$t->ok(!$layout->exists(), 'Deleted the layout');
$t->ok(!$area->exists(), 'Deleted the area by cascade');
$t->is(dmDb::table('DmArea')->count(), $nbAreas, $nbAreas . ' in db');
Example #18
0
<?php

$config = getcwd() . '/config/ProjectConfiguration.class.php';
require_once $config;
require_once dm::getDir() . '/dmCorePlugin/test/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
// load both standard and alternative helpers
dm::loadHelpers(array('Dm', 'DmAlternative', 'I18N'));
$t = new lime_test(29);
/*
* $helper is the test helper. It acts as a service container
* and can provide you all services with its get() method.
* so here we get the 'helper' service which is the template helper instance
*/
$templateHelper = $helper->get('helper');
// £ function
$t->is(£('div', 'content'), _tag('div', 'content'), '£ == _tag');
// £ method
$t->is($templateHelper->£('div', 'content'), $templateHelper->tag('div', 'content'), '£ == _tag');
$t->is(£('div', 'content'), _tag('div', 'content'), '£ == _tag');
// £link method
$t->is((string) $templateHelper->£link()->text('home'), (string) $templateHelper->link()->text('home'), '£link == _link');
$t->is((string) £link()->text('home'), (string) _link()->text('home'), '£link == _link');
$openDiv = '<div>';
$t->is(£o('div'), _tagO('div'), $openDiv);
$openDiv = '<div class="test_class">';
$t->is(£o('div.test_class'), _tagO('div.test_class'), $openDiv);
$openDiv = '<div id="test_id" class="test_class other_class">';
$t->is(£o('div#test_id.test_class.other_class'), _tagO('div#test_id.test_class.other_class'), $openDiv);
$openDiv = '<div class="test_class other_class" id="test_id">';
<?php

require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test(39);
$wtm = $helper->get('widget_type_manager');
$widgetType = $wtm->getWidgetType('dmWidgetNavigation', 'menu');
$formClass = $widgetType->getOption('form_class');
$page1 = dmDb::table('DmPage')->findOneByModuleAndAction('main', 'page1');
$t->comment('Create a menu widget');
$widget = dmDb::create('DmWidget', array('module' => $widgetType->getModule(), 'action' => $widgetType->getAction(), 'value' => '[]', 'dm_zone_id' => $page1->PageView->Area->Zones[0]));
$t->comment('Create a ' . $formClass . ' instance');
$form = new $formClass($widget);
$form->removeCsrfProtection();
$html = $form->render();
$t->like($html, '_^<form\\s(.|\\n)*</form>$_', 'Successfully obtained and rendered a ' . $formClass . ' instance');
$t->is(count($form->getStylesheets()), 2, 'This widget form requires 2 additional stylesheets');
$t->is(count($form->getJavascripts()), 3, 'This widget form requires 3 additional javascripts');
$t->comment('Submit an empty form');
$form->bind(array(), array());
$t->is($form->isValid(), true, 'The form is  valid');
$t->comment('Save the widget');
$form->updateWidget()->save();
$t->ok($widget->exists(), 'Widget has been saved');
$expected = array('ulClass' => '', 'liClass' => '', 'items' => array());
$t->is_deeply($widget->values, $expected, 'Widget values are correct');
$t->comment('Recreate the form from the saved widget');
$form = new $formClass($widget);
$form->removeCsrfProtection();
$t->is($form->getDefault('link'), array(), 'The form default text is correct');
Example #20
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('admin');
$t = new lime_test(2);
$t->comment('Check config files order');
$configPath = 'config/dm/modules.yml';
$paths = $helper->getConfiguration()->getConfigPaths($configPath);
$t->is($paths[0], dmOs::join(sfConfig::get('dm_core_dir'), $configPath), 'dmCore is first');
$t->is($paths[1], dmOs::join(sfConfig::get('dm_admin_dir'), $configPath), 'dmAdmin is second');
<?php

require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test();
if (strpos(getcwd(), 'hudson')) {
    return;
}
$helper->get('page_tree_watcher')->connect();
$nbPage = dmDb::table('DmPage')->count();
$domain = dmDb::table('DmTestDomain')->create(array('title' => dmString::random(), 'is_active' => false))->saveGet();
$t->ok($domain->exists(), 'Record has been saved');
$t->ok(!$domain->isActive, 'Record is not active');
$t->is(dmDb::table('DmPage')->count(), $nbPage, 'No new page');
/*
 * With some old version of sqlite, like on continuous integration server
 * This test will not work as expected
 */
if (strpos(getcwd(), 'hudson')) {
    return;
}
$t->ok($page = $domain->getDmPage(), 'Domain has a page');
$t->is(dmDb::table('DmPage')->count(), $nbPage + 1, 'One new page');
$t->is($page->isActive, false, 'The page is not active');
$t->is($page->Record, $domain, 'The page record is the domain');
$domain = dmDb::table('DmTestDomain')->create(array('title' => dmString::random(), 'is_active' => true))->saveGet();
$t->ok($domain->exists(), 'Record has been saved');
$t->ok($domain->isActive, 'Record is active');
$t->is(dmDb::table('DmPage')->count(), $nbPage + 1, 'No new page');
$t->ok($page = $domain->getDmPage(), 'Domain has a page');
Example #22
0
 public function initialize()
 {
     parent::initialize();
     $this->folderTable = dmDb::table('dmMediaFolder');
     $this->mediaTable = dmDb::table('dmMedia');
 }
Example #23
0
<?php

$config = getcwd() . '/config/ProjectConfiguration.class.php';
require_once $config;
require_once dm::getDir() . '/dmCorePlugin/test/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test(50);
dm::loadHelpers(array('Dm', 'I18N'));
$menu = $helper->get('menu')->name('Test Menu');
$root1 = $menu->getChild('Root 1');
$root1->addChild('Child 1');
$last = $root1->addChild('Child 2');
$root2 = $menu->getChild('Root 2');
$child1 = $root2->addChild('Child 1');
$child2 = $child1->addChild('Child 2');
$t->is($root1->getLevel(), 0, 'Test root level is 0');
$t->is($root2->getLevel(), 0, 'Test root level is 0');
$t->is($child1->getLevel(), 1, 'Test level is 1');
$t->is($child2->getLevel(), 2, 'Test level is 2');
$t->is($child2->getPathAsString(), 'Test Menu > Root 2 > Child 1 > Child 2', 'Test getPathAsString()');
$t->is(get_class($root1), get_class($menu), 'Test children are created as same class as parent');
// array access
$t->is($menu['Root 1']['Child 1']->getName(), 'Child 1', 'Test name()');
// countable
$t->is(count($menu), $menu->count(), 'Test sfSympalMenu Countable interface');
$t->is(count($root1), 2, 'Test sfSympalMenu Countable interface');
$count = 0;
foreach ($root1 as $key => $value) {
    $count++;
    $t->is($key, 'Child ' . $count, 'Test iteratable');
Example #24
0
<?php

$config = getcwd() . '/config/ProjectConfiguration.class.php';
require_once $config;
require_once dm::getDir() . '/dmCorePlugin/test/unit/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
// load both standard and alternative helpers
dm::loadHelpers(array('Dm', 'DmAlternative', 'I18N'));
$t = new lime_test(30);
/*
* $helper is the test helper. It acts as a service container
* and can provide you all services with its get() method.
* so here we get the 'helper' service which is the template helper instance
*/
$templateHelper = $helper->get('helper');
// £ function
$t->is(£('div', 'content'), _tag('div', 'content'), '£ == _tag');
// £ method
$t->is($templateHelper->£('div', 'content'), $templateHelper->tag('div', 'content'), '£ == _tag');
$t->is(£('div', 'content'), _tag('div', 'content'), '£ == _tag');
// £link method
$t->is((string) $templateHelper->£link()->text('home'), (string) $templateHelper->link()->text('home'), '£link == _link');
$t->is((string) £link()->text('home'), (string) _link()->text('home'), '£link == _link');
$openDiv = '<div>';
$t->is(£o('div'), _tagO('div'), $openDiv);
$openDiv = '<div class="test_class">';
$t->is(£o('div.test_class'), _tagO('div.test_class'), $openDiv);
$openDiv = '<div id="test_id" class="test_class other_class">';
$t->is(£o('div#test_id.test_class.other_class'), _tagO('div#test_id.test_class.other_class'), $openDiv);
$openDiv = '<div class="test_class other_class" id="test_id">';
Example #25
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(19);
$browser = $helper->get('browser');
$namorokaUbuntu = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2pre) Gecko/20100116 Ubuntu/9.10 (karmic) Namoroka/3.6pre';
$namorokaMac = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2) Gecko/20100105 Firefox/3.6';
$chromeMac = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.49 Safari/532.5';
$safariMac = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; fr-fr) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10';
$opera9Windows = 'Opera/9.61 (Windows NT 6.0; U; en) Presto/2.1.1';
$opera10Windows = 'Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.10';
$googleBot = 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
$msnBot = 'msnbot/2.0b (+http://search.msn.com/msnbot.htm)';
$firefoxLinux = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.17) Gecko/2010010604 Linux Mint/7 (Gloria) Firefox/3.0.17';
$firefoxWindows = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6 (.NET CLR 3.5.30729)';
$firefoxOsx = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8';
//$firefoxWindowsSp2 = 'Gecko 2009122116Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.17) Gecko/2009122116 Firefox[xSP_2:077784879bbf239604c69a247f6786a0_220] 967907703 (.NET CLR 3.5.30729)';
$chromeLinux = 'Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.43 Safari/532.5';
$speedySpider = 'Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)';
$minefieldMac = 'Gecko 20100113Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.3a1pre) Gecko/20100113 Minefield/3.7a1pre';
$ie7Windows = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; GTB6; SLCC1; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.5.30729; InfoPath.2; .NET CLR 3.0.30729; MSOffice 12)';
$ie6Windows = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; DigExt)';
$feedFetcherGoogle = 'Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 2 subscribers; feed-id=6924676383167400434)';
$iphone = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; de-de) AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7D11';
$yahooBot = 'Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)';
$tests = array($namorokaUbuntu => array('browser_name' => 'firefox', 'browser_version' => '3.6', 'is_unknown' => false), $namorokaMac => array('browser_name' => 'firefox', 'browser_version' => '3.6', 'is_unknown' => false), $chromeMac => array('browser_name' => 'chrome', 'browser_version' => '4.0', 'is_unknown' => false), $safariMac => array('browser_name' => 'safari', 'browser_version' => '4.0', 'is_unknown' => false), $googleBot => array('browser_name' => 'googlebot', 'browser_version' => '2.1', 'is_unknown' => false), $msnBot => array('browser_name' => 'msnbot', 'browser_version' => '2.0', 'is_unknown' => false), $yahooBot => array('browser_name' => 'yahoobot', 'browser_version' => null, 'is_unknown' => false), $opera9Windows => array('browser_name' => 'opera', 'browser_version' => '9.61', 'is_unknown' => false), $opera10Windows => array('browser_name' => 'opera', 'browser_version' => '10.10', 'is_unknown' => false), $firefoxLinux => array('browser_name' => 'firefox', 'browser_version' => '3.0', 'is_unknown' => false), $firefoxWindows => array('browser_name' => 'firefox', 'browser_version' => '3.5', 'is_unknown' => false), $firefoxOsx => array('browser_name' => 'firefox', 'browser_version' => '3.5', 'is_unknown' => false), $chromeLinux => array('browser_name' => 'chrome', 'browser_version' => '4.0', 'is_unknown' => false), $speedySpider => array('browser_name' => null, 'browser_version' => null, 'is_unknown' => true), $minefieldMac => array('browser_name' => 'firefox', 'browser_version' => '3.7', 'is_unknown' => false), $ie7Windows => array('browser_name' => 'msie', 'browser_version' => '7.0', 'is_unknown' => false), $ie6Windows => array('browser_name' => 'msie', 'browser_version' => '6.0', 'is_unknown' => false), $feedFetcherGoogle => array('browser_name' => null, 'browser_version' => null, 'is_unknown' => true), $iphone => array('browser_name' => 'applewebkit', 'browser_version' => '528.18', 'is_unknown' => false));
$parser = $helper->get('user_agent_parser');
foreach ($tests as $userAgent => $description) {
    $browser->configureFromUserAgentString($userAgent, $parser);
Example #26
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test(36);
dm::loadHelpers(array('Dm', 'I18N'));
$openDiv = '<div>';
$t->is(_open('div'), $openDiv, $openDiv);
$openDiv = '<div class="test_class">';
$t->is(_open('div.test_class'), $openDiv, $openDiv);
$openDiv = '<div id="test_id" class="test_class other_class">';
$t->is(_open('div#test_id.test_class.other_class'), $openDiv, $openDiv);
$openDiv = '<div class="test_class other_class" id="test_id">';
$t->is(_open('div', array('id' => 'test_id', 'class' => 'test_class other_class')), $openDiv, $openDiv);
$openDiv = '<div title="fancy title" class="first_class test_class other_class" id="test_id">';
$t->is(_open('div.first_class title="fancy title"', array('id' => 'test_id', 'class' => 'test_class other_class')), $openDiv, $openDiv);
$t->is(£('div'), $expected = '<div></div>', $expected);
$t->is(£('br'), $expected = '<br />', $div);
$t->is(£('hr'), $expected = '<hr />', $expected);
$t->is(£('img'), $expected = '<img />', $expected);
$t->is(£('input'), $expected = '<input />', $expected);
$div = '<div id="test_id" class="test_class other_class"></div>';
$t->is(£('div#test_id.test_class.other_class'), $div, $div);
$div = '<div id="test_id" class="test_class">div content</div>';
$t->is(£('div#test_id.test_class', 'div content'), $div, $div);
$div = '<div id="test_id" class="test_class">div content</div>';
$t->is(£('div#test_id.test_class', 'div content'), $div, $div);
$div = '<div class="' . htmlentities('{"attr":"value"}') . '">div content</div>';
$t->is(£('div', array('json' => array('attr' => 'value')), 'div content'), $div, $div);
$div = '<div id="test_id" class="test_class ' . htmlentities('{"attr":"value"}') . '">div content</div>';
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(33);
$v = new dmValidatorCssIdAndClasses();
$t->diag('->clean()');
foreach (array('a', 'a_b', 'a-c', 'qieurgfbqoiuzbfvoqiuzZFZGPSOZDNZKFjflzkh986875OoihzyfvbxoquyfvxqozufyxqzUEFV', '9', '_', ' bla rebla  ', '- _ 8', '.class', '.a b.c.d', '#myid.a b.c.d', '#myid class1 class2', 'class1 class2 #myid', '.a b#myid.c.d', '.a b#myid.c.d#myid', '.a b#myid.c.d  #myid', '#my_id', '#my-id', ' #my-id  ') as $classes) {
    try {
        $t->comment('"' . $classes . '" -> "' . $v->clean($classes) . '"');
        $t->pass('->clean() checks that the value is a valid css class name + id');
    } catch (sfValidatorError $e) {
        $t->fail('->clean() checks that the value is a valid css class name + id');
    }
}
foreach (array('.zegze$g.zegf', '/', 'a/f', 'a^', 'a # @', 'é', '-{') as $nonClass) {
    $t->comment($nonClass);
    try {
        $v->clean($nonClass);
        $t->fail('->clean() throws an sfValidatorError if the value is not a valid css class name + id');
        $t->skip('', 1);
    } catch (sfValidatorError $e) {
        $t->pass('->clean() throws an sfValidatorError if the value is not a valid css class name + id');
        $t->is($e->getCode(), 'invalid', '->clean() throws a sfValidatorError');
    }
}
Example #28
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
$t = new lime_test(26);
$wtm = $helper->get('widget_type_manager');
$widgetType = $wtm->getWidgetType('dmWidgetContent', 'link');
$formClass = $widgetType->getOption('form_class');
$t->comment('Create a test page');
$testPage = dmDb::create('DmPage', array('module' => dmString::random(), 'action' => dmString::random(), 'name' => dmString::random(), 'slug' => dmString::random()));
$testPage->Node->insertAsFirstChildOf(dmDb::table('DmPage')->getTree()->fetchRoot());
$t->comment('Create a test widget');
$widget = dmDb::create('DmWidget', array('module' => $widgetType->getModule(), 'action' => $widgetType->getAction(), 'value' => '[]', 'dm_zone_id' => $testPage->PageView->Area->Zones[0]));
$t->comment('Create a ' . $formClass . ' instance');
dmDb::table('DmMediaFolder')->checkRoot();
$t->comment('Create a test image media');
$mediaFileName = 'test_' . dmString::random() . '.jpg';
copy(dmOs::join(sfConfig::get('dm_core_dir'), 'data/image/defaultMedia.jpg'), dmOs::join(sfConfig::get('sf_upload_dir'), $mediaFileName));
$media = dmDb::create('DmMedia', array('file' => $mediaFileName, 'dm_media_folder_id' => dmDb::table('DmMediaFolder')->checkRoot()->id))->saveGet();
$t->ok($media->exists(), 'A test media has been created');
$form = new $formClass($widget);
$form->removeCsrfProtection();
$html = $form->render();
$t->like($html, '_^<form\\s(.|\\n)*</form>$_', 'Successfully obtained and rendered a ' . $formClass . ' instance');
$t->is($form->getStylesheets(), array(), 'This widget form requires no additional stylesheet');
$t->is($form->getJavascripts(), array(), 'This widget form requires no additional javascript');
$t->comment('Submit an empty form');
$form->bind(array(), array());
$t->is($form->isValid(), false, 'The form is not valid');
$t->comment('Use a bad href');
Example #29
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot('front');
clearstatcache(true);
$isSqlite = Doctrine_Manager::getInstance()->getConnection('doctrine') instanceof Doctrine_Connection_Sqlite;
$t = new lime_test(16 + ($isSqlite ? 0 : 1) + 3 * count($helper->get('i18n')->getCultures()));
$user = $helper->get('user');
try {
    $index = $helper->get('search_index');
    $t->fail('Can\'t create index without dir');
} catch (dmSearchIndexException $e) {
    $t->pass('Can\'t create index without dir');
}
$engine = $helper->get('search_engine');
$t->isa_ok($engine, 'dmSearchEngine', 'Got a dmSearchEngine instance');
$expected = dmProject::rootify(dmArray::get($helper->get('service_container')->getParameter('search_engine.options'), 'dir'));
$t->is($engine->getFullPath(), $expected, 'Current engine full path is ' . $expected);
$t->ok(!file_exists(dmProject::rootify('segments.gen')), 'There is no segments.gen in project root dir');
$engine->setDir('cache/testIndex');
foreach ($helper->get('i18n')->getCultures() as $culture) {
    $user->setCulture($culture);
    $currentIndex = $engine->getCurrentIndex();
    $t->is($currentIndex->getName(), 'dm_page_' . $culture, 'Current index name is ' . $currentIndex->getName());
    $t->is($currentIndex->getCulture(), $culture, 'Current index culture is ' . $culture);
    $t->is($currentIndex->getFullPath(), dmProject::rootify('cache/testIndex/' . $currentIndex->getName()), 'Current index full path is ' . $currentIndex->getFullPath());
}
$user->setCulture(sfConfig::get('sf_default_culture'));
$currentIndex = $engine->getCurrentIndex();
$t->isa_ok($currentIndex->getLuceneIndex(), 'Zend_Search_Lucene_Proxy', 'The current index is instanceof Zend_Search_Lucene_Proxy');
Example #30
0
<?php

require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php';
$helper = new dmUnitTestHelper();
$helper->boot();
$t = new lime_test(8);
$markdown = $helper->get('markdown');
$t->comment('Basic features');
$markdownText = 'this is a **markdown** text with *some basic* features';
$html = '<p class="dm_first_p">this is a <strong>markdown</strong> text with <em>some basic</em> features</p>';
$t->is($markdown->toHtml($markdownText), $html, $markdown->toHtml($markdownText));
$text = 'this is a markdown text with some basic features';
$t->is($markdown->toText($markdownText), $text, $markdown->toText($markdownText));
$text = 'this is a markdown text with some basic features';
$t->is($markdown->brutalToText($markdownText), $text, $markdown->brutalToText($markdownText));
$t->is($markdown->toHtml($markdownText), $html, $markdown->toHtml($markdownText));
$t->comment('Standart image inclusion');
$markdownText = 'this is a **markdown** ![image alt text](/uploads/image.png) [with](http://diem-project.org "link title") *advanced* features';
$text = 'this is a markdown  with advanced features';
$t->is($markdown->toText($markdownText), $text, $markdown->toText($markdownText));
$text = 'this is a markdown image alt text with advanced features';
$t->is($markdown->brutalToText($markdownText), $text, $markdown->brutalToText($markdownText));
$text = 'this is a markdown image alt text with advanced features';
$t->is($markdown->brutalToText($markdownText), $text, $markdown->brutalToText($markdownText));
$text = <<<EOF
##Replace a Diem service

Let's suppose we want to change the way Diem detect browsers. This is done with the *browser* service. We will tell Diem to use another class for the browser service in
**config/dm/services.yml**
~~~
parameters: