public function preSave($event) { parent::preSave($event); if (!$this->hash) { $this->hash = dmString::random(8); } }
public static function randomizeDirName($dir, $maxLen = 255) { $random = dmString::random(4); $strip_len = $maxLen - strlen($random); $strip_name = dmString::truncate(self::sanitizeDirName($file), $strip_len, ""); $final_name = $strip_name . "-" . $random; return $final_name; }
protected function configureFromData($data) { if (!$this->getOption('file_name')) { $this->setOption('file_name', dmString::slugify(dmConfig::get('site_name')) . '-' . dmString::random(8)); } if (!$this->getOption('file_size')) { $this->setOption('file_size', strlen($data)); } }
protected function clearApcSystemCache($siteUrl) { $this->log('Clear apc system cache'); $fileName = dmString::random(12) . '.php'; $file = sfConfig::get('sf_web_dir') . '/cache/' . $fileName; file_put_contents($file, '<?php apc_clear_cache();'); $this->getContext()->get('web_browser')->get(trim($siteUrl, '/') . '/cache/' . $fileName); unlink($file); }
public function testNewPage(lime_test $t) { $t->diag('Adding a page'); $randomKey = dmString::random(4); $newPage = $this->createPage('main', 'test' . $randomKey, 'Test Page ' . $randomKey); $root = $this->pageTable->getTree()->fetchRoot(); $newPage->getNode()->insertAsLastChildOf($root); $t->ok($newPage->exists(), 'newPage exists'); $t->is($newPage->getNode()->getParent(), $root, 'newPage is child of root'); $t->is($newPage->getNodeParentId(), $root->id, 'newPage->getNodeParentId() returns root.id'); $t->is($newPage->name, 'Test Page ' . $randomKey, 'newPage->name is ' . 'Test Page ' . $randomKey); }
/** * Handle dmUser/forgotPassword form validation and sends an email with a new password */ public function executeForgotPasswordWidget(dmWebRequest $request) { // step 1 if (!($forgotPasswordCode = $request->getParameter('_code'))) { $form = new DmForgotPasswordStep1Form(); if ($request->isMethod('post') && $request->hasParameter($form->getName())) { $data = $request->getParameter($form->getName()); if ($form->isCaptchaEnabled()) { $data = array_merge($data, array('captcha' => array('recaptcha_challenge_field' => $request->getParameter('recaptcha_challenge_field'), 'recaptcha_response_field' => $request->getParameter('recaptcha_response_field')))); } $form->bind($data, $request->getFiles($form->getName())); if ($form->isValid()) { $user = $form->getUserByEmail($form->getValue('email')); $user->forgot_password_code = dmString::random(12); $user->save(); $this->getService('mail')->setTemplate('dm_user_forgot_password')->addValues(array('username' => $user->username, 'email' => $user->email, 'step2_url' => $this->getHelper()->link($this->getPage())->param('_code', $user->forgot_password_code)->getAbsoluteHref()))->send(); $this->getUser()->setFlash('dm_forgot_password_email_sent', $user->email); $this->redirectBack(); } } $this->forms['DmForgotPasswordStep1'] = $form; } else { $this->forward404Unless($user = dmDb::table('DmUser')->retrieveByForgotPasswordCode($forgotPasswordCode)); $form = new DmForgotPasswordStep2Form($user); if ($request->isMethod('post') && $request->hasParameter($form->getName())) { if ($form->bindAndValid($request)) { $user->password = $form->getValue('password'); $user->forgot_password_code = null; $user->save(); $this->getUser()->setFlash('dm_forgot_password_changed', true); $this->redirectBack(); } } $this->forms['DmForgotPasswordStep2'] = $form; } }
<?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');
require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot(); $t = new lime_test(24); $t->diag('default culture tests'); $user = $helper->get('user'); $userCulture = $user->getCulture(); $t->is(myDoctrineRecord::getDefaultCulture(), $user->getCulture(), 'default culture is ' . $user->getCulture()); $user->setCulture('en'); $t->is(myDoctrineRecord::getDefaultCulture(), $user->getCulture(), 'default culture is ' . $user->getCulture()); $user->setCulture('es'); $t->is(myDoctrineRecord::getDefaultCulture(), $user->getCulture(), 'default culture is ' . $user->getCulture()); $user->setCulture($userCulture); $t->is(myDoctrineRecord::getDefaultCulture(), $user->getCulture(), 'default culture is ' . $user->getCulture()); $t->diag('Basic record tests'); $layout = dmDb::create('DmLayout', array('name' => dmString::random(), 'css_class' => 'the_class'))->saveGet(); $t->ok($layout instanceof DmLayout, 'call saveGet() returns the record'); $t->is(dmDb::create('DmLayout')->orNull(), null, 'call orNull() on new record returns null'); $t->is($layout->orNull(), $layout, 'call orNull() on existing record returns the record'); $t->diag('Property access tests'); $t->is($layout->get('css_class'), 'the_class', '->get("css_class")'); $t->is($layout->getCssClass(), 'the_class', '->getCssClass()'); $t->is($layout->css_class, 'the_class', '->css_class'); $t->is($layout->cssClass, 'the_class', '->cssClass'); $t->is($layout['cssClass'], 'the_class', '["css_class"]'); $t->ok($layout->set('css_class', 'other_class'), '->set("css_class")'); $t->ok($layout->setCssClass('other_class'), '->setCssClass()'); $t->ok($layout->css_class = 'other_class', '->css_class'); $t->ok($layout->cssClass = 'other_class', '->cssClass'); $layout->delete(); dmDb::table('DmPage')->checkBasicPages();
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'); $form->bind(array('href' => 'bad href'), array()); $t->is($form->isValid(), false, 'The form is not valid');
<?php require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot(); $t = new lime_test(); $user = dmDb::query('DmUser u')->where('u.username = ?', 'admin')->fetchOne(); $t->comment('Signin ' . $user); $helper->get('user')->signin($user); $domain = dmDb::table('DmTestDomain')->create(array('title' => dmString::random()))->saveGet(); $t->is((string) $domain->getCurrentTranslation()->CreatedBy, 'admin'); $t->is((string) $domain->CreatedBy, 'admin');
<?php require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot(); $t = new lime_test(15); $fs = $helper->get('filesystem'); $t->comment($command = 'cd ./'); $t->is($fs->exec($command), true, 'Valid exec returns true'); $t->ok(is_array($fs->getLastExec()), '$fs->getLastExec() returns an array'); $t->is($fs->getLastExec('command'), $command, 'last command is ' . $command); $t->comment($badCommand = 'cd diem-test-' . dmString::random(8)); $t->is($fs->exec($badCommand), false, 'Invalid exec returns false'); $t->ok(is_array($fs->getLastExec()), '$fs->getLastExec() returns an array'); $t->is($fs->getLastExec('command'), $badCommand, 'last command is ' . $badCommand); $t->comment($command = 'echo diem-test'); $t->is($fs->exec($command), true, 'Valid exec returns true'); $t->ok(is_array($fs->getLastExec()), '$fs->getLastExec() returns an array'); $t->is($fs->getLastExec('command'), $command, 'last command is ' . $command); $t->is($helper->fixLinebreaks($fs->getLastExec('output')), 'diem-test' . "\n", 'Output is "' . $fs->getLastExec('output') . '"'); $t->comment('Unix command : ' . ($command = 'whoami')); $t->is($fs->exec($command), $success = '/' === DIRECTORY_SEPARATOR, 'Execution : ' . $success); $t->comment('Test ->getFilesInDir()'); $fs->mirror(dirname(__FILE__), sfConfig::get('sf_cache_dir'), sfFinder::type('file')); mkdir(sfConfig::get('sf_cache_dir') . '/test_dir'); $fullFind = $fs->find('file')->maxdepth(0)->in(sfConfig::get('sf_cache_dir')); $fastFind = $fs->findFilesInDir(sfConfig::get('sf_cache_dir')); $t->ok(count($fullFind) > 50, 'sfFinder finds ' . count($fullFind) . ' files'); $t->ok(in_array($file = sfConfig::get('sf_cache_dir') . '/' . basename(__FILE__), $fullFind), 'sfFinder found ' . $file); $t->is(count($fastFind), count($fullFind), '->findFilesInDir finds ' . count($fullFind) . ' files'); $t->is_deeply($fastFind, $fullFind, '->findFilesInDir() works like sfFinder');
/* * 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'); $t->is(dmDb::table('DmPage')->count(), $nbPage + 2, 'One new page'); $t->is($page->isActive, true, 'The page is active'); $t->is($page->Record, $domain, 'The page record is the domain'); $categ = dmDb::table('DmTestCateg')->create(array('name' => dmString::random(), 'is_active' => false))->saveGet(); $t->is(dmDb::table('DmPage')->count(), $nbPage + 2, 'No new page'); $t->ok(!$categ->getDmPage(), 'Categ has a NO page'); $t->is(dmDb::table('DmPage')->count(), $nbPage + 2, 'No new page'); $t->comment('link the categ to a domain'); $categ->Domains->add($domain); $categ->save(); $t->is(dmDb::table('DmPage')->count(), $nbPage + 2, 'No new page'); $t->ok($page = $categ->getDmPage(), 'Categ has a page'); $t->is(dmDb::table('DmPage')->count(), $nbPage + 3, 'One new page'); $t->is($page->isActive, false, 'The page is not active'); $t->is($page->Record, $categ, 'The page record is the categ');
/** * Signs in the user on the application. * * @param DmUser $user The DmUser id * @param boolean $remember Whether or not to remember the user * @param Doctrine_Connection $con A Doctrine_Connection object */ public function signIn(DmUser $user, $remember = false, $con = null) { // signin $this->setAttribute('user_id', $user->get('id'), 'dmSecurityUser'); $this->setAuthenticated(true); $this->clearCredentials(); $this->addCredentials($user->getAllPermissionNames()); $this->isSuperAdmin = $user->get('is_super_admin'); // save last login dmDb::table('Dmuser')->createQuery()->update('Dmuser')->where('id = ?', $user->get('id'))->set('last_login', "'" . date('Y-m-d H:i:s') . "'")->execute(); $this->user = $user; if ($remember) { try { $expirationAge = $this->getRememberKeyExpirationAge(); // remove old keys Doctrine_Core::getTable('DmRememberKey')->createQuery()->delete()->where('created_at < ?', date('Y-m-d H:i:s', time() - $expirationAge))->execute(); // remove other keys from this user Doctrine_Core::getTable('DmRememberKey')->createQuery()->delete()->where('dm_user_id = ?', $user->getId())->orWhere('ip_address = ?', $_SERVER['REMOTE_ADDR'])->execute(); // generate new keys $key = md5(dmString::random(20)); // save key $rk = new DmRememberKey(); $rk->setRememberKey($key); $rk->setUser($user); $rk->setIpAddress($_SERVER['REMOTE_ADDR']); $rk->save($con); $this->dispatcher->notify(new sfEvent($this, 'user.remember_me', array('remember_key' => $key, 'expiration_age' => $expirationAge))); } catch (Exception $e) { } } $this->dispatcher->notify(new sfEvent($this, 'user.sign_in')); }
$c1PageSlug = 'c1/' . $pageSlug; $c2PageSlug = 'c2/' . $pageSlug; $page->Translation['c1']->name = $c1PageSlug; $page->Translation['c1']->slug = $c1PageSlug; $page->Translation['c2']->name = $c2PageSlug; $page->Translation['c2']->slug = $c2PageSlug; $page->save(); $t->ok($page->hasCurrentTranslation(), 'page has a translation'); $t->is($page->slug, $pageSlug, 'page slug is ' . $pageSlug); $t->diag('Find route for ' . $pageSlug); $route = $routing->find($pageSlug); $t->isa_ok($route, 'dmPageRoute', 'found a dmPageRoute instance for ' . $pageSlug); $t->is($route->getSlug(), $pageSlug, 'route slug is ' . $pageSlug); $t->is($route->getPage(), $page, 'route page is the good page'); $t->is($route->getCulture(), $user->getCulture(), 'route culture is user culture : ' . $route->getCulture()); $nonExistingSlug = dmString::random(); $t->diag('Find route for non existing slug ' . $nonExistingSlug); $route = $routing->find($nonExistingSlug); $t->is($route, false, 'found no route for non existing slug ' . $nonExistingSlug); $t->diag('Switch user to c1 culture'); $user->setCulture('c1'); $t->is($helper->get('service_container')->getParameter('user.culture'), $user->getCulture(), 'service container user.culture synchronized'); $route = $routing->find($pageSlug); $t->isa_ok($route, 'dmPageRoute', 'found a dmPageRoute instance for ' . $pageSlug); $t->is($route->getSlug(), $pageSlug, 'route slug is ' . $pageSlug); $t->is($route->getPage(), $page, 'route page is the good page'); $t->is($route->getCulture(), sfConfig::get('sf_default_culture'), 'route culture is default culture : ' . $route->getCulture()); $route = $routing->find($c1PageSlug); $t->isa_ok($route, 'dmPageRoute', 'found a dmPageRoute instance for ' . $c1PageSlug); $t->is($route->getSlug(), $c1PageSlug, 'route slug is ' . $c1PageSlug); $t->is($route->getPage(), $page, 'route page is the good page');
$i18n = $helper->get('i18n'); /* * configure i18n and add 2 cultures */ $i18n->setCultures(array_merge($i18n->getCultures(), array('c1', 'c2'))); $helper->get('service_container')->mergeParameter('page_i18n_builder.options', array('cultures' => $i18n->getCultures())); $i18nBuilder = $helper->get('page_i18n_builder'); $i18nBuilder->setOption('cultures', $i18n->getCultures()); /* * connect page_i18n_builder and set the new cultures */ if (!$i18nBuilder->isConnected()) { $i18nBuilder->connect(); } $t = new lime_test(2 + 7 * count($i18n->getCultures())); $page = $randomCreatedPage = dmDb::create('DmPage', array('module' => 'test', 'action' => dmString::random(12), 'slug' => dmString::random(12), 'name' => dmString::random(12), 'title' => dmString::random(12), 'h1' => dmString::random(12), 'description' => dmString::random(12), 'keywords' => dmString::random(12))); $page->getNode()->insertAsLastChildOf($root); $t->ok($page->getCurrentTranslation()->exists(), 'The current translation exists'); $page->refreshRelated('Translation'); $pageTranslations = $page->get('Translation'); foreach ($i18n->getCultures() as $culture) { $pageTranslation = $pageTranslations->get($culture); $t->ok($pageTranslation->exists(), sprintf('The %s translation exists', $culture)); foreach (array('slug', 'name', 'title', 'h1', 'description', 'keywords') as $field) { $t->is($pageTranslation->get($field), $page->get($field), sprintf('The %s translated page %s is %s', $culture, $field, $page->get($field))); } } $i18nBuilder->createAllPagesTranslations(); $pages = dmDb::table('DmPage')->createQuery('p')->leftJoin('p.Translation')->fetchRecords(); $nbMissingTranslations = 0; foreach ($pages as $page) {
<?php use_stylesheet('lib.markitup'); use_stylesheet('lib.markitupSet'); use_stylesheet('lib.ui-resizable'); use_javascript('lib.ui-resizable'); use_javascript('lib.markitup'); use_javascript('lib.markitupSet'); use_javascript('core.markdown'); $uniqueCode = dmString::random(); $attributes = array_merge($attributes instanceof sfOutputEscaper ? $attributes->getRawValue() : $attributes, array('class' => 'dm_markdown ' . json_encode(array('code' => $uniqueCode)))); ?> <div class="<?php echo $class; $form[$name]->hasError() and print ' errors'; ?> "> <?php if ($form[$name]->hasError()) { ?> <div class="error"> <div class="s16 s16_error"><?php echo __((string) $form[$name]->getError()); ?> </div> </div> <?php } ?> <div class="sf_admin_form_row_inner clearfix">
protected function getRandomLink() { if (mt_rand(0, 1)) { return sprintf('http://' . dmString::random() . '.random.com'); } if (!class_exists('DmPageTranslation', false)) { new DmPage(); } $page = dmDb::query('DmPageTranslation p')->select('p.id, p.name, p.lang, RANDOM() AS rand')->where('p.lang = ?', dmDoctrineRecord::getDefaultCulture())->orderBy('rand')->limit(1)->fetchPDO(); return sprintf('page:%d %s', $page[0][0], $page[0][1]); }
<?php require_once realpath(dirname(__FILE__) . '/../../..') . '/unit/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot(); $t = new lime_test(20); $t->comment('Testing DmTestPost'); dmDb::create('DmTestCateg', array('name' => dmString::random()))->save(); $helper->loremizeModule('dmTestPost', 10, $t); foreach (dmDb::query('DmTestPost p')->whereIsActive(true, 'DmTestPost')->fetchRecords() as $post) { $t->ok($post->isActive, 'post ' . $post . ' is active'); } foreach (dmDb::query('DmTestPost p')->whereIsActive(false, 'DmTestPost')->fetchRecords() as $post) { $t->ok(!$post->isActive, 'post ' . $post . ' is NOT active'); }
<?php require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot('front'); $t = new lime_test(76); $pageTable = dmDb::table('DmPage'); $root = $pageTable->getTree()->fetchRoot(); $testModule = dmString::random(); $pages = array($root); for ($it = 1; $it <= 2; $it++) { $pages[] = $p = dmDb::table('DmPage')->create(array('module' => $testModule, 'action' => 'test' . $it, 'name' => dmString::random(), 'slug' => dmString::random())); $p->Node->insertAsLastChildOf($pages[$it - 1]); $pages[$it - 1]->refresh(); $p->refresh(); $t->ok($p->exists(), $p . ' exists'); $t->is($p->nodeParentId, (string) $pages[$it - 1]->id, $p . ' is child of ' . $pages[$it - 1]); } dm::loadHelpers(array('DmFront')); foreach ($pages as $index => $page) { $helper->get('context')->setPage($page); $t->comment('Testing ->isSource for ' . $page); foreach ($pages as $_page) { $ok = $page === $_page; $t->is($page->isSource($_page), $ok, '$page->isSource($page) ' . ($ok ? 'TRUE' : 'FALSE')); $t->is($page->isSource("page:" . $_page->id), $ok, '$page->isSource("page:".$page->id) ' . ($ok ? 'TRUE' : 'FALSE')); $t->is($page->isSource($_page->module . "/" . $_page->action), $ok, '$page->isSource($page->module."/".$page->action) ' . ($ok ? 'TRUE' : 'FALSE')); $t->is(dm_current($_page), $ok, 'dm_current($page) ' . ($ok ? 'TRUE' : 'FALSE')); } if ($index) { $t->comment('Testing ->isDescendantOfSource for ' . $page);
require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot('front'); $t = new lime_test(24); dmDb::table('DmPage')->checkBasicPages(); // create form require_once dmOs::join(sfConfig::get('dm_front_dir'), 'modules/dmPage/lib/DmPageFrontNewForm.php'); $form = new DmPageFrontNewForm(); $form->removeCsrfProtection(); // create layout $layout = dmDb::create('DmLayout', array('name' => dmString::random()))->saveGet(); // create parent page $parentPage = dmDb::table('DmPage')->find(array_rand($form->getWidgetSchema()->offsetGet('parent_id')->getChoices())); $t->comment('Choosed parent : ' . $parentPage); // create name and slug $pageName = $pageSlug = dmString::random(); $form->bind(array('name' => $pageName, 'slug' => $pageSlug, 'dm_layout_id' => $layout->id, 'parent_id' => $parentPage->id)); try { $page = $form->save(); $t->pass('The page has been saved'); } catch (Exception $e) { $t->fail('Page creation failed with exception ' . $e->getMessage()); } // get data from db $page->refresh(true); $t->isa_ok($page, 'DmPage', 'The page is an instance of DmPage'); $t->ok($page->hasCurrentTranslation(), 'The page has a current translation'); $t->is($page->name, $pageName, 'The page name is ' . $pageName); $t->is($page->title, $pageName, 'The page title is ' . $pageName); $t->is($page->slug, $pageSlug, 'The page slug is ' . $pageSlug); $t->is($page->module, $parentPage->module, 'The page module is the parent page module : ' . $parentPage->module);
$helper->checkTreeIntegrity($t); $helper->testFolderCorrelations($t); $parent = $folderTable->createQuery('f')->select('f.*, RANDOM() as rand')->orderBy('rand')->fetchOne(); require_once dmOs::join(sfConfig::get('dm_admin_dir'), 'modules/dmMediaLibrary/lib/DmAdminNewMediaFolderForm.php'); $form = new DmAdminNewMediaFolderForm(); $form->setDefault('parent_id', $parent->id); $values = array('parent_id' => $parent->id); $t->comment('Submit empty form'); $form->bind($values); $t->is($form->isValid(), false, 'The form is not valid'); $t->comment('Submit bad dir name'); $values['name'] = '/'; $form->bind($values); $t->is($form->isValid(), false, 'The form is not valid'); $t->comment('Submit good dir name'); $values['name'] = $name = dmString::random(); $form->bind($values); $t->is($form->isValid(), true, 'The form is valid'); if (!$form->isValid()) { $t->comment($form->getErrorSchema()->getMessage()); } $t->is($form->getValue('name'), $name, 'The name is ' . $name); $t->is($form->getValue('rel_path'), $relPath = trim($parent->relPath . '/' . $name, '/'), 'The rel path is ' . $relPath); $t->is($form->getObject()->exists(), false, 'The folder does not exist'); $folder = $form->updateObject()->saveGet(); $t->is($folder->exists(), true, 'The folder not exists'); $helper->checkTreeIntegrity($t); $helper->testFolderCorrelations($t); $t->comment('Try to create a folder with the same name'); $form = new DmAdminNewMediaFolderForm(); $form->setDefault('parent_id', $parent->id);
<?php require_once dirname(__FILE__) . '/helper/dmUnitTestHelper.php'; $helper = new dmUnitTestHelper(); $helper->boot(); $t = new lime_test(5); $cliFile = 'cache/thread_launcher_test.php'; $helper->get('service_container')->mergeParameter('thread_launcher.options', array('cli_file' => $cliFile)); $threadLauncher = $helper->get('thread_launcher'); $t->is($threadLauncher->getCliFileFullPath(), dmProject::rootify($cliFile), 'cli file is ' . dmProject::rootify($cliFile)); $t->ok(file_exists(dmProject::rootify($cliFile)), 'cli file has been created in ' . $cliFile); $threadClass = 'dmThreadTest'; $proofFileName = dmString::random(); try { $threadLauncher->execute(dmString::random()); $t->fail('thread launcher throws an exception when thread class does not exists'); } catch (dmException $e) { $t->pass('thread launcher throws an exception when thread class does not exists'); } $t->diag($threadLauncher->getCommand($threadClass, array('proof_file_name' => $proofFileName))); try { $threadLauncher->execute($threadClass, array('proof_file_name' => $proofFileName)); $t->pass('thread launcher executed correctly the thread ' . $threadClass); } catch (dmException $e) { $t->fail('thread launcher executed correctly the thread ' . $threadClass); $t->diag('got : ' . $threadLauncher->getLastExec('output')); } $t->ok(file_exists(dmOs::join(sfConfig::get('sf_cache_dir'), $proofFileName)), 'The thread did its job successfully');
$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'); $t->isa_ok($userRecord, 'DmUser', 'User is a DmUser'); $t->isnt($userRecord->password, 'changeme', 'Password has been encrypted'); $userRecord->delete(); $t->ok(!$userRecord->exists(), 'User has been deleted');
$id = $post->id; $post->free(true); unset($post); $post = $table->findOne($id); $helper->get('user')->setCulture('c1'); $post->title = 'c1 title'; $post->save(); $t->is($post->version, 1, 'saved record, version is 1'); $t->is($post->title, 'c1 title', 'saved record, title is c1 title'); $t->comment('Testing DmTestComment'); $model = 'DmTestComment'; $table = dmDb::table($model); $comment = $table->create(array('post_id' => $post->id)); $t->ok($table->isVersionable(), $model . ' is versionable'); $t->is($comment->version, 0, 'new record, version is 0'); $comment->author = dmString::random(); $comment->author = 'jefferson'; $comment->save(); $t->is($comment->version, 1, 'saved record, version is 1'); $t->is($comment->author, 'jefferson', 'saved record, author is jefferson'); $comment->author = 'airplane'; $comment->save(); $t->is($comment->version, 2, 'saved record, version is 2'); $t->is($comment->author, 'airplane', 'saved record, author is airplane'); $comment->revert(1); $t->is($comment->version, 1, 'reverted but not saved, record version is 1'); $t->is($comment->author, 'jefferson', 'reverted but not saved, record author is jefferson'); $comment->save(); $t->is($comment->version, 3, 'reverted and saved, record version is 3'); $t->is($comment->author, 'jefferson', 'reverted and saved, record author is jefferson'); $t->is(count($comment->Version), 3, 'record has 3 versions');
<?php require_once realpath(dirname(__FILE__) . '/../../../..') . '/functional/helper/dmFunctionalTestHelper.php'; $helper = new dmFunctionalTestHelper(); $helper->boot('admin'); $browser = $helper->getBrowser(); $helper->logout(); $browser->info('Posts list')->get('/content?skip_browser_detection=1')->checks(array('module_action' => 'dmAdmin/moduleType', 'code' => 401))->has('input.submit'); $helper->login(); $browser->info('Posts list')->get('/content/blog/dm-test-posts/index')->checks(array('module_action' => 'dmTestPost/index'))->has('h1', 'Dm test posts')->has('#breadCrumb')->has('#dm_module_search_input')->has('.sf_admin_list_td_title a.link')->has('.dm_pagination_status', '1 - 10 of 20'); $browser->info('Loremize 20 posts')->click('.dm_loremize a:contains(20)')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'loremize')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Dm test posts')->checkElement('.dm_pagination_status', '1 - 10 of 20')->checkElement('.flashs.infos', 'Successfully loremized')->end(); $browser->info('Sort by created_at')->click('.sf_admin_list_th_created_at a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'created_at')->isParameter('sort_type', 'asc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_created_at a.s16_sort_asc', 'Created at')->end()->click('.sf_admin_list_th_created_at a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'created_at')->isParameter('sort_type', 'desc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_created_at a.s16_sort_desc', 'Created at')->end(); $browser->info('Sort by title ( i18n field )')->click('.sf_admin_list_th_title a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'title')->isParameter('sort_type', 'asc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_title a.s16_sort_asc', 'Title')->end()->click('.sf_admin_list_th_title a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'title')->isParameter('sort_type', 'desc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_title a.s16_sort_desc', 'Title')->end(); $browser->info('Sort by categ ( foreign + i18n field )')->click('.sf_admin_list_th_categ_id a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'categ_id')->isParameter('sort_type', 'asc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_categ_id a.s16_sort_asc', 'Categ')->end()->click('.sf_admin_list_th_categ_id a')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('sort', 'categ_id')->isParameter('sort_type', 'desc')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_th_categ_id a.s16_sort_desc', 'Categ')->end(); $browser->info('Sort interface')->click('.sf_admin_action a.dm_sort')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'sortTable')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Sort table')->checkElement('ol.objects li.object:first label', dmDb::query('DmTestPost p')->whereIsActive(true, 'DmTestPost')->orderBy('p.position ASC')->fetchOne()->title)->end()->click('input[type="submit"]')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'sortTable')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'sortTable')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Sort table')->checkElement('.flashs.infos', 'The items have been sorted successfully')->end()->click('« Back to list')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Dm test posts')->end(); $browser->info('Test batch actions')->info('Delete')->select('ids[]')->click('input[name="batchDelete"]')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'batch')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.dm_pagination_status', '1 - 10 of 19')->checkElement('.flashs.infos', 'The selected items have been deleted successfully.')->end()->info('Activate')->select('ids[]')->click('input[name="batchActivate"]')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'batch')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_td_is_active:first .s16_tick')->checkElement('.flashs.infos', 'The selected items have been modified successfully')->end()->info('Deactivate')->select('ids[]')->click('input[name="batchDeactivate"]')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'batch')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.sf_admin_list_td_is_active:first .s16_cross')->checkElement('.flashs.infos', 'The selected items have been modified successfully')->end(); $browser->info('Create new post')->click('a.sf_admin_action_new')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'new')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'New')->end()->info('Submit empty')->click('Save')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'create')->isMethod('post')->end()->with('response')->begin()->isStatusCode(200)->end()->with('form')->begin()->hasErrors(2)->isError('title', 'required')->isError('date', 'required')->end()->info('Submit with bad user_id, categ_id and date')->click('Save', array('dm_test_post_admin_form' => array('title' => dmString::random(), 'user_id' => 9999, 'categ_id' => 9999, 'date' => 'bad date')))->with('form')->begin()->hasErrors(3)->isError('user_id', 'invalid')->isError('categ_id', 'invalid')->isError('date', 'invalid')->end()->info('Submit valid')->click('Save', array('dm_test_post_admin_form' => array('title' => $postTitle = dmString::random(16), 'user_id' => dmDb::table('DmUser')->findOne()->id, 'categ_id' => dmDb::table('DmTestCateg')->findOne()->id, 'date' => '01/13/2010', 'excerpt' => 'resume 1')))->with('form')->begin()->hasErrors(0)->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'edit')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', $postTitle)->checkElement('#dm_test_post_admin_form_excerpt', 'resume 1')->end()->info('Update post')->click('Save', array('dm_test_post_admin_form' => array('title' => $postTitle, 'user_id' => dmDb::table('DmUser')->findOne()->id, 'categ_id' => dmDb::table('DmTestCateg')->findOne()->id, 'date' => '01/13/2012', 'excerpt' => 'resume 2')))->with('form')->begin()->hasErrors(0)->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'edit')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', $postTitle)->checkElement('#dm_test_post_admin_form_excerpt', 'resume 2')->end(); $browser->info('Post history')->click('History')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'history')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Revision history')->end()->info('Revert to version 1')->click('Revert to revision 1')->with('request')->begin()->isParameter('module', 'dmAdminGenerator')->isParameter('action', 'revert')->isParameter('model', 'DmTestPost')->isParameter('version', 1)->isMethod('get')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'history')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Revision history')->end()->info('Return to edit page')->click('#breadCrumb a:last')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'edit')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', $postTitle)->checkElement('#dm_test_post_admin_form_excerpt', 'resume 1')->end()->info('Return to list page')->click('Back to list')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->end()->with('response')->begin()->isStatusCode(200)->checkElement('h1', 'Dm test posts')->checkElement('.dm_pagination_status', '1 - 10 of 20')->end(); $browser->info('Search in posts')->click('.dm_module_search input[type="submit"]', array('search' => $postTitle))->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('search', $postTitle)->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.dm_cancel_search')->checkElement('.dm_pagination_status', '1 - 1 of 1')->end()->info('Cancel search')->click('.dm_cancel_search')->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isParameter('search', null)->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.dm_pagination_status', '1 - 10 of 20')->end(); $browser->info('Delete post')->click('.sf_admin_list_td_title:first a')->click('Delete', array(), array('method' => 'post'))->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'delete')->isMethod('post')->end()->with('response')->begin()->isRedirected()->end()->followRedirect()->with('request')->begin()->isParameter('module', 'dmTestPost')->isParameter('action', 'index')->isMethod('get')->end()->with('response')->begin()->isStatusCode(200)->checkElement('.dm_pagination_status', '1 - 10 of 19')->end();
$t->isa_ok($deepMedia, 'DmMedia', 'deep media found in db'); } catch (Exception $e) { $t->fail($e->getMessage()); } $folderFullPath = $folder->fullPath; $folder->getNode()->delete(); $t->ok(!$folder->exists(), 'folder ' . $folder . ' has been deleted in database'); $t->ok(!is_dir($folderFullPath), 'folder ' . $folderFullPath . ' has been deleted in filesystem'); $t->ok(!$folderTable->findOneByRelPath($folder->relPath), 'folder ' . $folder . ' can not be found anymore in db'); $t->diag('Sync root'); $root->sync(); $helper->checkTreeIntegrity($t); $helper->testFolderCorrelations($t); $t->diag('Copy heavy folders structure into folder'); $sourcePath = dmOs::join(dm::getDir(), 'dmCorePlugin/lib/model/doctrine'); $destRelPath = 'test_lib_model_' . dmString::random(8); $destFullPath = dmOs::join($root->fullPath, $destRelPath); try { $helper->get('filesystem')->mirror($sourcePath, $destFullPath, sfFinder::type('all')); $t->pass('Copy completed'); } catch (Exception $e) { $t->fail('Copy failed : ' . $e->getMessage()); } $t->ok(file_exists(dmOs::join($destFullPath, 'PluginDmMediaTable.class.php')), dmProject::unRootify(dmOs::join($destFullPath, 'PluginDmMediaTable.class.php')) . ' exists'); $t->diag('Sync root'); $root->sync(); $helper->checkTreeIntegrity($t); $helper->testFolderCorrelations($t); $folder = $folderTable->findOneByRelPath($destRelPath); $folderFullPath = $folder->fullPath; $t->is($folderFullPath, dmOs::join($root->fullPath, $destRelPath));
public function renderWidget(array $widget, $executeWidgetAction = false) { if ($executeWidgetAction) { $this->executeWidgetAction($widget); } list($widgetWrapClass, $widgetInnerClass) = $this->getWidgetContainerClasses($widget); /* * Open widget wrap with wrapped user's classes */ $renderer = $this->serviceContainer->setParameter('widget_renderer.widget', $widget)->getService('widget_renderer'); $widgetHTML = $this->renderWidgetInner($widget, $renderer); $idTag = ''; if ($widget['id']) { $idTag = 'id="dm_widget_' . $widget['id'] . '"'; } $html = '<div ' . $idTag . ' class="dm_widget_' . (isset($widget['id']) ? $widget['id'] : dmString::random(15)) . ' ' . $widgetWrapClass . '">'; /* * Open widget inner with user's classes */ $html .= '<div class="' . ($renderer->isWidgetCacheable() ? 'dm_widget_cacheable ' : '') . $widgetInnerClass . '">'; /* * get widget inner content */ $html .= $widgetHTML; /* * Close widget inner */ $html .= '</div>'; /* * Close widget wrap */ $html .= '</div>'; return $html; }
$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'; $errorLink = (string) _link($badSource); $t->is($errorLink, '<a class="link">' . $badSource . ' is not a valid link resource</a>', $errorLink); $page->Node->delete(); $t->is((string) _link('mailto:test@mail.com')->text('email'), $html = '<a class="link" href="mailto:test@mail.com">email</a>', 'mailto: ' . $html); $t->comment('Nofollow attribute'); $expected = '<a class="link" href="http://site.com" nofollow="1">Site</a>'; $t->is((string) £link('http://site.com')->text('Site')->set('nofollow', true), $expected, '->set("nofollow", true)');
$mediaFileName = 'test_image_' . 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'); $mediaLink = sprintf('<a class="link" href="%s">%s</a>', $helper->get('request')->getAbsoluteUrlRoot() . '/' . $media->webPath, $media->file); $t->is((string) £link($media), $mediaLink, '$media -> ' . $mediaLink); $t->is((string) £link('media:' . $media->id), $mediaLink, 'media:' . $media->id . ' -> ' . $mediaLink); $t->is((string) £link('/' . $media->webPath)->text($media->file), $expected = str_replace($helper->get('request')->getAbsoluteUrlRoot(), '', $mediaLink), $media->webPath . ' -> ' . $expected); sfConfig::set('sf_debug', true); $badSource = dmString::random() . '/' . dmString::random(); $errorText = '[EXCEPTION] ' . $badSource . ' is not a valid link resource'; $expr = '_^<a class="link" href="\\?dm\\_debug=1" title="[^"]+">' . preg_quote($errorText, '_') . '</a>$_'; $errorLink = (string) £link($badSource); $t->like($errorLink, $expr, $errorLink); sfConfig::set('sf_debug', false); $badSource = dmString::random() . '/' . dmString::random(); $errorLink = '<a class="link"></a>'; $t->is($errorLink, $errorLink, $errorLink); $media->delete(); $t->is((string) £link('mailto:test@mail.com')->text('email'), $html = '<a class="link" href="mailto:test@mail.com">email</a>', 'mailto: ' . $html); $t->comment('Test use_beaf'); $helper->getServiceContainer()->mergeParameter('link_tag_uri.options', array('use_beaf' => true)); $expected = sprintf('<a class="link beafh" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>', 'http://diem-project.org', 'http://diem-project.org'); $t->is((string) £link('http://diem-project.org')->set('.beafh'), $expected, 'beafh link is ' . $expected); $expected = sprintf('<a class="link beafv" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>', 'http://diem-project.org', 'http://diem-project.org'); $t->is((string) £link('http://diem-project.org')->set('.beafv'), $expected, 'beafh link is ' . $expected); $expected = sprintf('<a class="link beafh myclass" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>', 'http://diem-project.org', 'http://diem-project.org'); $t->is((string) £link('http://diem-project.org')->set('.beafh.myclass'), $expected, 'beafh link is ' . $expected); $expected = sprintf('<a class="link beafv myclass" href="%s"><span class="beafore"></span><span class="beafin">%s</span><span class="beafter"></span></span></a>', 'http://diem-project.org', 'http://diem-project.org'); $t->is((string) £link('http://diem-project.org')->set('.beafv.myclass'), $expected, 'beafh link is ' . $expected); $expected = sprintf('<a class="link" href="%s">%s</a>', $helper->getContext()->getRequest()->getPathInfoPrefix() . '/simple-url', 'simple route url');
$form->bind(array('id' => $post->id, 'title' => $post->title, 'categ_id' => $categ->id, 'user_id' => $user->id, 'date' => time(), 'image_id_form' => array('id' => $post->Image->id, 'dm_media_folder_id' => $post->getDmMediaFolder()->get('id'))), array('image_id_form' => array('file' => array('name' => $media2FileName, 'type' => $helper->get('mime_type_resolver')->getByFilename($media2FullPath), 'tmp_name' => $media2FullPath, 'error' => 0, 'size' => filesize($media2FullPath))))); $t->is($form->isValid(), true, 'Form with binded title and new image is valid'); $post = $form->save(); $t->is($postId, $post->id, 'The same post has been updated'); $t->is($post->Image->exists(), true, 'The post has an existing media'); $media2 = $post->Image; $media2Size = $media2->size; $t->is($media2->file, $media2FileName, 'Post media filename is ' . $media2FileName); $t->is($media2->size, filesize($media2FullPath), 'Post media size is ' . filesize($media2FullPath)); $t->is($media1->exists(), true, 'The first media still exists'); $t->isnt($media1->id, $media2->id, 'The new media is another one'); $t->comment('Upload a new media with the same name'); $form = new DmTestPostForm($post); $media3Source = dmOs::join(sfConfig::get('sf_upload_dir'), 'images/default.jpg'); $media3FileName = $media2FileName; $media3FullPath = sys_get_temp_dir() . '/' . dmString::random() . $media3FileName; copy($media3Source, $media3FullPath); $form->bind(array('id' => $post->id, 'title' => $post->title, 'categ_id' => $categ->id, 'user_id' => $user->id, 'date' => time(), 'image_id_form' => array('id' => $post->Image->id, 'dm_media_folder_id' => $post->getDmMediaFolder()->get('id'))), array('image_id_form' => array('file' => array('name' => $media3FileName, 'type' => $helper->get('mime_type_resolver')->getByFilename($media3FullPath), 'tmp_name' => $media3FullPath, 'error' => 0, 'size' => filesize($media3FullPath))))); $t->isnt($media2->size, filesize($media3FullPath), 'The uploaded media file has changed'); $t->comment('The uploaded file size is ' . filesize($media3FullPath)); $t->is($form->isValid(), true, 'Form with binded title and new image with same name is valid'); $post = $form->save(); $t->is($postId, $post->id, 'The same post has been updated'); $t->is($post->Image->exists(), true, 'The post has an existing media'); $media3 = $post->Image; $t->is($media3->file, $expected = str_replace('.jpg', '_1.jpg', $media3FileName), 'Post media filename is ' . $expected); $t->is($media3->size, filesize($media3FullPath), 'Post media size is ' . filesize($media3FullPath)); $t->isnt($media2->id, $media3->id, 'The new media is NOT the same'); $t->isnt($media2->file, $media3->file, 'The media filename is NOT the same'); $t->isnt($media2Size, $media3->size, 'The media file has changed'); /*